Pythonによる勾配ブースティング(Gradient Boosting)モデルの実装を解説していく

スポンサーリンク

読者の今回は、PythonによるGradient Boosting Modelに焦点を当て、実装の詳細も含めてご紹介します。

それでは、さっそく始めましょう


スポンサーリンク

まず、Gradient Boostingモデルとは何か?

Gradient Boostingの概念に深く入る前に、まず機械学習におけるBoostingの概念を理解しましょう。

ブースティング技術は、弱いモデルインスタンスを通してそのブロックを直列に構築することで、強い回帰器や分類器を作ろうとするものです。

つまり、前のインスタンスの誤分類を次のインスタンスに与え、その誤差から学習して分類や予測率を向上させるのです。

Gradient Boosting Algorithmはこのような機械学習モデルの一つであり、予測にBoosting技術を用いる。

勾配ブースティング・アルゴリズムでは、予測器の各インスタンスはその前のインスタンスのエラーから学習する、つまり、前の予測器によって報告または引き起こされたエラーを修正して、より少ないエラー率でより良いモデルを持つようにします。

すべてのGradient Boosting Algorithmの基本学習者または予測器は、分類と回帰の木です。

学習プロセスは、我々が構築することを決めたすべてのN個の木がモデルから学習し、誤分類誤差がより少ない予測の準備が整うまで続きます。

Gradient Boosting Modelは、回帰変数と分類変数の両方で機能します。

Python XGBoostチュートリアルを読むことをお勧めします。


Gradient Boosting Model – 実践的なアプローチ

この例では、自転車レンタル回数予測データセットを使用しました。

まず、read_csv()関数を使ってデータセットをPython環境にロードします。

さらに実装に近づき、sklearn.model selectionライブラリの train_test_split() 関数を用いて、データセットをtrainとtestのデータ値に分離しています。

データを分離した後、アルゴリズムの評価にはエラーメトリックモデルとしてMAPEをさらに使用します。

それでは、PythonでGradient Boosting Modelを実装するための手順を説明します。

  • GradientBoostingRegressor()関数を使用して、学習データにGBMを適用します。
  • さらに、predict()メソッドを用いて、テストデータに対してモデルを適用します。

例えば、以下の様になります。

import pandas
BIKE = pandas.read_csv("day.csv")
 
#Separating the depenedent and independent data variables into two dataframes.
from sklearn.model_selection import train_test_split
X = bike.drop(['cnt'],axis=1)
Y = bike['cnt']
# Splitting the dataset into 80% training data and 20% testing data.
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=.20, random_state=0)
 
import numpy as np
def MAPE(Y_actual,Y_Predicted):
    mape = np.mean(np.abs((Y_actual - Y_Predicted)/Y_actual))*100
    return mape
 
from sklearn.ensemble import GradientBoostingRegressor
GR = GradientBoostingRegressor(n_estimators = 200, max_depth = 1, random_state = 1)
gmodel = GR.fit(X_train, Y_train)
g_predict = gmodel.predict(X_test)
GB_MAPE = MAPE(Y_test,g_predict)
Accuracy = 100 - GB_MAPE
print("MAPE: ",GB_MAPE)
print('Accuracy of Linear Regression: {:0.2f}%.'.format(Accuracy))

出力。

結果:Gradient Boosting Modelの精度は83.10%であった。

MAPE:  16.898145257306943
Accuracy of Linear Regression: 83.10%.

まとめ

ここまでで、このトピックは終了です。

何か疑問があれば、お気軽にコメントください。

Pythonプログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。

タイトルとURLをコピーしました