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
728x90
'데이터 분석 > [Python] 머신러닝' 카테고리의 다른 글
surprise 추천 알고리즘 (0) | 2022.01.05 |
---|---|
[Python] 사이킷런 결측치 대체 함수 SimpleImputer (0) | 2021.03.14 |