[머신러닝] 앙상블학습 | 랜덤 포레스트

yeonsuzy·2022년 9월 11일

용어 정리

목록 보기
5/6

앙상블 학습(Ensemble Learning)

: 여러 개의 분류기(classfier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법

  • 목표 : 단일 분류기보다 신뢰성이 높은 예측값을 얻는 것
    비정형 데이터(이미지, 영상, 음성 등)의 분류는 딥러닝이 뛰어난 성능을 보이지만, 대부분의 정형 데이터 분류에서는 앙상블이 뛰어난 성능을 보임

  • 종류: 랜덤 포레스트, 그래디언트 부스팅 알고리즘(GRM), XGBoost, LightGBM, Stacking

  • 유형: 보팅(Voting), 배깅(Bagging), 부스팅(Boosting)

Voting <-> Bagging

  • 같은점
    여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정함
  • 차이점
    보팅 - 일반적으로 서로 다른 알고리즘을 가진 분류기를 결합하는 것
    배깅 - 각각의 분류기가 모두 같은 유형의 알고리즘 기반이지만, 데이터 샘플링을 서로 다르게 가져가면서 학습을 수행함. Bootstrap Sample+Aggregating. 보팅의 예시로 랜덤포레스트

부스팅

: 여러 개의 분류기가 순차적으로 학습을 수행하되, 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해서는 올바르게 예측할 수 있도록 다음 분류기에게는 가중치(weight)를 부여하면서 학습과 예측을 진행함

  • 예측 성능이 뛰어나 앙상블 학습을 주도함
  • 대표적인 부스팅 모듈 : GBM, XGBoost, LightGBM

랜덤 포레스트

  • 앙상블 알고리즘 중 비교적 빠른 수행 속도, 높은 예측 성능

  • 결정 트리를 기반 알고리즘으로 채택함

  • 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행 -> 최종적으로 모든 분류기가 보팅을 통해 예측 결정

  • 개별적인 분류기의 기반 알고리즘은 결정 트리이지만, 개별 트리가 학습하는 데이터셋은 전체 데이터에서 일부가 중첩되게 샘플링(=부트스트래핑 분할 방식. 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))
  • 출처
  • "파이썬 머신러닝 완벽 가이드", 권철민, 위키북스, 211-222쪽
  • 머신러닝 교안 ch.12 Bagging

0개의 댓글