XGBoost 이해하기

데이터 분석/[Python] 머신러닝

XGBoost 이해하기

INCHELIN 2022. 1. 5. 17:00
728x90

XGBoost란?

  • eXtra Gradient Boost의 약자
  • 트리 기반의 앙상블 학습에서 각광받고 있는 알고리즘 중 하나
  • CPU 환경에서 병렬 학습이 가능해 GBM보다 빠름
  • 분류와 회귀 모두 가능
  • 파이썬 패키지명 "xgboost"

 

XGBoost 장점

  • 뛰어난 예측 성능
  • GBM 대비 빠른 수행 속도(대표적으로 조기 중단, Early Stopping 기능이 있음)
  •  
  • 과적합 규제(Regularization)
  • 자체적으로 교차 검증, 성능 평가, 피쳐 중요도 등의 시각화 기능이 있음

XGBoost 주요 하이퍼 파라미터 (사이킷런 x)

  • eta [default=0.3, alias: learning_rate] : 학습률
  • num_boost_rounds : n_estimators와 같은 파라미터
  • min_child_weight[default=1] : 클수록 분할을 자제, 과적합 조절하기 위함
  • gamma [default=0, alias: min_split_loss] : 클수록 과적합 감소 효과가 있음
  • max_depth[default=6] : 트리기반 알고리즘의 max_depth과 같음
  • sub_sample[default=1] : subsample과 동일
  • colsample_bytree[default=1] : max_features와 유사, 피처가 많은 경우 과적합을 조정하는 데 사용
  • lambda[default=1, alias: reg_lambda] : L2 규제 적용 값. 피처 개수가 많을 경우 적용을 검토하며 클수록 과적합 감소 효과가 있음
  • alpha [default=0, alias: reg_alpha] : L1규제 적용 값. 피처 개수가 많을 경우 적용을 검토하며 클수록 과적합 감소 효과가 있음
  • scale_pos_weight [default=1] : 비대칭한 클래스로 구성된 데이터셋의 균형을 유지하기 위한 파라미터

 

과적합 문제시 고려할 사항들

  • eta 값을 낮춘다(0.01~0.1). eta값을 낮출 경우 반대로 num_round(or n_estimators)는 높여줘야 한다.
  • max_depth 값을 낮춤
  • min_child_weight 값을 높임
  • gamma 값을 높임
  • subsample과 colsample_bytree를 조정하는 것도 트리가 너무 복잡하게 생성되는 것을 막음

 

출처 : 파이썬 머신러닝 완벽가이드(권철민 지음)

참고 : XGBoost 파이썬 설치 관련

https://code-code.tistory.com/16

 

XGBoost 설치 에러

XGBoost 설치는 아나콘다 환경에서 쉽게 설치가 가능합니다. Windows 기반에서 설치하려면 아나콘다 command 창에서 아래와 같이 명령어를 입력하면 됩니다. conda install -c anaconda py-xgboost 무슨 일인지..

code-code.tistory.com

 

728x90