랜덤포레스트 (Random Forests)

랜덤포레스트 – Random Forest

의사 결정나무의 단점에 대해서 아래 주소에 정리

의사결정나무(2) (Decision Tree)

단점을 간략히 정리하면

1) 에러가 다음 단계 까지 전파가 되고, 2)학습데이터에 민감하고, 3)적은 개수의 노이즈에도 영향이 크고, 4)과적합의 위험이 있다

이것에 대한 해결방안으로 Random Forest 모델이  있다.

1. 앙상블 – Ensemble

랜덤포레스트 (Random Forest) 앙상블 모델의 하나의 예이다.

여러 Base 모델들의 예측을 다수결 법칙 또는 평균을 이용해 통합하여 예측 정확성을 높힌다.

<기존 Base 모델보다 우수한 성능을 보여주기 위한 조건>

– Base 모델들이 서로 독립접

– Base 모델들이 무작위 예측을 수행하는 모델보다 성능이 좋은 경우

2. 앙상블 모델의 오류율

$e_{ensemble} = \sum_{i=[N/1]}^{N}{n \choose i}e^{i}(1-e)^{N-i}$

e : Base 모델의 오류율

N : Base 모델의 수

아래의 그림은 5개의 binary classifier를 base 모델을 가지는 앙상블 모델의 오류율이다. Base 모델의 성능이 무작위 모델 보다는 좋아야 한다.

base모델의 오류율이 0.5보다 커지면 앙상블 모델의 오류율보다 커진다.

3. 랜덤포레스트 – Random forest 배경

데이터의 크기가 방대한 경우에도 모델을 빨리 구축할 수 있고(Low computational complexity), 데이터 분포에 대한 전제가 필요하지 않는(Nonparametric) 장점으로 의사결정나무모델은 앙상블 모델의 base모델로 사용한다.

4. 랜덤포레스트 – Random forest 개요

다수의 의사결정나무모델에 의한 예측을 종합하는 앙상블 방법

일반적으로 하나의 의사결정나무모델 보다 높은 예측 정확성을 보여준다.

관측치 수에 비해 변수의 수가 많은 고차원 데이터에서 중용 변수 선택 기법으로 널리 활용된다.

1) Bootstrap 기법을 이용하여 다수의 training data 생성

2)생성된 training data로 decision tree 모델 구축 – bagging

3)의사결정나무모델 구축 시 변수 무작위 선택 – Random subspace

4)예측 종합

5. Bagging ( Bootstrap Aggregating)

Bootstrap Aggregating 로 각각의 bootstrap 샘플로 부터 생성된 모델을 합치는 과정

Bootstrap 은 샘플링 기법으로

1) 각 모델은 서로 다른 학습 데이터셋을 이용

2) 각 데이터셋은 복원추출(sampling with replacement)을 통해 원래 데이터의 수만큼 크기를 갖도록 샘플링

3) 개별 데이터셋을 bootstrap set 이라 부름

bootstrap 는 복원 추출로 원래 데이터의 수만큼 크기를 갖는다. 이론적으로 한 개체가 하나의 bootstrap에 한번도 선택되지 않을 확률은

$p = (1 – \dfrac{1}{N})^{N} -> lim_{N->\infty}(1-\dfrac{1}{N})^{N} = e^{-1} = 0.368$

6. Aggregating

10개의 모델을 이용하여 test data에 대한 예측이 위 그림과 같이 나왔다.

이 10개의 예측 값을 이용하여 result 값을 가지게 된다.

result aggregating 을 계산하는 방법

1) 첫번째 방법

$Ensemble(\hat{y}) = argmax_{i}(\sum_{j=1}^{n}I(\hat{y}_{i}=i), i \in {0,1})$ 의 식으로

위 그림에 대한 예측의 결과는

$\sum_{j=1}^{n}I(\hat{y} = 0) = 4$

$\sum_{j=1}^{n}I(\hat{y} = 1) = 6$  으로

$Ensemble(\hat{y}) = 1$

2) 두번째 방법

Training Accuracy에 대한 가중치를 주어 result 값을 계산한다.

$Ensemble(\hat{y}) = argmax_{i}(\dfrac{\sum_{j=1}^{n}(TrainAcc_{j} \cdot I(\hat{y}_{j}=i)}{\sum_{j=1}^{n}(TrainAcc_{j})}, i \in {0,1})$ 의 식으로

$\dfrac{\sum_{j=1}^{n}(TrainAcc_{j} \cdot I(\hat{y}_{j}=0)}{\sum_{j=1}^{n}(TrainAcc_{j})} = 0.424$

$\dfrac{\sum_{j=1}^{n}(TrainAcc_{j} \cdot I(\hat{y}_{j}=1)}{\sum_{j=1}^{n}(TrainAcc_{j})} = 0.576$

$Ensemble(\hat{y}) = 1$

참고자료

답글 남기기