Table of Contents

Tree-based Model, Bagging

랜덤포레스트가 뭐길래? 회의에서 당당하게, 수식없이 알아보자

Decision Tree

Regression Tree

$ f(X) = \sum_{m} c_m * I(x \in R_m) $
Objective function : $ \sum_{J} \sum_{i \in R_j} (y_i-\hat{y}_{R_j})^2 $

Fitting

분할의 모든 경우 다 고려하는 것은 현실적으로 불가능 : top-down greedy 방법 사용
다음 식을 최소로 하는 j와 s 값 :
$ \sum_{i:x_i \in R1=\{X|X_j<s\}}(y_i-\hat{y}_{R_1})^2 + \sum_{i:x_i \in R2=\{X|X_j\geq s\}}(y_i-\hat{y}_{R_2})^2 $

Pruning 가지치기

cost complexity prunning (weakest link prunning) 가지치기
Cost Function = Err(T) + $ \alpha $ |T| , |T| : 터미널 노드 수
Full Tree에서 hyperparameter $ \alpha $ 에 의해서 비용함수를 최소로 하는 SubTree 선택 (0이면 Full Tree)
$ \alpha $ 는 검증셋 또는 교차검증 사용해서 선택

Classification Tree

https://ratsgo.github.io/machine%20learning/2017/03/26/tree/
https://danbi-ncsoft.github.io/study/2018/12/06/entropy.html
그냥 오분류율은 충분히 민감하지 않아 다른 measure(불순도)가 선호됨.
분할전 Gini Index $ \sum_{j=1}^{J} p_j(1-p_j) $ , j:변수가 가지는 Class 수
분할후 $Gini.Index(A) = \sum _{ i=1 }^{ d }{ { \left( { R }_{ i }\left( 1-\sum _{ k=1 }^{ m }{ { p }_{ ik }^{ 2 } } \right) \right) } } $
분할전 Entropy $ -\sum _{ k=1 }^{ m }{ { p }_{ k }\log _{ 2 }{ { (p }_{ k }) } } $
분할후 $ Entropy(A)=\sum _{ i=1 }^{ d }{ { R }_{ i } } \left( -\sum _{ k=1 }^{ m }{ { p }_{ k }\log _{ 2 }{ { (p }_{ k }) } } \right) $ (Ri=분할 전 레코드 가운데 분할 후 i 영역에 속하는 레코드의 비율)
분할전 → 분할후 줄어드는 양이 큰 변수분할 선택

pros
cons

예측 정확도가 낮다.
trees are inherently high-variance,
the bushier they are, the higher the variance.

Bagging (Bootstrap AGGregation)

분산이 각각 $ \sigma^2 $ 인 n개의 독립적인 관측치 $ Z_1, \ldots , Z_n $ 의 평균 $ \bar{Z} $ 의 분산은 $ \sigma^2/n $. 즉, 관측치들의 집합은 평균하는 것은 분산을 줄인다.

$ \hat{f}_{bag}(x) = {1\over B} \sum \hat{f}^{*b}(x) $ (평균 or voting)

with positive pairwise correlation $ \rho $, the variance of the average is $ \rho \sigma^2 + {{(1-\rho)}\over{B}} \sigma^2 $

하지만 각각 독립인 것은 어떻게? → Random Forest

Random Forest

트리들의 correlation을 줄여줌. 상관성을 제거(decorrelate) 간단한 방법으로 배깅된 트리들보다 더 나은 성능을 제공
배깅에서와 마찬가지로 Bootstrap된 훈련 표본들에 대해 다수의 Decision Tree를 만든다. 그러나 트리 내에서 분할이 고려될 때마다 p개 설명변수들의 전체 집합에서 m개 설명변수들로 구성된 랜덤표본이 분할 후보로 선택된다.

hyperparameter

Out of Bag 오차 추정

각각의 배깅된 트리는 평균적으로 관측치들의 약 2/3을 이용. ''5장 2번 연습문제?''
나머지 1/3을 Out-Of-Bag (OOB) 관측치 → OOB에 대한 오차. → B가 충분히 큰 경우 OOB오차는 LOOCV 오차와 사실상 동일

중요도

Cons

Random Seed 따라 결과 값이 달라질 수 있다.
변수의 수가 늘어나면, 특히 예측과 크게 상관없는 변수들이 많으면, 성능 저하
학습 뿐 아니라, 실제 예측 시간. Many Tree 계산 필요
High Dimension, Sparse Data (text) 에 약함

기타

adaptive nearest-neighbor estimator 로 해석될 수 있음