[7] 랜덤 포레스트에 대해서

2021. 1. 7. 16:05머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로

728x90
반응형

랜덤포레스트는 의사결정나무의 앙상블로 생각할 수 있다. 개개의 의사결정나무는 분산이 높은 문제가 있기 때문에 여러 의사결정나무의 평균을 내어 일반화 성능을 높이고 과대적합의 위험을 줄이는 것이 랜덤포레스트의 목표이다.

 

랜덤포레스트의 학습 과정

1. 훈련세트에서 중복을 허용하여 n개의 랜덤한 부트스트랩 샘플을 뽑는다.

2. 부트스트랩 샘플에서 의사결정나무를 학습한다.

    a. 중복을 허용하지 않고 랜덤하게 d개의 특성을 선택한다.

    b. 정보 이득과 같은 목적 함수를 기준으로 최선의 분할을 만드는 특성을 사용해 노드를 분할한다.

3. 1, 2번의 단계를 k번 반복한다.

4. 각 의사결정나무의 예측을 모아 다수결 투표로 클래스 레이블을 할당한다. 

 

랜덤포레스트의 특징

- 의사결정나무와는 다르게 학습 시 랜덤한 d개의 특성만을 사용해 학습한다는 특징이 있다. 

- 일반적으로 가지치기를 할 필요가 없다.

- 하이퍼파라미터 튜닝 시 신경써야하는 파라미터는 '트리의 개수(3단계의 k)'이다. 

 

랜덤포레스트는 일반화가 가능한 견고한 모델이기 때문에 대부분의 경우 트리의 개수만 늘려주면 성능이 좋아진다. 부트스랩의 샘플 크기가 작아지면 개별 트리의 다양성이 증가한다. 따라서 부트스트랩 샘플 크기가 작아질수록 랜덤 포레스트의 무작위성이 증가하고 과대적합의 영향이 줄어든다. 또한 랜덤포레스트의 전체적인 성능도 낮아지는 경향이 있다. 

 

랜덤포레스트를 구현할 때 주로 사용하는 '사이킷런'의 라이브러리에서는 부트스트랩 샘플의 크기를 원본 훈련 세트의 샘플 개수와 동일하게 한다. 이렇게 하면 균형잡힌 편향-분산 트레이드 오프를 얻을 수 있기 때문이다. 하지만 분할에 사용되는 특성 개수(d)는  \(\sqrt{훈련 세트에 있는 특성 개수}\)개를 사용한다. 

728x90
반응형