Light GBM
light gradient boosting model의 장점은 말 그대로 속도가 빠르며, GPU 계산을 지원하는 것입니다.
Leaf-wise model(아래로 tree를 확장하는 구조, 다른 tree 모델은 수평적으로 확장)이며 max loss 를 가지는 리프노드를 계속적으로 분활하여 생성한다. => 틀린 부분에 가중치를 더해 학습한다.
부스팅
부스팅은 기존에 있는 예측기를 조금씩 발전시켜서 여러 트리를 합하여 의사결정하는 방식이다.
두가지 방식이 있는데,
1. adaboost: 중요한 데이터에 weight를 주는 방식
2. GBDT: 딥러닝의 loss function처럼 오차를 훈련시켜 gradient를 활용해 모델을 개선하는 방식 (XGboost, LGBM이 이런 방식)
Gradient Boosting Decision Tree
decision tree를 만들때, gradient boosting을 활용한다.
손실함수를 가장 큰폭으로 줄일 수 있는 부분에서 leaf를 나눈다.
GOSS(Gradient Based One-Side Sampling)
GBDT에서는 기울기(Gradient)로 학습을 한다. 각 데이터 별로 기울기가 작으면 훈련 오차가 작다는 것을 의미하므로, 이는 학습이 잘 되었다는 뜻이다.
- 큰 Gradient(훈련이 잘 안된)를 갖는 데이터 개체들은 원하는 만큼 남겨두고(예를 들어, 30%, a = 0.3), 작은 Gradient를 갖는 데이터 개체들에서는 무작위 샘플링을 진행한다. 이때 작은 gradient 데이터셋에서 일부를 버림. 그래서 이런 방법은 작은 gradient만 drop하는 one-side sampling 이다.
- 하지만 만약 gradient가 적다고 해서 버려버리면, 데이터 분포자체가 왜곡되기 때문에 이 상태에서 훈련하면 정확도가 낮아지게 되는데 따라서 낮은 gradient의 값들(예를 들어, 10%, b= 0.1)은 가져와서 버린 샘플만큼 뻥튀기한다. 1 – a / b 를 곱해서 수를 맞춰준다.
- 일단 제일 큰 gradient를 가지는 (절대값으로) 놈부터 랭크를 시킨다. 그리고 큰 gradient를 가지는 애들은 100%를 취하고(예시로는, 전체의 30% 모두 사용), 작은 gradient 애들은 작은 비율만 선택한다. a와 b는 임의 선택.
- 그리고 분기를 계산할때는 보통은 분산을 계산하게 되는데 아무래도 gradient가 적은 데이터는 샘플링이 되었으므로 적어진 비율만큼 다시 1 – a / b 를 반영해주어 분산을 계산한 후, 정보이득이 제일 큰 쪽으로 분기를 한다.
참고: http://machinelearningkorea.com/2019/09/25/lightgbm%EC%9D%98-%ED%95%B5%EC%8B%AC%EC%9D%B4%ED%95%B4/
'데이터분석 > 머신러닝' 카테고리의 다른 글
Multiclassification imbalance problem improvement (0) | 2023.08.02 |
---|---|
LightGBM multiclassification code (0) | 2023.06.20 |
엔트로피 (0) | 2023.06.16 |
TPE 알고리즘 (0) | 2023.06.12 |
하이퍼파라매터 튜닝 (경험적) (0) | 2023.06.12 |