본 포스팅은 고려대학교 산업경영공학부 강필성 교수님의 [Korea University] Business Analytics (Graduate, IME654) 강의 중 04-8: Ensemble Learning - LightGBM영상을 보고 정리한 내용입니다.
1. LightGBM Idea
- 기존 GBM 알고리즘은 1) 모든 feature에 대해, 2) 모든 객체(data instance)를 스캔하여 information gain을 추정하는 방식으로 가능한 split point들을 탐색
- 앞서 살펴봤던 XGBoost에서는 객체들을 "bucket"으로 구분하여 2) 모든 객체를 스캔 하는 부담을 줄였음
- LightGBM에서는 1) 모든 feature에 대해 스캔하는 부담을 줄이기 위해 "Exclusive Feature Bundling(EFB)" 방법론을 적용하고, 2) 모든 객체를 스캔하는 부담을 줄이기 위해 "Gradient-based One-Sided Sampling(GOSS)" 방법론을 적용
- Exclusive Feature Bundling(EFB) :
+ one-hot encoding의 경우와 같이 feature space가 매우 sparse한 경우에는, 많은 feature들이 대부분 exclusive하다는 가정 (하나의 객체에 대해서 2개의 변수가 0이 아닌 값을 동시에 가질 확률이 매우 작다는 의미)
+ 이러한 exclusive features를 bundling(묶어서 변환)하는 방법론
+ 간혹 feature들이 exclusive하지 않는 경우, 오류가 발생할 리스크 있음
- Gradient-based One-Sided Sampling(GOSS) :
+ 개별적인 데이터는 서로 다른 gradient를 가지고 있고, gradient가 큰 데이터가 더 중요함
+ gradient가 큰 데이터는 탐색하고, gradient가 작은 데이터는 sampling하여 탐색
2. Exclusive Feature Bundling(EFB) 상세
- 1) greedy bundling, 2) merge exclusive features 2단계로 진행
- greedy bundling :
+ 변수들을 bundle로 그룹핑
+ Graph coloring problem으로 볼 수 있음, Graph(V, E) 에서 V는 feature, E는 feature 간 conflicts 를 의미, conflict가 없는 feature끼리 bundle을 구성할 수 있도록
+ cut-off 값은 hyper-parameter
- merge exclusive features :
+ bundle 내에 있는 feature에 대해 merge
+ 기준 feature를 정하고, 기준 feature의 최댓값을 offset 값으로 정함
+ 0이 아닌 값에 대해서는 기준 feature의 값을 그대로 사용하지만, 0인 경우에는 bundle 내 다른 변수 값에 offset을 더한 값을 사용
+ conflict한 경우(둘 다 0이거나, 둘 다 0이 아닌 값을 갖는 경우), 기준 feature 값을 가져옴
+ bundle 내 변수가 3개 이상이어도 순차적으로 기준 변수를 정하고 merge 가능
3. Gradient-based One-Sided Sampling(GOSS) 상세
- 데이터 객체를 gradient 순서대로 정렬한 후, top a*100%의 객체들은 전부 활용하고, 나머지 객체의 b*100%의 객체들은 랜덤하게 선택하여 활용
- a와 b는 hyper-parameter
4. LightGBM 성능
- 어떠한 데이터인지, 어떠한 task인지에 따라 LightGBM, XGBoost, CatBoost 성능이 달라짐
참고 자료
'머신러닝' 카테고리의 다른 글
[분석 방법론] Semi supervised Learning(1) - Overview (0) | 2023.01.06 |
---|---|
[분석 방법론] Ensemble Learning(9) - CatBoost (0) | 2023.01.01 |
[분석 방법론] Ensemble Learning(6) - Gradient Boosting Machine(GBM) (0) | 2022.12.28 |
[분석 방법론] Ensemble Learning(7) - XGBoost (0) | 2022.12.28 |
[분석 방법론] Ensemble Learning(5) - Adaptive Boosting(AdaBoost) (0) | 2022.12.12 |
댓글