[ML] 결정 트리와 앙상블 기법 - 2. 랜덤 포레스트 (Random Forest)
01. 결정 트리와 앙상블
결정 트리의 큰 단점
The Elements of Statistical Learning 책에서
'결정 트리는 이상적인 머신 러닝 모델이 되기 힘든 한 가지 특징을 갖는다. 바로 부정확성이다.'
성능이 안좋다..
하지만 결정 트리를 응용하면 성능이 좋은 다른 모델을 만들어낼 수 있다 !
앙상블(ensemble) : 여러 독립적인 객체들이 만들어내는 조화로운 단체
하나의 모델을 쓰는 대신, 수많은 모델들을 사용해 종합적인 판단을 하는 것
수많은 모델들을 만들고, 이 모델들의 예측을 합쳐서 종합적인 예측을 하는 기법
모델을 100개... 만든다 -> 각 모델의 결과를 종합해 최종 결과를 예측한다.
02. 랜덤 포레스트 1: Bagging
랜덤 포레스트 : 트리 모델들을 임의로(random) 많이 만들어서 다수결 투표로 결과를 종합하는 알고리즘
Bootstrapping : 갖고 있는 데이터 셋으로 다른 데이터 셋을 만들어내는 방법
Bootstrap 데이터 셋
왜 Bootstrap 데이터 셋을 사용하나 ? 모든 모델을 저확히 똑같은 데이터 셋으로 학습시키면 결과 다양성이 떨어질 수 있기 때문에 이를 방지하기 위해, 각 모델을 임의로 만들어준 Bootstrap 데이터 셋으로 학습시켜준다 ~
Bootstrap 데이터로 결정을 합치는 앙상블 기법을 Bagging이라 함
랜덤 포레스트는 bagging을 사용하는 여러 알고리즘 중 하나의 예시
04, 랜덤 포레스트 2 : 임의로 결정 트리 만들기
Bootstrap 데이터 셋에서 임의로 두 속성 선택하여 루트 노드를 결정(지니 불순도가 낮은 값 선택).
또 다른 임의 속성 2개 선택하여 다음 노드 결정..
결정 트리 임의로 만들기
bootstrapping을 사용해서 임의로 데이터 셋 만든다.
결정 트리를 만들 때 속성을 임의로 고르면서 만든다.
이를 반복하면 조금씩 다른 수많은 결정 트리를 만들 수 있다 ~
랜덤 포레스트에서는 최종 결과는 트리의 결과의 다수결로 결정한다 !
06. scikit-learn으로 랜덤 포레스트 쉽게 사용하기
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, max_dept=4) : 결정 트리 몇개 만들지(default=10)
이후 학습 방법은 다른 모델과 동일
동일하게 결정 트리를 사용하기 때문에 속성 중요도 계산 가능
model.feature_importances_