LightGBM
개요
Microsoft가 개발한 Light Gradient Boosting Machine. XGBoost와 동일한 Gradient Boosting 계열이지만, 대용량 데이터에서 더 빠르고 메모리 효율이 높다.
- 기반: 결정 트리 앙상블 (Gradient Boosting)
- 특징: 빠른 학습 속도, 낮은 메모리 사용량
- 공개처:
pip install lightgbm
XGBoost와의 핵심 차이
Leaf-wise 트리 성장
- XGBoost: Level-wise (레벨 단위로 트리 성장)
- LightGBM: Leaf-wise (가장 손실이 큰 리프를 우선 분기) → 더 빠르고 정확하나 과적합 주의
GOSS (Gradient-based One-Side Sampling)
큰 그래디언트를 가진 샘플을 우선 학습 → 데이터 샘플링으로 속도 향상
EFB (Exclusive Feature Bundling)
희소한(sparse) 피처들을 묶어 차원 축소 → 메모리 및 속도 최적화
기본 사용법
import lightgbm as lgb
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = lgb.LGBMClassifier(
n_estimators=300,
num_leaves=31,
learning_rate=0.1,
subsample=0.8,
)
model.fit(
X_train, y_train,
eval_set=[(X_test, y_test)],
callbacks=[lgb.early_stopping(20)]
)주요 하이퍼파라미터
| 파라미터 | 설명 | 권장 범위 |
|---|---|---|
n_estimators |
트리 개수 | 100~1000 |
num_leaves |
리프 노드 수 (복잡도 제어) | 20~300 |
learning_rate |
학습률 | 0.01~0.3 |
min_child_samples |
리프 최소 샘플 수 (과적합 방지) | 10~100 |
subsample |
샘플링 비율 | 0.6~1.0 |
num_leaves가 XGBoost의max_depth에 대응하는 핵심 파라미터.
이커머스 판매 예측 활용
입력 피처: 카테고리, 가격, 이미지 수, 리뷰 수, 경쟁 상품 수, 시즌 등
출력: 판매량 예측 (회귀) or 판매 등급 (분류: 상/중/하)
- 데이터가 수십만 건 이상이면 XGBoost보다 LightGBM이 유리
- 카테고리형 변수(category dtype)를 자동 처리하는 기능 내장
언제 LightGBM을 선택할까
- 데이터가 많아서 학습 속도가 중요할 때
- 메모리 제약이 있을 때
- 카테고리형 피처가 많을 때 (자동 인코딩)
관련 개념
- XGBoost