目的関数(損失関数)とベース学習器

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

Sergey Fogelson

Head of Data Science, TelevisaUnivision

目的関数とその役割

  • 予測値と実際の値のずれを定量化する
  • データの推定値と真の値の差を測定する
  • 目標:損失関数を最小化するモデルを見つける
XGBoost で学ぶ極限の勾配ブースティング

代表的な損失関数とXGBoost

  • XGBoostにおける損失関数名:
    • reg:squarederror - 回帰問題に使用
    • reg:logistic - 確率ではなく決定値が必要な分類問題に使用
    • binary:logistic - 決定値ではなく確率が必要な場合に使用
XGBoost で学ぶ極限の勾配ブースティング

ベース学習器とその必要性

  • XGBoostは、多数の個別モデルを組み合わせたメタモデルで最終予測を行う
  • 個別モデル=ベース学習器
  • 組み合わせることで非線形な最終予測を実現する
  • 各ベース学習器はデータの異なる部分を予測・識別する
  • ベース学習器の種類:ツリーと線形
XGBoost で学ぶ極限の勾配ブースティング

ツリーをベース学習器とした例:Scikit-learn API

import xgboost as xgb
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

boston_data = pd.read_csv("boston_housing.csv")

X, y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1] X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.2, random_state=123)
xg_reg = xgb.XGBRegressor(objective='reg:squarederror', n_estimators=10, seed=123) xg_reg.fit(X_train, y_train) preds = xg_reg.predict(X_test)
XGBoost で学ぶ極限の勾配ブースティング

ツリーをベース学習器とした例:Scikit-learn API

rmse = np.sqrt(mean_squared_error(y_test,preds))

print("RMSE: %f" % (rmse))
RMSE: 129043.2314
XGBoost で学ぶ極限の勾配ブースティング

線形ベース学習器の例:学習API

import xgboost as xgb
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

boston_data = pd.read_csv("boston_housing.csv")

X, y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1]

X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.2, 
                                                         random_state=123)

DM_train = xgb.DMatrix(data=X_train,label=y_train) DM_test = xgb.DMatrix(data=X_test,label=y_test)
params = {"booster":"gblinear","objective":"reg:squarederror"}
xg_reg = xgb.train(params = params, dtrain=DM_train, num_boost_round=10) preds = xg_reg.predict(DM_test)
XGBoost で学ぶ極限の勾配ブースティング

線形ベース学習器の例:学習API

rmse = np.sqrt(mean_squared_error(y_test,preds))

print("RMSE: %f" % (rmse))
RMSE: 124326.24465
XGBoost で学ぶ極限の勾配ブースティング

練習しましょう!

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

Preparing Video For Download...