간단 요약
Leaf wise, GOSS, EFB
기존의 Tree 기반 알고리즘과는 다르게 동작한다.
XGBoost — 균형 트리 분할(Level Wise) 방식
LightGBM — 리프 중심 트리 분할(Leaf Wise) 방식
Leaf Wise
트리의 균형을 맞추지 않고 **최대 손실 값(Max data loss)**를 가지는 leaf 노드를 지속적으로 분할
⇒ Tree의 깊이(depth)가 깊어지고 비대칭적인 트리가 생성된다.
데이터의 크기가 작은 경우, 과적합되기 쉽다.
데이터의 개수가 10,000개 이상인 경우 좋다.(경험적)
하지만, 최대 손실 값을 가지는 leaf node를 반복할수록 균형 트리 분할(Level wise) 방식보다 예측 오류 손실을 최소화 할 수 있다.
성능 자체를 강화하는데 목적을 둔다.
Microsoft에서 제안한, 병렬 처리 없이도 빠르게 Gradient Boosting을 학습할 수 있도록 하는 모델
GOSS: Gradient-based One-Side Sampling
데이터 샘플의 수를 줄여 학습 시간을 단축
Top N개 데이터 인스턴스와 랜덤 샘플링 데이터 인스턴스만 활용
전제 — 데이터 인스턴스가 가지고 있는 gradient가 클수록 모델에 큰 변화를 줄 수 있다.
⇒ 학습이 덜 된 샘플
따라서, gradient 값이 큰 상위 a%의 샘플은 무조건 선택하고 나머지에서는 무작위로 선택하여 가중치 부여
EFB: Exclusive Feature Bundling
학습에 사용할 feature 수를 줄여서 학습 시간을 단축
전제 — 현실 데이터에는 상당히 많은 수의 feature가 sparse한 공간을 이루기 때문에, 사실상 feature들끼리 상호 배제(mutually exclusive)적인 관계를 이루고 있다.
상호 배제적인 feature들을 묶어 최적(최소)의 bundle을 구성하고, 이를 하나의 변수로 변환한다.
$$ \tt O(data \times feature)→ O(data\_GOSS \times Bundles) $$
시퀀스 데이터에도 LGBM을 사용할 수 있다.
다만, 시퀀스 정보를 feature에 녹여낸 후 사용해야 한다.
[LightGBM] LGBM는 어떻게 사용할까? (설치,파라미터튜닝)
주요 파라미터
object
options: regression
, binary
, multiclass
...
metric
options: mae
, rmse
, mape
, binary_logloss
, auc
, cross_entropy
, kullbac_leibler
...
1. learning_rate
일반적으로 0.01 ~ 0.1 정도로 맞추고 다른 파라미터를 튜닝한다.
나중에 성능을 더 높일 때 learning rate를 더 줄인다.