<앙상블> 배깅(Bagging)
Data Analyticsㅤ/ㅤMachine Learningㅤ

<앙상블> 배깅(Bagging)

배깅(Bagging)

- Bagging이란 Bootstrp Aggregating의 줄임말이다

  • Bootstrap = Sample + Aggregating 여러 개의 데이터셋을 중첩을 허용하여 샘플링하여 분할하는 방식을 뜻한다

- (Eg) 데이터셋이 (1,2,3,4,5)로 되어있다고 가정했을 때

  • group 1 = (1,2,3)
  • group 2 = (1,3,4)
  • group 3 = (2,3,5)

- 보팅과 배깅의 차이점: 

  • Voting은 여러 알고리즘의 조합에 대한 앙상블
  • Bagging은 하나의 단일 알고리즘에 대하여 여러 개의 샘플 조합으로 앙상블

- 대표적인 Bagging 앙상블:

  1. RandomForest
  2. Bagging

 

RandomForest

- 트리모형 기반 Bagging 앙상블

- 앙상블 중 인기가 많다

- 사용하기 쉽고 성능이 우수하다

- 주요 Hyperparameter

  • random_state: 랜덤 시드 고정 값. $\rightarrow$ 튜닝할 때 반드시 고정할 것
  • n_jobs: CPU 사용 갯수. -1은 전부 사용한다는 뜻
  • max_depth: 깊어질 수 있는 최대 깊이. 과대적합 방지용
  • n_estimators: 앙상블하는 트리의 갯수
  • max_features: 최대로 사용할 feature의 갯수. 과대적합 방지용
  • min_samples_split: 트리가 분할할 때 최소 샘플의 갯수. (default=2). 과대적합 방지용
from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

# 튜닝 없이
rfr = RandomForestRegressor()
rfr.fit(x_train, y_train)
rfr_pred = rfr.predict(x_test)
mse_eval('RandomForest Ensemble', rfr_pred, y_test)

# 파라미터 튜닝 후
rfr = RandomForestRegressor(random_state=42, n_estimators=1000, max_depth=7, max_features=0.9)
rfr.fit(x_train, y_train)
rfr_pred = rfr.predict(x_test)
mse_eval('RandomForest Ensemble w/ Tuning', rfr_pred, y_test)