leaf-wise와 level-wise
트리의 성장방식에 따른 분류이다. 문서 를 참조하자.
level_wise tree growth 의 경우 트리의 깊이를 줄이고 균형있게 만들기 위해서 root 노드와 가까운 노드를 우선적으로 순회하여 수평성장하는 방법. 이때에는 균형을 잡기위한 추가 연산이 필요. XGBoost 가 여기에 속함.
leaf-wise tree growth 의 경우 loss 변화가 가장 큰 노드에서 분할하여 성장하는 수직 성장방식. 비대칭 트리 생성이 특징이며 loss 변화 기준으로 분할하기 때문에 예측 오류 손실이 작거나 빠르게 도달할 수 있다. LightGBM 이 여기에 속함.
level-wise 와 달리 leaf-wise는 빠르게 도달할 수 있는 장점과 달리 성능면에서 overfitting 하기 쉬운 아키텍쳐이지만 이를 내부 하이퍼 파라미터와 구현 기술로 극복했다고 보는 것이 맞다.
Gradient Descent + Boosting
경사하강법 + 부스팅
오류에 대해 가중치를 주는 방식이다.
LGBM 주요특징
✅ histogram 기반 feature Binning
Best split gain 을 위해 모든 leaf node 의 데이터들을 대상으로 해야함. 오랜 수행 시간. : 연속형 피처들을 특정한 개수의 Bin 으로 할당하여 시간을 줄임
✅ Goss
✅ DART(Dropouts meet Multiple Adiitive Regression Trees)
LightGBM boosting type
오버피팅에 취약 (depth 가 깊어지는 문제)
max_depth
: 트리의 최대 깊이
num_leaves
: 최대 리프노드 갯수
이 두 가지를 조정을 해서 뎁스가 너무 깊어져 오버피팅이 나지 않게 해주는 게 중요.
bagging_fraction
/ subsample
: 데이터를 절반만 트리를 생성하는데 사용feature_fraction
/ colsample_bytree
: 매우 많은 피처 중 일부만 사용min_data_in_leaf
/ min_child_samples
: 리프 노드가 될 수 있는 최소 데이터 건수lambda_l2
/ reg_lambda
: L2 규제 적용 값. lambda_l1
/ reg_alpha
: L1 규제 적용 값. max_bin
: Feature 들의 histogram 만들 때 최대 bin 들의 개수 Grid Search : 격자, 값에 대한 범위를 이산값으로 표현해서 (개별 하이퍼 파라미터들을) 순차적으로 결합. 수행시간이 너무 오래 걸린다.
Random Search : 랜덤하게 개별 하이퍼 파라미터 결합. 수행시간은 줄이지만 운에 맞긴느 것이다. 최적 파라미터를 찾기 어려움.
Bayesian Optimization
수동 튜닝 : 어느정도 사용하는 것이 바람직하다.