자료를 공개한 저자 오렐리앙 제롱에게 깊은 감사를 드립니다. 이와 더불어 한빛미디어로부터 강의준비에 필요한 자료를 지원받았음을 밝히며, 이에 대해 진심어린 감사를 전합니다.
<그림출처: kaggle>
predict_proba()
메서드와 같은 확률 예측 기능을 지원해야 함.<그림출처: kaggle>
VotingClassifier
: 투표식 분류기 모델 제공# 선형 회귀
log_clf = LogisticRegression(solver="lbfgs", random_state=42)
# 랜덤포레스트
rnd_clf = RandomForestClassifier(n_estimators=100, random_state=42)
# 서포트벡터머신
svm_clf = SVC(gamma="scale", random_state=42)
# 투표식 분류기: 직접 투표
voting_clf = VotingClassifier(
estimators=[('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)], voting='hard')
# 투표식 분류기 학습
voting_clf.fit(X_train, y_train)
voting='hard'
: 직접 투표 방식 지정 하이퍼 파라미터voting='soft'
: 간접 투표 방식 지정 하이퍼 파라미터SVC
모델 지정할 때 probability=True
사용해야 predict_proba()
메서드 지원됨.개별 예측기의 경우에 비해 편향은 비슷하지만 분산은 줄어듦. 즉, 과대적합의 위험성이 줄어듦.
개별 예측기: 배깅/페이스팅 방식으로 학습하면 전체 훈련 세트를 대상으로 학습한 경우에 비해 편향이 커짐. 따라서 과소적합 위험성 커짐.
BaggingClassifier
BaggingRegressor
bag_clf = BaggingClassifier(
DecisionTreeClassifier(random_state=42),
n_estimators=500, # 의사결정나무 500개 사용
max_samples=100, # 부분집합 크기: 100개 샘플 사용. 기본값: 1.0. 즉, 훈련 샘플 전체 선택.
bootstrap=True, # 기본값:배깅방식. 페이스팅은 False 지정
n_jobs=-1,
random_state=42)
bag_clf.fit(X_train, y_train)
oob(out-of-bag) 샘플: 선택되지 않은 훈련 샘플
oob 샘플을 활용하여 앙상블 학습에 사용된 개별 예측기의 성능 평가 가능
BaggingClassifier
의 oob_score=True
로 설정하면 oob 평가를 자동으로 실행
BaggingClassifier
는 특성을 대상으로 하는 샘플링 기능 지원: max_features
와 bootstrap_features
이미지 등과 같이 매우 높은 차원의 데이터셋을 다룰 때 유용하게 사용
더 다양한 예측기를 만들며, 편향이 커지지만 분산은 낮아짐
max_features
¶학습에 사용할 특성 수 지정
특성 선택은 무작위
max_samples와 유사 기능 수행
bootstrap_features
¶훈련 샘플과 훈련 특성 모두를 대상으로 중복을 허용하며 임의의 샘플 수와 임의의 특성 수만큼을 샘플링해서 학습하는 기법
아래 두 조건이 참이어야 함
bootstrap=True
또는 max_samples < 1.0
bootstrap_features=True
또는 max_features < 1.0
전체 훈련 세트를 학습 대상으로 삼지만 훈련 특성은 임의의 특성 수만큼 샘플링해서 학습하는 기법
아래 두 조건이 참이어야 함
bootstrap=False
그리고 max_samples=1.0
bootstrap_features=True
또는 max_features < 1.0
배깅/페이스팅 방법을 적용한 의사결정나무의 앙상블을 최적화한 모델
분류 용도: RandomForestClassifier
RandomForestRegressor
rnd_clf = RandomForestClassifier(n_estimators=500,
max_leaf_nodes=16, # 최대 16개의 나뭇잎 허용
n_jobs=-1,
random_state=42)
rnd_clf.fit(X_train, y_train)
extra_clf = ExtraTreesClassifier(n_estimators=500,
max_leaf_nodes=16,
n_jobs=-1,
random_state=42)
extra_clf.fit(X_train, y_train)
RandomForestClassifier
: 훈련이 끝난 뒤 특성별 중요도의 전체 합이 1이 되도록 하는 방식feature_importances_
속성에 저장부스팅(boosting): 성능이 약한 학습기의 여러 개를 선형으로 연결하여 강한 성능의 학습기를 만드는 앙상블 기법
성능이 약한 예측기의 단점을 보완하여 좋은 성능의 예측기를 훈련해 나가는 것이 부스팅의 기본 아이디어
AdaBoostClassifier
AdaBoostRegressor
ada_clf = AdaBoostClassifier(
DecisionTreeClassifier(max_depth=1),
n_estimators=200,
algorithm="SAMME.R",
learning_rate=0.5,
random_state=42)
ada_clf.fit(X_train, y_train)
분류 모델: GradientBoostingClassifier
RandomForestClassifier
와 비슷한 하이퍼파라미터를 제공회귀 모델: GradientBoostingRegressor
RandomForestRegressor
와 비슷한 하이퍼파라미터를 제공gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=3, learning_rate=1.0)
gbrt.fit(X, y)
learning_rate
(학습률)¶learnign_rate
는 기존에 설명한 학습률과 다른 의미의 학습률.