: 여러 개의 분류기(classfier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법
목표 : 단일 분류기보다 신뢰성이 높은 예측값을 얻는 것
비정형 데이터(이미지, 영상, 음성 등)의 분류는 딥러닝이 뛰어난 성능을 보이지만, 대부분의 정형 데이터 분류에서는 앙상블이 뛰어난 성능을 보임
종류: 랜덤 포레스트, 그래디언트 부스팅 알고리즘(GRM), XGBoost, LightGBM, Stacking
유형: 보팅(Voting), 배깅(Bagging), 부스팅(Boosting)
: 여러 개의 분류기가 순차적으로 학습을 수행하되, 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해서는 올바르게 예측할 수 있도록 다음 분류기에게는 가중치(weight)를 부여하면서 학습과 예측을 진행함
앙상블 알고리즘 중 비교적 빠른 수행 속도, 높은 예측 성능
결정 트리를 기반 알고리즘으로 채택함
여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행 -> 최종적으로 모든 분류기가 보팅을 통해 예측 결정
개별적인 분류기의 기반 알고리즘은 결정 트리이지만, 개별 트리가 학습하는 데이터셋은 전체 데이터에서 일부가 중첩되게 샘플링(=부트스트래핑 분할 방식. Bootstrapping)된 데이터 세트. 이렇게 데이터가 중첩된 개별 데이트셋에 결정 트리 분류기를 각각 적용하는 것이 랜덤 포레스트
함수
sklearn.ensemble.RandomForestClassfier
sklearn.ensemble.RandomForestRegressor
n_estimators => 트리의 개수
max_features => split 대상 feature의 개수
oob_score=True => 학습할 때 validation 수행
from sklearn.ensemble import RandomForestClassfier
from sklearn.metrics import accuracy_score
import pandas as pd
import warnings
warnings.filterwarnings(‘ignore’)
# 학습/테스트용 DataFrame 반환
X_train, X_test, y_train, y_test =
# 랜덤 포레스트 학습 및 별도의 데이터셋으로 예측 성능 평가
rf_clf = RandomForestClassifier(n_estimators=10)
rf_clf.fit(X_train, y_train)
pre = rf_clf.predict(X_test)
accuracy = accuracy_score(y_test, pred)
print(‘랜덤 포레스트 정확도: {0: .4f}’. format(accuracy))