랜덤 포레스트 모델 배경 - 앙상블
`랜덤 포레스트(Random Forest)`는 앙상블 기법의 하나의 예이다. `앙상블(ensemble)`이란, 여러 Base 모델들의 예측을 다수결 법칙 또는 평균을 이용해 통합하여 예측 정확성을 향상시키는 방법을 말한다. 앙상블 모델은 Base 모델들이 서로 독립적이며, Base 모델들이 무작위 예측을 수행하는 모델보다 성능이 좋은 경우 Base 모델모다 우수한 성능을 보여준다. 앙상블 모델의 오류율은 다음과 같은 식으로 나타낸다.
랜덤 포레스트 모델은 `의사결정나무(decision tree)모델`을 Base 모델로 사용한다. 의사결정나무모델은 다음과 같은 이유로 Base 모델로써 활용도가 높다.
- Low computational complexity : 데이터의 크기가 방대한 경우에도 모델을 빨리 구축할 수 있다.
- Nonparametric : 데이터 분포에 대한 전제가 필요하지 않다.
랜덤 포레스트 모델 개요
- 다수의 의사결정나무모델에 의한 예측을 종합하는 앙상블 방법
- 일반적으로 하나의 의사결정나무모델보다 높은 예측 정확성을 보여줌
- 관측치 수에 비해 변수의 수가 많은 고차원 데이터에서 중요 변수 선택 기법으로 널리 활용됨
- 핵심 아이디어 : Diversity, Random 확보
- 여러 개의 Training Data를 생성하여 각 데이터마다 개별 의사결정나무모델 구축 → Bagging
- 의사결정나무모델 구축 시 변수 무작위로 선택 → Random subspace
- Bootstrap 기법을 이용하여 다수의 training data 생성
- 생성된 training data로 decision tree 모델 구축(무작위 변수를 사용하여)
- 예측 종합
Bagging(Bootstrap Aggregating)
`Bagging`이란 Boostrap과 Aggregating을 합친 말로, 각각의 Bootstrap 샘플로부터 생성된 모델을 합치는 것을 말한다.
여기서 `Bootstrap`이란 원래 데이터에서 `복원 추출(sampling with replacement)`을 통해 원래 데이터의 수만큼의 크기를 갖도록 샘플링하는 기법을 말한다. 샘플링된 개별 데이터셋은 부스트랩셋이라 부르며, 복원 추출을 했기 때문에 하나의 부스트랩셋에 같은 데이터가 여러 번 선택될 수도 있고, 어떤 데이터는 아예 선택되지 않을 수도 있다.
이론적으로 하나의 데이터가 하나의 부스트랩셋에 한번도 선택되지 않을 확률을 계산해보면 다음과 같다.
이렇게 부스트랩셋이 만들어지고 각 부스트랩셋마다의 모델의 결과를 합치는 일이 남았는데, 이러한 Aggregating에 해당하는 방법은 매우 다양하다. 그 중, 분류 문제에서의 방법은 `Majority voting`, `Weighted voting`이 있다.
Random Subspace
랜덤 포레스트 모델에서 `Random Subspace`란 의사결정나무의 분기점을 탐색할 때 원래 변수의 수보다 적은 수의 변수를 임의로 선택하여 해당 변수들만을 고려 대상으로 한다는 것이다. 전체 16개의 변수를 가지고 랜덤 포레스트 모델을 구축할 때, 하나의 의사결정나무 모델을 만드는 과정을 확인해보면 다음과 같다. 먼저, 원래 16개의 변수들 중 모델 구축에 쓰일 입력 변수를 무작위로 선택한다. 이후 기존에 의사결정나무 모델에서 분기점을 찾은 것과 동일한 방법으로 선택된 입력 변수들 중 분할될 변수를 선택한다. 다음 분기점의 경우에도 동일한 방법을 통해 무작위로 입력 변수를 선택하고, 분할된 변수를 선택하는 과정을 반복하여 `full-grown tree`가 될 때까지 반복한다.
랜덤 포레스트 - Generalization Error
- 각각의 개별 tree는 과적합 될 수 있음
- Random forest는 tree 수가 충분히 많을 때 Strong Law of Large Numbers에 의해 과적합되지 않고 그 에러는 limiting value에 수렴됨
- 여기서의 upper bound는 작을수록 좋음
- 개별 tree의 정확도가 높을수록 s 증가
- Bagging과 random subspace 기법은 각 모델들의 독립성, 일반화, 무작위성을 최대화시켜 모델간의 상관관계를 감소시킴
- 개별 tree의 정확도, 독립성이 높을수록 generalization error의 upper bound가 작아져 random forest의 성능이 높아짐
랜덤 포레스트 - 중요변수선택
랜덤 포레스트는 선형 회귀모델 혹은 로지스틱 회귀모델과는 다르게 알려진 확률분포를 가정하지 않기 때문에 개별 변수가 통계적으로 얼마나 유의한지에 대한 정보를 제공하지 않는다. 대신 랜덤 포레스트는 다음과 같은 간접적인 방식으로 변수의 중요도를 결정한다. 여기서` Out of Bag(OOB)`는 배깅을 사용할 경우 부스트랩셋에 포함되지 않은 데이터들을 검증 집합으로 사용하는 것을 의미한다.
- 원래 데이터 집합에 대해서 Out of bag(OOB) 데이터를 통해 개별 의사결정나무 모델의 OOB Error를 구함
- 특정 변수의 값을 임의로 변경한 데이터 집합에 대해서 OOB Error를 구함
- 개별 변수의 중요도는 2단계와 1단계 OOB Error의 차이의 평균과 분산을 고려하여 결정
d 값의 의미는 특정 변수의 값을 임의로 변경하는 경우 모델의 성능 차이가 커지는 것을 의미하므로 이는 곧 해당 변수의 중요도가 높다는 것을 의미한다. 따라서 d 값의 평균이 높아지면 개별 tree마다 해당 변수가 중요하게 작용한다는 것을 의미한다. d 값의 표준편차 또한 같은 의미이다.
랜덤 포레스트 - 하이퍼 파라미터
- Decision tree의 수 : Strong law of large numbers을 만족 시키기 위해 2,000개 이상의 decision tree 필요
- Decision tree에서 Random subspace를 위해 노드 분할 시 무작위로 선택되는 변수의 수 → 일반적으로 분류 문제의 경우 (변수의 수의 제곱근), 회귀 문제의 경우 (변수의 수 / 3)개의 변수를 통해 노드 분할하는 것을 추천
이 포스팅은 고려대학교 산업경영공학부 김성범 교수님 유튜브의 핵심 머신러닝 강의를 듣고 작성한 글입니다.
(이미지 출처 : 핵심 머신러닝)