참고 도서: 파이썬 머신러닝 완벽 가이드 개정 2판
: 여러개의 분류기를 생성하고, 그 예측을 결합해 보다 정확한 최종 예측을 도출하는 기법.
목적 : 다양한 분류기의 예측 결과 결합을 통해 단일 분류기보다 신뢰성이 높은 예측값 얻기
종류 : Voting, Bagging, Boosting, Stacking 등
일반적으로 Soft Voting 사용
from sklearn.ensemble import VotingClassifier
from sklearn.ensemble import RandomForestClassifier
결정 트리 기반. 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예측 결정.
부트스트래핑(bootstrapping) 분할 방식으로 subset data 생성.
Bootstrapping : 여러 개의 데이터 세트를 중첩되게 분리하는 것.
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
X_train, X_test, y_train, y_test = get_human_dataset()
rf_clf = RandomForestClassifier(random_state=0, max_depth=8)
rf_clf.fit(X_train, y_train)
pred = rf_clf.predict(X_test)
accuracy = accuracy_score(pred, y_test)
print('랜덤 포레스트 정확도: {:.4f}'.format(accuracy))
출력 결과 : 랜덤 포레스트 정확도: 0.9196
n_estimators
: 랜덤 포레스트에서 결정 트리의 개수 지정, default = 10max_features
: 결정 트리에 사용된 max_features 파라미터와 같지만 기본은 'auto', 'sqrt'와 같음.max_depth
, min_samples_leat
, min_samples_split
GridSearchCV
이용해 최적 파라미터 구한 뒤 재학습n_jobs = -1
- 모든 CPU 코어를 이용해 학습 가능from sklearn.ensemble import GradientBoostingClassifier
loss
- 경사 하강법에서 사용할 비용 함수 지정. 기본값은 'deviance'learning_rate
- GBM이 학습을 진행할 때마다 적용하는 학습률. n_estimators와 상호 보완적으로 사용n_estimators
- weak learner의 개수. subsample
- weak learner가 학습에 사용하는 데이터의 샘플링 비율. 기본값 1.DMatrix
사용.predict()
와 달리 예측 결괏값이 아닌 예측 결과를 추정할 수 있는 확률 값 반환plot_importance()
: 패키지에 내장된 API로 features의 중요도를 막대그래프 형식으로 나타냄cv()
: GridSearchCV와 유사하게 데이터 세트에 대한 교차 검증 수행 후 최적 파라미터를 구하는 방법. 반환값은 DataFrame 형태장점
1. 뛰어난 예측 성능
2. GBM 대비 빠른 수행 시간
3. 과적합 규제
4. 나무 가지치기(Tree pruning)
5. 자체 내장된 교차 검증
6. 결손값 자체 처리
1. 일반 파라미터
: 일반적으로 실행 시 스레드의 개수나 silent 모드 등의 선택을 위한 파라미터로서 디폴트 파라미터 값을 바꾸는 경우는 거의 없음.
2. 부스터 파라미터
: 트리 최적화, 부스팅, regularization 등과 관련 파라미터 등을 지칭하며 대부분의 하이퍼 파라미터는 Booster 파라미터에 속함.
eta
: GBM의 learning_rate와 같은 파라미터. defalut는 0.3. 과적합 발생 시 값 낮추기.num_boost_rounds
: GBM의 n_estimators와 같은 파라미터min_child_weight
: 트리에서 추가적으로 가지를 나눌지 결정하기 위해 필요한 데이터들의 weight 총합. 값이 클수록 분할을 자제.gamma
: 트리의 리프 노드를 추가적으로 나눌지를 결정할 최소 손실 감소 값. 값이 클수록 과적합 감소max_depth
: 트리 기반 알고리즘의 max_depth와 같음. default는 6이며 보통 3~10사이의 값을 가짐. 0을 지정할 경우 깊이에 제한이 없음.sub_sample
: GBM의 subsample과 동일. 데이터 샘플링 비율을 지정.colsample_bytree
: GBM의 max_features와 유사. 트리 생성에 필요한 feature를 임의로 샘플링 하는 데 사용.3. 학습 태스크 파라미터
: 학습 수행 시의 객체 함수, 평가를 위한 지표 등을 설정하는 파라미터
eval_metric
: 검증에 사용되는 함수rmse
(회귀 기본값), mae
, logloss
, error
(분류 기본값), merror
, mlogloss
, auc