본문 바로가기
AI

앙상블

by anion 2023. 10. 31.

앙상블 기법의 종류

  • 배깅 (Bagging): 여러개의 DecisionTree 활용하고 샘플 중복 생성을 통해 결과 도출. RandomForest
  • 부스팅 (Boosting): 약한 학습기를 순차적으로 학습을 하되, 이전 학습에 대하여 잘못 예측된 데이터에 가중치를 부여해 오차를 보완해 나가는 방식. XGBoost, LGBM

랜덤포레스트(RandomForest)

  • Bagging 대표적인 모델로써, 훈련셋트를 무작위로 각기 다른 서브셋으로 데이터셋을 만들고
  • 여러개의 DecisonTree로 학습하고 다수결로 결정하는 모델

주요 Hyperparameter

  • random_state: 랜덤 시드 고정 값. 고정해두고 튜닝할 것!
  • n_jobs: CPU 사용 갯수
  • max_depth: 깊어질 수 있는 최대 깊이. 과대적합 방지용
  • n_estimators: 앙상블하는 트리의 갯수
  • max_features: 최대로 사용할 feature의 갯수. 과대적합 방지용
  • min_samples_split: 트리가 분할할 때 최소 샘플의 갯수. default=2. 과대적합 방지용

from sklearn.ensemble import RandomForestClassifier

rfc = RandomForestClassifier(n_estimators=3, random_state=42)
rfc.fit(X_train, y_train)

rfc_pred = rfc.predict(X_test)

recall_eval('RandomForest Ensemble', rfc_pred, y_test)

 

 XGBoost

  • 여러개의 DecisionTree를 결합하여 Strong Learner 만드는 Boosting 앙상블 기법
  • Kaggle 대회에서 자주 사용하는 모델이다.

주요 특징

  • scikit-learn 패키지가 아닙니다.
  • 성능이 우수함
  • GBM보다는 빠르고 성능도 향상되었습니다.
  • 여전히 학습시간이 매우 느리다

주요 Hyperparameter

  • random_state: 랜덤 시드 고정 값. 고정해두고 튜닝할 것!
  • n_jobs: CPU 사용 갯수
  • learning_rate: 학습율. 너무 큰 학습율은 성능을 떨어뜨리고, 너무 작은 학습율은 학습이 느리다. 적절한 값을 찾아야함. n_estimators와 같이 튜닝. default=0.1
  • n_estimators: 부스팅 스테이지 수. (랜덤포레스트 트리의 갯수 설정과 비슷한 개념). default=100
  • max_depth: 트리의 깊이. 과대적합 방지용. default=3.
  • subsample: 샘플 사용 비율. 과대적합 방지용. default=1.0
  • max_features: 최대로 사용할 feature의 비율. 과대적합 방지용. default=1.0

!pip install xgboost

from xgboost import XGBClassifier

xgb = XGBClassifier(n_estimators=3, random_state=42)  
xgb.fit(X_train, y_train)

xgb_pred = xgb.predict(X_test)

recall_eval('XGBoost', xgb_pred, y_test)

 

Light GBM

  • XGBoost와 함께 주목받는 DecisionTree 알고리즘 기반의 Boosting 앙상블 기법
  • XGBoost에 비해 학습시간이 짧은 편이다.

주요 특징

  • scikit-learn 패키지가 아닙니다.
  • 성능이 우수함
  • 속도도 매우 빠릅니다.

주요 Hyperparameter

  • random_state: 랜덤 시드 고정 값. 고정해두고 튜닝할 것!
  • n_jobs: CPU 사용 갯수
  • learning_rate: 학습율. 너무 큰 학습율은 성능을 떨어뜨리고, 너무 작은 학습율은 학습이 느리다. 적절한 값을 찾아야함. n_estimators와 같이 튜닝. default=0.1
  • n_estimators: 부스팅 스테이지 수. (랜덤포레스트 트리의 갯수 설정과 비슷한 개념). default=100
  • max_depth: 트리의 깊이. 과대적합 방지용. default=3.
  • colsample_bytree: 샘플 사용 비율 (max_features와 비슷한 개념). 과대적합 방지용. default=1.0

!pip install lightgbm

from lightgbm import LGBMClassifier

lgbm = LGBMClassifier(n_estimators=3, random_state=42)  
lgbm.fit(X_train, y_train)

lgbm_pred = lgbm.predict(X_test)

recall_eval('LGBM', lgbm_pred, y_test)

'AI' 카테고리의 다른 글

TensorFlow vs Keras  (0) 2024.03.22
라이브러리 vs 프레임워크  (0) 2024.03.22
파이토치  (0) 2024.03.11
CNN / RNN / LSTM  (0) 2023.11.02
딥러닝 심층신경망(DNN) 모델 프로세스  (0) 2023.10.31