Random Forest를 이해하기 위해서는 ensemble과 bagging을 이해할 필요가 있습니다.
1. Ensemble
앙상블이란 함께 결과를 만드는 하나의 그룹입니다.
앙상블의 기본 개념은 여럿이 모이면 혼자일 때보다 더 좋은 결과를 낸다는 것입니다.
이는 꽤나 직관적인 컨셉입니다.
이를 트리모델에 적용하면, 여러 약한 분류기들을 이용해 하나의 모델을 구성하는 것입니다.
랜덤 포레스트에서는 약한 트리모델의 결과를 합쳐 하나의 결과를 구성합니다.
2. Bagging
Bagging은 bootstrapping과 aggregation의 합성어입니다.
bootstrapping은 원래 데이터 수만큼 복원추출한다는 것입니다.
복원추출은 sampling을 진행할 때 뽑았던 것들을 다시 넣고 뽑습니다.
따라서 뽑은 데이터에는 데이터가 중복되어있을 수 있습니다.
이렇게 샘플링한 데이터로 그림1과 같이 트리들을 학습시키고, 이 결과를 종합해 결과를 도출합니다.
3. Voting 방법
결과를 종합하는 것을 Voting이라고 하며 여기에는 대표적으로 2가지 종류가 있습니다.
- Majority Voting : 가장 많은 것을 선택
- Weighted Voting : 0일 확률과 1일 확률에 대해서 값을 평균함
4. OOB ( Out Of Bag )
$ p = [1 - \frac{1}{N}]^n \rightarrow \lim_{N \rightarrow \infty} [1 - \frac{1}{N}]^n = e^{-1}=0.368 $
boostrap을 진행하면 확률적으로 36.8%는 뽑히지 않습니다.
이를 이용해 모델의 성능을 측정할 수 있습니다.
또한 이를 이용해 Feature Importance Score를 계산합니다.
5. Feature Importance Score
피처 중요도를 계산하는 컨셉은 직관적입니다.
" 특정 변수가 중요하다면 그걸 엉망진창으로 만들었을 때 에러가 커질 것이다. "
먼저 OOB를 이용해 모델의 error를 측정합니다. -> OOB Error
그 후 변수를 하나씩 permutation하며 error를 측정합니다. -> OOB Error of Permutated data i
그리고 결과를 비교합니다.
OOB Error < OOB Error of Permutated data i
-> i번째 피처가 중요하다는 것을 직관적으로 이해할 수 있습니다.
이를 계산하는 식은 다음과 같습니다.
- OOB error 차이 : $d_i^m = p_i^m - e_i^m$
- 평균 및 분산 : $\overline{d_i^m} =\sum_{i=1}^md_i^m , s_i^2 = \frac{1}{m-1} \sum_{i=1}^m (d_i^m - \overline d_i)^2$
- i 번째 변수의 중요도 : $v_i = \frac{\overline d_i}{s_i} $
이렇게 얻은 결과가 그림 4와 같습니다.
Random Forest는 높은 bias와 낮은 variance를 가지는 decision tree 모델을 bagging과 randomly feature selection을 통해, bias는 최대한 유지하면서 variance를 높인 모델입니다.
boostrap시 36.8%정도만 뽑히는데, 이때 이상치가 뽑히지 않을 확률이 높아 이상치에도 강건한 모델입니다.
- 출처
그림1: https://www.google.com/url?sa=i&url=https%3A%2F%2Fanasbrital98.github.io%2Fblog%2F2021%2FRandom-Forest%2F&psig=AOvVaw0lpTn2JZQHbBZu4Uy22jmy&ust=1690592406048000&source=images&cd=vfe&opi=89978449&ved=0CBEQjRxqFwoTCNC-pNCZsIADFQAAAAAdAAAAABAX
그림2: https://www.google.com/url?sa=i&url=https%3A%2F%2Ftheclassicalnovice.com%2Fglossary%2Fensembles%2F&psig=AOvVaw2IImf5lwgp6xoyMETCchau&ust=1690592566979000&source=images&cd=vfe&opi=89978449&ved=0CBEQjRxqFwoTCLDi95yasIADFQAAAAAdAAAAABAE
그림3:https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.stat20.org%2F3-generalization%2F17-bootstrapping%2Fnotes.html&psig=AOvVaw2suC4eEfGsnKDJE9GRNAq9&ust=1690593313453000&source=images&cd=vfe&opi=89978449&ved=0CBEQjRxqFwoTCMCTkYGdsIADFQAAAAAdAAAAABAE
- Reference
패스트캠퍼스, 초격차 패키지 : 50개 프로젝트로 완벽하게 끝내는 머신러닝
'DataScience > MachineLearning' 카테고리의 다른 글
[트리계열 이해하기] 3. AdaBoost (0) | 2023.07.28 |
---|---|
Bias와 Variance 이해하기 (0) | 2023.07.28 |
[트리계열 이해하기] 1. Decision Tree (0) | 2023.07.28 |
선형함수 정리 (Linear Regression, Ridge, Lasso, Elastic Net) (0) | 2023.07.28 |
[평가지표] AUC-ROC Curve (0) | 2023.07.14 |
댓글