Classification- Random Forest
Random Forest
배깅의 대표적 알고리즘
- Two ways to increase the diversity of ensemble
1)부트스트랩: 다양성을 높임
2)feature randomly select
Tree는 작은 Bias와 큰 Variance를 갖기 때문에,
매우 깊이 성장한(Depth가 깊은) 트리는 훈련 데이터에 대해 Overfitting 하게 됨
한 개의 Tree의 경우 훈련 데이터에 있는 Noise에 대해 매우 민감함(노이즈도 학습)
- Tree들이 서로 상관화(correlated)되어 있지 않다면 여러 Tree들의 평균은 Noise에 대해 강인해짐
- 상관화를 줄이는 방법은 Randomly Chosen (행 & 렬 모두)
- 반면, Forest를 구성하는 모든 Tree들을 동일한 데이터 셋으로만 훈련시키게 되면, Tree들의 상관성은 1이 됨
∴ Bagging은 서로 다른 데이터 셋들에 대해 훈련 시킴으로써, Tree들을 비상관화 시켜주게 됨
→ (낮은)Bias는 유지하면서 Variance를 낮춤
확률적으로 data noise에 강건함
OOB(Out Of Bag)
- Bootstrap을 진행하면 확률 상 뽑히지 못한 데이터는 36.8%가 됨
- 뽑히지 못한 Data를 활용하여 Model의 성능을 측정함
- 대게 Model의 성능을 측정할 때, Train set과 Valid set을 나눔
- 하지만 Random Forest의 경우 Valid set을 나눌 필요가 없음 → 뽑히지 못한 36.8% OOB Data 활용
- 단, 원하는 데이터에 대해 성능을 측정하고자 할 때는 분리해야 함
OOB의 활용 Feature Importance Score
비고: decision tree- rule extraction
데이터마다 룰이 적용되어 왜 각각 0 혹은 1로 예측되었는지 알 수 있다.
(반면, RF의 경우, 이 데이터가 중요하다 정도만 확인 가능)
- Step 1 : Compute the OOB error for the original dataset (Bootstrap 시 뽑히지 못한 36.8% Data 활용)
OOB를 활용하여 모델의 에러를 측정
- Step 2 : Compute the OOB error for the dataset in which the variable 𝒙𝒊 is permuted 𝒑𝒊
교란된 데이터에 i번째 변수에 대해 에러를 구함.
이 에러가 기존 에러보다 같거나, 작다면 해당 변수는 중요하지 않은 변수.(기존보다 커진다면 해당 변수는 중요한 변수임을 의미)
평균적으로 에러의 차이가 크고 분산이 낮아져야 중요도가 높아짐
이와 같이 확인 후, 다시 한번 decision tree를 통해 rule extraction을 진행 추천.
terminal node에서의 순도를 확인