오늘은 XGBoost 다음으로 LightGBM을 배웠다.
수업 시작하기 전 강사님이 DS 과정의 미래?에 대해 설명해 주시는데 역시 대학원밖에 없을까...하는 생각이 들었다. 대학원을 바로 가야하나.. 그런 생각과 대학원을 간다면 나는 어떻게 발전될 수 있을지 (무엇을 얻어갈 수 있을지)에 대한 고민이 많아졌다.
📝 오늘 공부한 내용
LightGBM
Leaf-wise tree growth
XGBoost의 경우 level-wise tree growth인 반면 LightGBM은 Leaf-wise tree growth이다.
-> leaf 단위로 트리를 확장시킨다.
- Decision trees들은 highest information gain으로 best split을 알아낸다.
- information gain은 split전과 후의 entropy (measure of uncertainty or randomness)로 불순도가 높아질 수록 entropy는 높다.
BFS (Best First Search)
- information gain을 바탕으로 split을 진행한다.
- leaf nodes들 중 성능향상에 도움이 제일 큰 leaf node에 split을 진행하며 트리를 확장시킨다.
장점
1) 성능 개선에 도움이 되지 않는 노드들을 만들지 않는다.
2) 더 적은 노드로도 높은 성능을 낼 수 있다.
- 훨씬 작은 메모리로 빠르게 성능이 좋은 트리를 만든다.
단점
- 데이터의 row가 10000이하라면 overfitting이 되기 쉽다.
꼭 기억하자!
- num_leaves(leaf node)수 조절이 필수
- max_depth를 세팅해야함
-> max_depth를 크게 주고 num_leaves를 조절해야 함
LightGBM Parameters
CART
- max_depth: 4~15
- num_leaves:
- tree가 가질 수 있는 최대 leaf node의 갯수
- 2N−1 개 e.g (31, 63, 127, 255, 511...)
- min_child_samples:
- 회귀모델일 때 leaf node가 되는 최소 sample 수 =
- colsample_bytree:
- feature 갯수 조절
- 0.5 ~ 0.8
- 데이터가 많을수록 줄어들어야 함
- reg_lambda:
- 0.1 ~ 20
Tree ensemble 관련 param
- n_estimators:
- 50 ~ 2000
- learning_rate:
- 0.1, 0.01, 0.001
- n_estimators가 올라가면 learning rate이 낮아져야함
🌷 느낀점
XGBoost도 그렇고 LightGBM도 그렇고 파라미터를 뭐로 어떻게 설정하냐가 정말 중요한 것 같다. 오죽하면 optuna같은 파라미터를 조절해주는 프레임워크도 나왔을까..하는 생각이 든다. 각 모델의 이론과 장단점을 잘 파악해서 언제 어떤 모델을 사용해야 하는지 감이라도 잡아가야겠다는 생각이 든다.