앙상블 기법

Python으로 연습하는 Machine Learning 면접 질문

Lisa Stuart

Data Scientist

앙상블 학습 기법

  • 부트스트랩 애그리게이션(Bagging)
  • 부스팅
  • 모델 스태킹
Python으로 연습하는 Machine Learning 면접 질문

오류 측정

Python으로 연습하는 Machine Learning 면접 질문

얕은 트리

Python으로 연습하는 Machine Learning 면접 질문

깊은 트리

Python으로 연습하는 Machine Learning 면접 질문

넓은 트리

Python으로 연습하는 Machine Learning 면접 질문

선형 모델

Python으로 연습하는 Machine Learning 면접 질문

바이어스

선형 관계 가정(부정확)

  • 높은 바이어스
  • 언더피팅
  • 일반화 성능 낮음
  • 복잡도↑ → 바이어스↓
Python으로 연습하는 Machine Learning 면접 질문

복잡한 모델

Python으로 연습하는 Machine Learning 면접 질문

분산

고복잡도 모델:

  • 높은 분산
  • 오버피팅
  • 일반화 성능 낮음
Python으로 연습하는 Machine Learning 면접 질문

바이어스-분산 균형

1 출처: Elements of Statistical Learning (Trevor Hastie, Robert Tibshirani, Jerome Friedman)
Python으로 연습하는 Machine Learning 면접 질문

배깅(부트스트랩 애그리게이션)

  • 부트스트랩 표본
    • 복원추출한 부분집합
    • 동일 행이 여러 번 선택 가능
  • 표본마다 모델 학습
  • 예측 평균화
  • 분산 감소

1 https://medium.com/@rrfd/boosting-bagging-and-stacking-ensemble-methods-with-sklearn-and-mlens-a455c0c982de
Python으로 연습하는 Machine Learning 면접 질문

부스팅

  • 다수의 모델을 순차 학습
  • 오분류에 가중치 부여
  • 바이어스 감소

1 https://blog.bigml.com/2017/03/14/introduction-to-boosted-trees/
Python으로 연습하는 Machine Learning 면접 질문

모델 스태킹

  • 모델 1 예측
  • 모델 2 예측...
  • 모델 N 예측
  • 스태킹으로 정확도 향상
    • 기본 모델(모델 N)의 예측을 2단계 모델 입력으로 사용

1 http://supunsetunga.blogspot.com/
Python으로 연습하는 Machine Learning 면접 질문

Vecstack 패키지

# import modules
from sklearn.ensemble import BaggingClassifier
from sklearn.ensemble import AdaBoostClassifier
from xgboost import XGBClassifier
from vecstack import stacking

# Create list: stacked_models
stacked_models = [BaggingClassifier(n_estimators=25, random_state=123), AdaBoostClassifier(n_estimators=25, random_state=123)]

# Stack the models: stack_train, stack_test
stack_train, stack_test = stacking(stacked_models, X_train, y_train, X_test, regression=False, mode='oof_pred_bag', 
                                   needs_proba=False, metric=accuracy_score, n_folds=4, stratified=True, shuffle=True, random_state=0, verbose=2)

# Initialize and fit 2nd level model
final_model = XGBClassifier(random_state=123, n_jobs=-1, learning_rate=0.1, n_estimators=10, max_depth=3)
final_model_fit = final_model.fit(stack_train, y_train)

# Predict: stacked_pred
stacked_pred = final_model.predict(stack_test)

# Final prediction score
print('Final prediction score: [%.8f]' % accuracy_score(y_test, stacked_pred))
1 https://towardsdatascience.com/automate-stacking-in-python-fc3e7834772e
Python으로 연습하는 Machine Learning 면접 질문

앙상블 함수

알고리즘 함수
부트스트랩 애그리게이션 sklearn.ensemble.BaggingClassifier()
부스팅 sklearn.ensemble.AdaBoostClassifier()
XGBoost xgboost.XGBClassifier()
Python으로 연습하는 Machine Learning 면접 질문

배깅 vs 부스팅

기법 바이어스 분산
부트스트랩 애그리게이션(Bagging) 증가 감소
부스팅 감소 증가
Python으로 연습하는 Machine Learning 면접 질문

주요 앙상블 기법 객관식

머신러닝의 세 가지 주요 앙상블 기법에 대한 다음 설명 중 옳은 것은 무엇입니까? 옳은 문장을 선택하십시오:

  • 부스팅은 모델 분산을 줄입니다.
  • 부스팅은 분류기의 예측 능력을 높입니다.
  • 배깅(부트스트랩 애그리게이션)은 모델 바이어스를 줄입니다.
  • 모델 스태킹은 개별 모델의 예측을 결합하여 더 높은 정확도의 모델을 만듭니다.
Python으로 연습하는 Machine Learning 면접 질문

주요 앙상블 기법 객관식: 정답

머신러닝의 세 가지 주요 앙상블 기법에 대한 다음 설명 중 옳은 것은 무엇입니까? 정답은:

  • 모델 스태킹은 개별 모델의 예측을 결합하여 더 높은 정확도의 모델을 만듭니다. (여러 개별 모델의 예측으로 얻은 최종 모델은 대개 개별 모델보다 성능이 높습니다.)
Python으로 연습하는 Machine Learning 면접 질문

주요 앙상블 기법 객관식: 오답 해설

머신러닝의 세 가지 주요 앙상블 기법에 대한 다음 설명 중 옳은 것은 무엇입니까?

  • 부스팅은 모델 분산을 줄입니다. (부스팅은 바이어스를 줄이며, 동시에 최적의 일반화를 위해 분산을 높일 수 있습니다.)
  • 부스팅은 분류기의 예측 능력을 높입니다. (부스팅은 바이어스를 줄이지만, 예측 능력 향상은 보장되지 않습니다.)
  • 배깅(부트스트랩 애그리게이션)은 모델 바이어스를 줄입니다. (배깅은 모델 분산을 줄입니다.)
Python으로 연습하는 Machine Learning 면접 질문

Passons à la pratique !

Python으로 연습하는 Machine Learning 면접 질문

Preparing Video For Download...