XGBoost란


XGBoost(eXtra Gradient Boost)는 트리 기반의 앙상블 학습에서 가장 각광받고 있는 알고리즘 중 하나이다. 캐글 경연 대회에서 상위를 차지한 많은 데이터 사이언티스트가 XGBoost를 이용하면서 널리 알려졌다. 압도적 수치의 차이는 아니지만, 분류에 있어 일반적으로 다른 머신러닝보다 뛰어난 예측 성능을 나타낸다.

 

XGBoost는 GBM에 기반하고 있지만, GBM의 단점인 느린 수행 시간 및 과적합 규제(Regularization) 부재 등의 문제를 해결해서 매우 각광을 받고 있다. 특히 XGBoost는 병렬 CPU 환경에서 병렬 학습이 가능해 기존 GBM보다 빠르게 학습을 완료할 수 있다.

 

XGBoost 장점


  • 일반적으로 분류와 회귀 영역에서 뛰어난 예측 성능을 발휘

 

  • 일반적인 GBM은 순차적으로 Weak learner가 가중치를 증감하는 방법으로 학습키 때문에 전반적으로 속도가 느림. 하지만 XGBoost는 병렬 수행 및 다양한 기능으로 GBM에 비해 빠른 수행성능 보장

 

  • 표준 GBM의 경우 과적합 규제 기능이 없으나 XGBoost는 자체 과적합 규제 기능으로 과적합에 좀 더 강한 내구성을 가질 수 있음

 

  • 다른 GBM과 마찬가지로 max_depth 파라미터로 분할 깊이를 조정하기도 하지만, tree pruning으로 더 이상 긍정 이득이 없는 분할을 가지치기 해서 분할 수를 더 줄이는 추가적인 장점이 있음

 

  • 반복 수행 시마다 내부적으로 학습 데이터 셋과 평가 데이터셋에 대한 교차 검증을 수행해 최적화된 반복 수행 횟수를 가질 수 있고, 최적화 되면 반복을 중간에 멈출 수 있는 조기 중단 기능이 있음.

 

XGboost는 자체적으로 교차 검증, 성능 평가, 피처 중요도 등의 시각화 기능을 가지고 있음

 

DMatrix


파이썬 래퍼 XGBoost는 사이킷런과 차이가 여러 가지 있지만, 먼저 눈에 띄는 차이는 학습용과 테스트용 데이터 셋을 위해 별도의 객체인 DMatrix를 생성한다는 점이다. DMatrix는 주로 넘파이 입력 파라미터를 받아서 만들어지는 XGBoost만의 전용 데이터셋이다. DMatrix의 주요 입력 파라미터는 data와 label이다. 

data는 피처 데이터 셋이며, label은 분류의 경우에는 레이블 데이터 셋, 회귀의 경우는 숫자형인 종속값 데이터 셋이다.

 

xgboost 모듈을 사용해 학습을 수행하기 전에 하이퍼 파라미터를 설정하며 하이퍼 파라미터의 경우 주로 딕셔너리 형태로 입력한다. 또한 xgboost 모듈의 경우 train() 함수에 파라미터로 전달하며 사이킷런에서는 Estimator의 생성자를 하이퍼 파라미터로 전달하는 데 반해 차이가 있다.

 

 

Reference


[1] 파이썬 머신러닝 완벽가이드

+ Recent posts