ブースティングとは?

XGBoost で学ぶ極限の勾配ブースティング

Sergey Fogelson

Head of Data Science, TelevisaUnivision

ブースティングの概要

  • 特定の機械学習アルゴリズムではない
  • 機械学習モデルの集合に適用できる概念
    • 「メタアルゴリズム」
  • 多数の弱学習器を強学習器に変換するアンサンブルメタアルゴリズム
XGBoost で学ぶ極限の勾配ブースティング

弱学習器と強学習器

  • 弱学習器:確率よりわずかに優れたMLアルゴリズム
    • 例:予測精度が50%をわずかに上回る決定木
  • ブースティングは弱学習器の集合を強学習器に変換する
  • 強学習器:良好な性能を達成するようにチューニング可能なアルゴリズム
XGBoost で学ぶ極限の勾配ブースティング

ブースティングの仕組み

  • データのサブセットに対して弱モデルを反復的に学習する
  • 各弱学習器の性能に応じて予測に重みを付ける
  • 重み付き予測を統合して単一の予測を得る
  • ...個々の予測を大きく上回る精度が実現される!
XGBoost で学ぶ極限の勾配ブースティング

ブースティングの例

1 https://xgboost.readthedocs.io/en/latest/model.html
XGBoost で学ぶ極限の勾配ブースティング

交差検証によるモデル評価

  • 交差検証:未知のデータに対するモデルの性能を推定する堅牢な手法
  • 訓練データ上で重複しない複数の訓練/テスト分割を生成する
  • すべての分割におけるテストセット性能の平均を報告する
XGBoost で学ぶ極限の勾配ブースティング

XGBoostでの交差検証の例

import xgboost as xgb
import pandas as pd

churn_data = pd.read_csv("classification_data.csv")
churn_dmatrix = xgb.DMatrix(data=churn_data.iloc[:,:-1], label=churn_data.month_5_still_here)
params={"objective":"binary:logistic","max_depth":4}
cv_results = xgb.cv(dtrain=churn_dmatrix, params=params, nfold=4, num_boost_round=10, metrics="error", as_pandas=True)
print("Accuracy: %f" %((1-cv_results["test-error-mean"]).iloc[-1]))
Accuracy: 0.88315
XGBoost で学ぶ極限の勾配ブースティング

練習しましょう!

XGBoost で学ぶ極限の勾配ブースティング

Preparing Video For Download...