왜 XGBoost, LightGBM 모델을 사용하셨나요?
이 글은 위 질문에 대해 단순히
트리 부스팅 계열의 알고리즘이 Tabular 데이터에 좋기 때문에 사용했어요~
라고 답하지 않기 위해 작성하기로 했다.
질문에 답하기 위해서는 먼저 알아야할 개념이 있다.
부스팅과 앙상블.
앙상블 먼저 짚고 넘어가자.
Ensemble(앙상블)
여러 개의 약한 모델(weak learner)을 활용하여 강력한 모델(strong learner)을 만드는 방법
당연하게도 여러가지 방법으로 앙상블을 시도할 수 있다.
Boosting
Stacking
앙상블에 여러가지 방법이 있는 것은 알았고, 그 중에서 XGBoost와 LightGBM이 속한 부스팅 계열의 앙상블 알고리즘에 대해 자세히 보자.
대표적인 4가지 Boosting 앙상블이 어떻게 작동하는지 알아보자
1. AdaBoost
2. GradientBoost
3. XGBoost
4. LightGBM
1995년 고안된 방법, 유튜브 영상
node 하나에 2 개의 leaf를 가진 트리를 stump라고 한다.
피쳐를 하나만 쓴다는 것!
Single Stump / Source: StatQuest
AdaBoost는 가중치가 있는 stump들을 모아둔 모델이다.
(random forest는 리프가 여러개인 full tree)
Stumps with different weights / Source: StatQuest
1) 처음에는 모든 데이터의 sample weight를 동일하게 두고 stump를 만들어 각 stump의 지니계수를 계산한다.
2) 지니계수가 가장 작은 (=잘 분류해낸) stump가 첫 stump로 선정된다.
3) 첫 stump에서 잘못 분류한 샘플에 대해서는 sample weight가 커지게 되고, 잘 분류해낸 샘플에 대해서는 sample weight가 작아지게 된다.
4) 업데이트 한 sample weight를 가진 데이터에서 데이터를 중복을 허용하여 샘플링하는데, sample weight가 큰 샘플은 확률적으로 더 많이 뽑히게 된다.
5) 뽑힌 sample에 대해 다시 모든 sample weight를 동일하게 두고 1번 과정을 반복한다.
출처 유튜브 영상
AdaBoost에서 stump의 weight가 달라지면서 학습이 진행됐다면,
Gradient Boost는 leaf가 많은 형태의 tree를 사용한다.
(일반적으로 8~32 leaves)
그리고 tree들의 가중치는 모두 같다.
아주아주 요약하자면, 예측하려는 데이터들의 Y값을 모두 Y값의 평균이라고 두고 그 차이를 줄여나가는 방식으로 학습한다.
(여기서 hyperparameter 로써 max_num_leaves를 제한하여 학습과정을 제어할 수 있다)
Source: StatQuest YouTube
나머지 XGBoost 와 LightGBM 은 Part.2에서 계속...
모델의 bias와 variance는 뭐지?? Leo Breiman, 1996
= 모델이 내어놓는 prediction 들의 bias(예측값과 실제값의 차이)와 variance(예측값들이 얼마나 흩어져있는지)를 얘기하는 것
쉬운 한글 설명은 여기