Random Forest는 개별 트리 모델의 단점을 해결해주는 모델이다.
Random Forest의 배경: Ensemble
앙상블: 여러 Base모델들의 예측을 다수결 법칙 또는 평균을 이용해 통합해서 예측 정확성을 향상시키는 방법
다음 조건을 만족할 때 앙상블 모델은 Base 모델보다 우수한 성능을 보여준다.
- Base 모델들이 서로 독립
- Base 모델들이 무작위 예측을 수행하는 모델보다 성능이 좋은 경우(2 class 분류일 경우 0.5보다 성능이 높을 때)
Random Forest는 Base 모델로 의사결정나무 모델을 사용한다.
- Low computational complexity: 데이터의 크기가 방대한 경우에도 모델을 빨리 구축 가능
- Nonparametric: 데이터 분포에 대한 전제가 필요하지 않다.
1. Random Forest 개요
- 다수의 의사결정나무모델에 의한 예측을 종합하는 앙상블 기법
- 일반적으로 하나의 의사결정나무모델보다 높은 예측 정확성
- 관측치 수에 비해 변수의 수가 많은 고차원 데이터에서 중요 변수 선택 기법으로 널리 활용된다.
- 핵심 아이디어: 앙상블 모델이 작 작동하기 위해서 Diversity, Random성 확보
- 여러 개의 Training data 생성하여 각 데이터마다 개별 의사결정나무모델 구축: Bagging
- 의사결정나무모델 구축 시 변수 무작위로 선택: Random subspace
2. Bagging
: Boostrap + Aggregating: 각각의 boostrap 샘플로부터 생성된 모델을 합침
- 관측치로부터 Training subset 여러개 생성: Boostrap sampling
- 각각의 Training subset을 학습시킨다
- 각각의 예측값을 aggregate 해서 최종 예측값 선택
Boostrapping
: 데이터 내에서 반복적으로 샘플 생성하는 resampling 기법
각 데이터셋은 복원추출을 통해 원래 데이터의 수만큼 크기를 가지도록 샘플링한다.
이때 개별 데이터셋을 Boostrap set이라고 부른다.
특정 데이터가 여러번 선택될수도, 한번도 선택되지 않을 수도 있다.
ex) Original Dataset이 x1 ~ x10까지 있으면 Boostrap set은 모두 크기가 10이며 x1~x10까지 데이터를 10번 복원추출한 것.
Aggregating
각각의 의사결정나무에서 도출된 결과를 합쳐야 한다.
다음과 같은 3가지 방법이 있다.
3. Random Subspace
:의사결정나무의 분기점을 탐색할 때, 원래 변수의 수보다 적은 수의 변수를 임의로 선택하여 해당 변수들만을 고려 대상으로 한다.
- 예를 들어 뿌리 node에 대해 x3,x5,x6,x10만 랜덤으로 선택해 분할점과 분할변수 고려
- 다음 node에 대해 x1,x5,x9,x10만 랜덤으로 선택해 분할점과 분할변수 고려
- Full grown tree가 될 때까지 반복한다.
4. Random Forest 특성
Generalization Error
각각의 tree는 과적합 될 수 있다. Random forest는 tree의 수가 충분히 많을 때 Strong Law of Large Numbers에 의해 과적합되지 않고 그 에러는 limiting value에 수렴된다.
Generalization error은 작으면 작을수록 좋다.
개별 tree의 정확도가 높을수록 s 증가한다.
Bagging과 Random subspace는 각 모델들의 독립성, 일반화, 무작위성을 최대화시켜 모델간의 평균 상관관계를 감소시킨다.
즉, 개별 Tree의 정확도와 의사결정나무들간의 독립성이 높을수록 Random Forest의 성능이 높아진다.
중요 변수 선택
랜덤 포레스트는 선형 및 로지스틱 회귀모델과 달리 개별 변수가 통계적으로 얼마나 유의한지에 대한 정보가 없다. 비모수적 모델이기 때문.
다음과 같은 방식으로 변수의 중요도를 결정한다.
- 원래 데이터 집합에 대해 Out of bag(OOB) Error 구한다.
- 특정 변수의 값을 임의로 뒤섞은 데이터 집합에 대해 OOB Error 구한다.
- 개별 변수의 중요도는 2단계와 1단계 OOB Error 차이의 평균과 분산을 고려하여 결정한다.
배깅을 사용할 경우 붓스트랩셋에 포함되지 않은 데이터들을 검증 집합으로 사용한다.
붓스트랩셋의 경우 다음과 같은 방식으로 변수의 중요도를 결정한다
- 각 붓스트랩셋으로부터 생성된 Tree(t개)에서 각각 OOB error 계산(ri, i = 1,2...,t)
- Step(1) Tree에서 특정변수(관심있는 값: Xi)의 값을 임의로 뒤섞은 데이터집합에 대해 OOB error 계산(ei, i = 1,2...,t)
뒤섞었는데도 불구하고 di 즉, 차이가 크지 않으면 Xi가 중요하지 않다는 것.
차이가 크다면 Error가 커지기 때문에 Xi가 중요하다고 할 수 있다. 즉 d bar이 클수록 Xi가 중요한 것.
하이퍼 파라미터 선택
- Decision tree의 수: Strong law of large numbers 만족 시키기 위해 2000개 이상의 decision tree 필요
- Decision tree에서 노드 분할 시 무작위로 선택되는 변수의 수(Random subspace)
- Classification: 변수의 수 ^ 1/2
- Regression: 변수의 수 / 3
해당 내용은 고려대학교 산업경영공학부 김성범 교수님의 핵심 머신러닝 강의를 바탕으로 작성된 내용입니다.