[머신러닝] 분류, XGBoost

김민주·2024년 4월 11일

XGBoost

python package명: xgboost

🌲 트리 기반의 앙상블 학습
GBM 기반

💡 GBM의 과적합 문제 해결

XGBoost 주요 장점

  • 뛰어난 예측 성능
  • GBM 대비 빠른 수행 시간
  • 과적합 규제 부재 문제 해결(GBM의 문제점)
  • Tree pruning: max_depth 파라미터로도 조절하기도 함.
  • 자체 내장된 교차 검증: 지정된 횟수보다 적게, 교차 검증을 통해 평가 값이 최적화 되먄 반복을 중간에 멈춤
  • 결손값 자체 처리

파라미터

booster: gdtree(default), gdliner 선택
silent: default=0, 출력 메시지 없애고 싶을 때 = 1
nthread: CPU실행 스레드 개수 조정, default=전체 사용
eta[default=0.3, ailas: learning_rate]: GBM학습률과 같은 의미, 파이썬 래퍼 기반 xgboost의 default = 0.3, default = 0.1
보통은 0.1~0.2 사이
max_depth[default=6]: 0을 지정하면 깊이에 제한 없음
sub_sample[default=1]: 0~1 가능
colsample_bytree[default=1]: feature를 임의로 샘플링 할 때 사용. 많은 feature가 있을 때 과적합 조정할 때 유용
lambda[default=1, alias: reg_lambda]: L2 Regularization 적용 값. feature 개수가 많을수록 사용하길 권장. 값이 클수록 과적합 감소 효과
alpha[default=0, ailas: reg_alpha]: L1 Regularization 적용 값. feature 개수가 많을수록 사용하길 권장. 값이 클수록 과적합 감소 효과
scale_pos_weight[default=1]: 특정 값으로 치우친 비대칭한 클래스. 데이터셋의 균형을 유지하기 위한 파라미터

(XGBoost)   ->    (GBM)
eta         ->    learning_rate
sub_sample  ->    subsample
lambda      ->    reg_lambda
alpha       ->    reg_alpha
colsample_bytree -> max_features (유사)
num_boost_rounds -> n_estimators

과적합 해결 방법

eta 낮춤(0.01~0.1) == num_round를 높임
max_depth 낮춤
min_child_weight 높임
gamma 높임

profile
mingdue02

0개의 댓글