데이터분석/통계

앙상블기법 배깅(bagging)과 부스팅(boosting)

씩씩한 IT블로그 2020. 12. 24. 12:04
반응형

0. 앙상블

머신러닝에서 여러개의 모델을 학습시켜 모델의 예측결과를 이용해 하나의 모델보다 더 나은 값을 예측하는것

 

1. 배깅(bagging)

높은 variance를 낮추는 것 (과적합 된 모델을 샘플링을 통해 과적합을 완화시키는것)

bootstrapping을 통해 여러 학습 데이터를 만들고 이들의 평균값을 구하는것.

bias가 낮은 모델들을 이용하여 variance를 줄인다. (중심극한정리의 원리와 비슷하다)

 

<example>

- 의사결정나무

from sklearn.tree import DecisionTreeRegressor

# DecisionTree
fit_reg5 = DecisionTreeRegressor().fit(X_train_feRSM, Y_train_feR)
pred_tr_reg5_feRSM = fit_reg5.predict(X_train_feRSM)
pred_te_reg5_feRSM = fit_reg5.predict(X_test_feRSM)

 

- 랜덤 포레스트 

from sklearn.ensemble import RandomForestRegressor

# RandomForestRegressor
fit_reg6 = RandomForestRegressor(n_estimators=100, random_state=123).fit(X_train_feRSM, Y_train_feR)
pred_tr_reg6_feRSM = fit_reg6.predict(X_train_feRSM)
pred_te_reg6_feRSM = fit_reg6.predict(X_test_feRSM)

 

2. 부스팅(boosting)

높은 bias를 낮추는 것 (학습이 덜 된 모델을 추가 학습을 통해 좀 더 좋은 모델로 만드는것)

성능이 약한 학습기 여러개를 이용하여 강한 학습기를 만드는 앙상블 학습

앞에서 학습된 모델을 보완해 나가며 더 나은 모델로 학습함.

 

<example>

 

- adaboost(adaptive boosting) : 학습된 모델이 과소적합 된 학습 데이터 샘플의 가중치를 높이면서 더 잘적합 하도록 함

 

- GBM(gradient boosting machine) : 학습 전단계 모델의 잔차를 모델에 학습시키는 방법

from sklearn.ensemble import GradientBoostingRegressor

### Boosting
# GradientBoostingRegression
fit_reg7 = GradientBoostingRegressor(alpha=0.1, learning_rate=0.05, loss='huber', criterion='friedman_mse',
                                           n_estimators=1000, random_state=123).fit(X_train_feRSM, Y_train_feR)
pred_tr_reg7_feRSM = fit_reg7.predict(X_train_feRSM)
pred_te_reg7_feRSM = fit_reg7.predict(X_test_feRSM)

 

 

- XGBoost(extream gradient boosting) : 높은 예측력으로 많은 양의 데이터를 다룰 때 사용

from xgboost import XGBRegressor

# XGBoost
fit_reg8 = XGBRegressor(learning_rate=0.05, n_estimators=100, random_state=123).fit(X_train_feRSM, Y_train_feR)
pred_tr_reg8_feRSM = fit_reg8.predict(X_train_feRSM)
pred_te_reg8_feRSM = fit_reg8.predict(X_test_feRSM)

 

- lightGBM : 현존하는 부스팅 알고리즘 중 가장 빠르고 높은 예측력

from lightgbm import LGBMRegressor
# LightGMB
fit_reg9 = LGBMRegressor(learning_rate=0.05, n_estimators=100, random_state=123).fit(X_train_feRSM, Y_train_feR)
pred_tr_reg9_feRSM = fit_reg9.predict(X_train_feRSM)
pred_te_reg9_feRSM = fit_reg9.predict(X_test_feRSM)

 

3. 부스팅(boosting)과 배깅(bagging)의 차이

 

*출처 : 패스트캠퍼스 "파이썬을 활용한 시계열 데이터분석 A-Z"

반응형