랜덤포레스트(RamdomForest, RF)
의사결정나무에 배깅 + alpha을 적용시킨 트리 기반 모델
alpha?
의사결정나무는 모든 변수를 가지고 정보 이득이 가장 높은 분할 지점을 결정하지만,
랜덤포레스트는 알고리즘의 각 단계마다 모든 변수가 아닌 랜덤하게 결정된 부분집합의 변수들에서 선택하게 된다.
이 분할을 위해 부트스트랩 샘플링, 배깅이 추가된다.
이론
랜덤포레스트 알고리즘
1. 데이터를 복원추출을 사용하여 부트스트랩 샘플링한다.
2. 모든 변수에 대해 비복원 랜덤추출로 p(p<P)개의 변수를 샘플링한다.
3. 샘플링된 p개의 변수를 사용하여 분할 알고리즘(트리 모델 때 설명한 알고리즘)을 적용한다.
4. 정보 이득이 가장 높은(동질성이 가장 높은) Xj, s를 선택한다.
5. 2~4단계를 반복하여 트리를 완성한다.
6. 1단계로 돌아가 새로 부트스트랩 샘플링 후 2~4단계를 반복한다.(지정한 트리 갯수만큼)
* 참고. 적절한 p개는? 보통 sqrt(P)를 사용한다.
변수 중요도(Feature Importance)
보통 두 가지 방법으로 측정한다.
1. 변수의 값을 랜덤하게 섞어 모델의 정확도가 감소하는 정도를 측정한다.
정확도는 OOB를 통해 측정한다.
2. 특정 변수를 기준으로 모든 노드에서 불순도 점수의 평균 감소량을 측정한다.
1번과 다른 점은 학습 데이터에서의 평균 감소량을 측정하기에 OOB를 사용한 것에 비해 신뢰도가 낮다.
* 참고1. 랜덤포레스트에서는 보통 2번 중 지니 불순도를 사용한 Feature importance 활용한다.
왜냐하면 1번의 경우는 OOB를 사용하여 다시 연산해야하지만 2번은 추가 계산이 필요없기 때문이다.
* 참고2. 주머니 외부(OOB, Out-Of-Bag)
트리 모델을 만들 때 사용하지 않은 데이터를 사용해 구한 학습 모델의 오차율을 말한다.
배깅(Bootstrap aggregating)
데이터를 부트스트래핑하여 여로 모델을 만드는 방법
알고리즘 설명
1. 만들 모델의 갯수 M, 모델을 만드는데 사용할 레코드의 수 n(n < N)의 값을 초기화한다. 반복할 변수 m=1로 셋팅한다.
2. 복원추출법을 사용하여 n개의 부분 데이터 Ym, Xm을 부트스트랩 추출한다.
3. 의사 결정 규칙 fmhat(X)를 얻기 위해 Ym, Xm으로 모델을 학습한다.
4. m += 1을 한 후 M개까지 반복한다.
배깅 추정치는 다음과 같이 정의할 수 있다.
fhat = 1/M(f1hat(X) + f2hat(X) + ... + fMhat(X))
실습
TBD