XGBoost
개요
eXtreme Gradient Boosting의 약자. 정형(tabular) 데이터에서 가장 강력한 ML 모델 중 하나로, Kaggle 등 데이터 대회에서 오랫동안 정상을 차지한 알고리즘.
- 기반: 결정 트리(Decision Tree)의 앙상블 (Gradient Boosting)
- 특징: 속도와 성능의 균형, 높은 해석 가능성
- 공개처:
pip install xgboost
핵심 원리: Gradient Boosting
약한 모델(결정 트리) 여러 개를 순차적으로 학습하되, 이전 모델이 틀린 부분을 다음 모델이 보완하는 방식.
예측값 = 트리1 + 트리2 + 트리3 + ... (각 트리는 잔차를 줄이는 방향으로 학습)
XGBoost의 차별점
- 정규화(L1/L2) 내장 → 과적합 방지
- 결측값 자동 처리
- 병렬 학습 지원 (CPU/GPU)
- 조기 종료(Early Stopping) 지원
기본 사용법
import xgboost as xgb
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = xgb.XGBClassifier(
n_estimators=300,
max_depth=6,
learning_rate=0.1,
subsample=0.8,
)
model.fit(X_train, y_train, eval_set=[(X_test, y_test)], early_stopping_rounds=20)주요 하이퍼파라미터
| 파라미터 | 설명 | 권장 범위 |
|---|---|---|
n_estimators |
트리 개수 | 100~1000 |
max_depth |
트리 최대 깊이 | 3~8 |
learning_rate |
학습률 | 0.01~0.3 |
subsample |
샘플링 비율 | 0.6~1.0 |
colsample_bytree |
피처 샘플링 비율 | 0.6~1.0 |
이커머스 판매 예측 활용
입력 피처: 카테고리, 가격, 이미지 수, 리뷰 수, 경쟁 상품 수, 시즌 등
출력: 판매량 예측 (회귀) or 판매 등급 (분류: 상/중/하)
- 피처 중요도(Feature Importance) 제공 → 어떤 요소가 판매에 영향을 미치는지 파악 가능
- 데이터 수천 건부터 효과적
LightGBM과 비교
| 항목 | XGBoost | LightGBM |
|---|---|---|
| 학습 속도 | 보통 | 빠름 |
| 메모리 효율 | 보통 | 높음 |
| 대용량 데이터 | 가능 | 더 적합 |
| 안정성/성숙도 | 매우 높음 | 높음 |
| 첫 시도 추천 | ✅ | ✅ |
관련 개념
- LightGBM