배깅(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 앙상블:
- RandomForest
- Bagging
RandomForest
- 트리모형 기반 Bagging 앙상블
- 앙상블 중 인기가 많다
- 사용하기 쉽고 성능이 우수하다
- 주요 Hyperparameter
- random_state: 랜덤 시드 고정 값.
튜닝할 때 반드시 고정할 것 - 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)


