모두 여러 개의 결정트리(Decision Tree)를 약하게 쌓아 올려(Boosting)
앞 트리의 오차(잔차)를 다음 트리가 보정하며 예측력 강화
비선형, 변수 상호작용, 대규모 데이터에 매우 강력
*실무, 데이터 경진대회(Kaggle)**에서 표준 도구로 사용
| 모델 | 특징/장점 | 단점/제약 |
|---|---|---|
| XGBoost | - 가장 널리 쓰이는 "기본 부스팅"- 병렬처리, 과적합방지, 커스텀 손실함수 지원- 높은 성능, 범용성 | - 설치 시 의존성 많음- 범주형 직접 지원X |
| LightGBM | - XGBoost보다 더 빠름- 대용량/고차원 데이터에서 메모리/속도 강점- 결측치 자동처리, 범주형 변수 지원 | - 소규모 데이터에선 오버슈팅(과적합) 위험 |
| CatBoost | - 범주형 변수 자동 인코딩(전처리 필요 거의 없음)- 튜닝이 간편, 실무자에 친화적- 적은 데이터도 안정적 | - 설치 무겁고, 드물게 느릴 수 있음 |
| 상황 | 추천 모델 | 설명 |
|---|---|---|
| 대용량/고차원/복잡/실무 | LightGBM, XGBoost | 속도, 성능, 대규모 데이터에 강함 |
| 범주형 변수(카테고리컬) 많음 | CatBoost, LightGBM | 원본 범주형 자동 지원 |
| 실무 예측/대회(정확도 최우선) | XGBoost, LightGBM, CatBoost | Kaggle 등에서 성능 1위권 |
| 결측치가 많은 데이터 | LightGBM, CatBoost | 자동 결측치 처리 |
| 빠른 실험, 손쉬운 튜닝 | CatBoost | 파라미터 튜닝 쉬움 |
| 파이썬/싸이킷런과 연동 필요 | XGBoost, LightGBM | API가 scikit-learn과 호환 |
| 파라미터 | XGBoost | LightGBM | CatBoost | 설명/공통기능 |
|---|---|---|---|---|
| n_estimators | O | O | O | 트리(부스팅) 개수 |
| learning_rate | O | O | O | 학습률 |
| max_depth | O | O | O | 트리 최대 깊이 |
| subsample | O | O | O | 학습에 쓸 샘플 비율 |
| colsample_bytree | O | O (feature_fraction) | O (rsm) | 트리별 사용할 특성 비율 |
| min_child_samples | - | O | O (min_data_in_leaf) | 리프 노드 최소 샘플수 |
| min_child_weight | O | - | - | 리프 노드 최소 가중치 |
| gamma | O | - | - | 분할 위해 필요한 최소 손실 감소 |
| reg_alpha/lambda | O | O | O | L1/L2 정규화 |
| cat_features | - | O | O | 범주형 변수 지정 |
| objective | O | O | O | 손실 함수 (회귀/분류 등) |
| random_state | O | O | O | 시드, 결과 고정 |
from xgboost import XGBClassifier, XGBRegressor
from lightgbm import LGBMClassifier, LGBMRegressor
from catboost import CatBoostClassifier, CatBoostRegressor
# XGBoost
model = XGBRegressor(n_estimators=200, learning_rate=0.05, max_depth=6)
# LightGBM
model = LGBMRegressor(n_estimators=200, learning_rate=0.05, max_depth=6)
# CatBoost
model = CatBoostRegressor(iterations=200, learning_rate=0.05, depth=6, cat_features=[0,2,3])
model.fit(X_train, y_train)
y_pred = model.predict(X_test)