[리뷰] XGBoost와 사이킷런을 활용한 그레이디언트 부스팅
in Review on Review, Book, 그레이디언트, 부스팅, 배깅, Xgboost, 하이퍼파라미터, Ml, 머신러닝, 데이터, 분석, 캐글, 특성공학
한빛미디어
출판사의"XGBoost와 사이킷런을 활용한 그레이디언트 부스팅(코리 웨이드 저/박해선 역)"
를 읽고 작성한 리뷰입니다.
다양하게 주어진 데이터 예제 덕분에 XGBoost 알고리즘의 활용도를 깊이있게 학습할 수 있도록 구성된 책으로 캐글 데이터를 활용하고 있어 추후 학습 연장선상에 캐글을 활용할 수 있도록 안배된 점이 특징이다.
XGBoost 알고리즘을 다양한 데이터
별로 활용할 수 있게 구성된 점이 장점이며 특히 빠르게
알고리즘의 핵심을 익힐 수 있게 구성된 점이 장점인 책이다.
특히 캐글
경진대회에서 주로 다루는 데이터 셋들이 예제로 다뤄지고 있기에 실전에 가까운 데이터와 XGBoost 알고리즘의 시너지를 내는 방법을 쉽게 익힐 수 있으며 이 책에서 다루는 기본 과정을 충실히 익히고 나면 차후 보다 난이도 있는 캐글 경진대회를 스스로 학습해보며 XGBoost의 활용 능력을 크게 키울 수 있다.
파트1에서는 XGBoost의 가장 기본적인 사용법
을 빠르게 익힐 수 있다. XGBoost의 특징이나 활용법을 중심으로 다루고 있으면서도 데이터 분석에 자주 활용되는 널리 알려진 다른 유명 알고리즘
즉, 결정트리, 랜덤 포레스트, 배깅, 부스팅, 그레이디언트 부스팅들의 특징을 같이 살펴본다.
각 분석 알고리즘의 원리가 무엇인지 간단한 수식으로 정리해보고 예제를 구현해 나가며 각 알고리즘의 장, 단점
이 무엇인지 파악할 수 있음은 물론 각 알고리즘의 단점을 보완
하기 위해 등장한 알고리즘이 무엇인지 발전 과정을 살피며 종국에 등장한 XGBoost가 왜 좋은 성능을 발휘하는지 왜 활용해야 하는지 근본적인 이해도를 높혀주는 구성이 마음에 들었다.
파트2에서는 본격적으로 XGBoost
를 다룬다. 알고리즘의 상세구조 및 특징, 수식, 하이퍼파라미터의 종류 및 활용 방법들을 심도 있게 다루고 있으며 특히 7장의 예제는 가장 핵심이 될만한 예제로 XGBoost를 충분히 학습해볼 수 있는 기회를 얻을 수 있어 반드시 익히고 실습해 볼 것을 권하고 싶다.
파트3는 XGBoost에서 활용하는 기본 학습기
에 대해 보다 심도 있게 다루며 그 활용도를 극대화할 수 있는 방법을 얻을 수 있다. 앞 장에서 그레이디언트 부스팅 트리와 같은 가장 기본적인 학습기만을 다뤄왔다면 본 파트에서는 주어진 데이터의 특성을 파악해보고 선형, 다트, 랜덤포레스트 등 다양한 기본 학습기를 활용하며 XGBoost의 확장능력을 체험할 수 있도록 구성되어 있다.
뿐만 아니라 차후 캐글의 심도있는 경진대회 데이터셋으로 스스로 학습 능력을 높혀나갈 수 있게 끔 평균 인코딩, 상관관계 낮은 앙상블 만들기, 베이스 모델의 예측을 입력으로 활용하는 스태킹 등의 기법을 활용할 기회가 주어진다.
이는 캐글마스터들이 공개한 TIP
이기도 하기에 실무에서도 높은 예측력을 가진 모델을 만드는 데 많은 도움이 될 수 있을거라 생각한다.또한, 모델을 배포
하는 방법을 알려주고 있어 서빙이나 제품화에도 도움을 받을 수 있을 듯 하다.
한국어판에만 공개된 부록은 여느 장 못지 않게 소중한 내용이 담겨있다. CatBoost, LightGBM
과 같은 XGBoost와 비슷한 성능을 내며 널리 활용되는 경쟁 알고리즘들도 소개되어 있다.
특히 CatBoost는 범주형 특성 데이터에 대한 인코딩을 자동으로 처리해주기에 처음 접했을 때 너무 편리하다 생각했는데 단 몇 페이지로 본 알고리즘의 핵심과 활용방법을 간결히 정리하고 있어 빠르게 익히는데 큰 도움이 된다.
XGBoost와 활용법이 상당히 유사하기 때문에 저자가 본 도서를 통해 알려주는 기본기에 충실할 수 있다면 부록만으로도 쉽게 유사한 다른 알고리즘을 활용할 수 있을 것이다. 적은 시간을 투자하여 유사 알고리즘을 활용할 수 있도록 구성된 점이 크게 매력적인 부분으로 느껴졌다.
그 외에도 전반적으로 힉스보손입자, 외계 행성 찾기 등 재미있는 캐글 데이터셋
을 즐겨볼 수 있는 기회가 주어짐과 동시에 실습 예제가 풍부하여 흥미를 가지고 학습할 수 있다는 점이 특징이다.
XGBoost를 구현 시 고유의 방식이 있는가 하면 SKlearn API 방식도 존재하는데 두가지 방식
이 존재하여 초보자는 헷갈릴 수 있는 요소가 된다. 하지만 본 도서에서 두가지 방식을 꼼꼼하게 설명하고 있어 XGGBoost를 활용하는데 발생할 수 있는 혼동을 줄여준다는 점도 장점이라 생각했다.
물론 아쉬운 점도 몇가지 존재한다. 구체적으로 데이터의 구조에 따리 모델을 다양하게 설계하는데 약간 부족함이 있지 않나 싶다. 예를 들면 더미 데이터를 독립변수로 입력받아 종속변수를 분류하는 예제는 소개되어있지 않다.
또한, 통계적 지식을 깊숙하게 다루진 않고 있어 내부의 깊이있는 이해 혹은 데이터 분석 자체의 능력을 키우기 위해 통계와 관련된 별도의 학습이 필요할 것이다. 7장에 불균형 데이터셋을 위한 F1 스코어나 재현도의 기본을 설명하는 수준 정도는 잘 정리하고 있으나, 독립변수 간 종속성을 파악하는 등 일반적인 데이터 분석에 활용되는 기본기들을 학습하진 않는다.
8장과 같은 경우도 gbtree, dart, gblinear, 랜덤포레스트 등의 기본 학습기별 하이퍼파라미터 튜닝 등 활용 방법을 배우지만 어떤 데이터 셋이 주어졌을 때, 어떤 모델을 활용할 때 어떤 기본 학습기를 활용하는것이 유리한지와 같은 고수의 경험이나 모델 설계에 관한 부분이 조금 더 자세히 언급되었다면 XGBoost로 어지간한 데이터 분석은 거뜬히 해낼 수 있는 완벽한 구성이 되지 않았을까 약간의 아쉬움이 남는다.
데이터 과학의 영역을 일반적으로 흔히 말하는 업무 도메인, IT, 통계 능력의 융합이라고 본다면 통계에 능숙하나 IT 활용력이 떨어지는
독자에게 제일 적합한 책이라는 생각이 든다. 매우 빠르게 XGBoost 알고리즘을 활용하고 API를 자유자재로 다룰 수 있을 것이다.
또한, 데이터 분석의 초보자가 빠르게 앙상블의 생태계의 개괄을 이해하거나 XGBoost의 활용력 및 리터러시를 빠르게 키우는 것이 목적이라면 이 책은 주어진 시간 내 가장 큰 학습 효과를 안겨줄 수 있는 책이 될 것이라 생각한다.