機械学習の中でも最新かつ最強と言われる勾配ブースティング決定木について,実践例を用いて解説します.
実践例で使用している統計解析アプリStaatAppはこちらのページから無料でダウンロードできます.(勾配ブースティング決定木は有料機能となります.)
勾配ブースティング決定木とは
勾配ブースティング決定木(Gradient Boosting Decision Trees, GBDT)では,まず1つの決定木を作成して,予測値と真の値との差(残差)を比較します.次にその残差を考慮して新しい決定木を作成します.これを繰り返すことで,最終的に予測精度を高めることを目指します.
勾配ブースティング決定木は,決定木やランダムフォレストと比較しても予測精度が高いと言われています.実際にデータサイエンス・機械学習の競技プラットフォームであるKaggleでは,非常に多くの参加者から使用されており使いやすいさという観点も考慮すると,2023年現在で最強の手法であると言えます.
勾配ブースティング決定木の手順
勾配ブースティング決定木を用いた分析・予測は基本的には以下の手順で行います.
勾配ブースティング決定木でははじめにデータの前処理を行います.欠測値がある場合は補完や補正を行い,カテゴリーデータがある場合は置換などでエンコーディングを行います.テストデータは学習したモデルを評価するために作成します.機械学習ではデータを分割することで作成することが多いです.
分析者が設定できるモデルのパラメータ(設定値)をハイパーパラメータと言い,実際に機械学習を行うためにパラメータの設定を行います.(StaatAppでははじめはデフォルト設定で問題ありません.)
モデルの作成(学習)では主に分類問題と回帰問題の2パターンがあります.分類問題はターゲット変数(決定木で予測したい変数)がカテゴリーデータの場合に行い,回帰問題はターゲット変数が数値データの場合に行います.
モデルを作成したらテストデータを用いてモデルの評価を行います.分類問題では混合行列を作成して,正解率や再現率で評価します.回帰問題ではRMSE(二乗平均平方根誤差)やR²(決定係数)でモデルの精度を評価します.
再度ハイパーパラメータの調整(パラメータチューニング)を行い精度が十分と判断した場合,作成したモデルを用いてターゲット変数の予測を行います.
StaatAppを用いた勾配ブースティング決定木
統計解析アプリStaatAppを用いて,実際に勾配ブースティング決定木を用いた学習・予測を行います.データサイエンス・機械学習の競技プラットフォームであるKaggleで使用されるタイタニック号のデータセットを用いて解説します.
予測対象は生存状況の有無として,決定木を用いた分類問題を行います.
① 前処理
欠測値の処理やラベルエンコーディング(置換)の方法は以下のページをお読みください.
ここではテストデータの作成を行います.データ操作画面(初期画面)のツールバーからテストデータ作成機能を用いて,学習データとテストデータに分割します.
デフォルト設定のまま「実行」を行うと,全データの下から25%のデータがテストデータとして分割され「データ2」に保存されます.ホールド・アウト検証を行う場合に適しています.
ランダムでデータを分割したい場合は,「シャッフルして分割」をオンにします.
② ターゲット変数・特徴量の選択
勾配ブースティング決定木を選択して勾配ブースティング決定木用のウィンドウを表示します.
ターゲット変数(目的変数)には分類を行いたい変数を,特徴量(説明変数)には分類するための基準とする変数を選択します.
③ ハイパーパラメータの設定
ハイパーパラメータを調整することで過学習や未学習を避け,モデルの予測精度を向上させることができます.各設定項目については補足①をお読みください.
今回はデフォルト設定のままにします.
④ 学習の実行
ツールバーの「モデル作成」ボタンでモデルの作成を実行します.
画面右側の解析結果にサンプルごとの分類結果と特徴量ごとの重要度(影響度)が表示されます.
重要度から旅客運賃が最も分類結果に影響を与えていることがわかります.
⑤ モデルの精度評価
作成したモデルに対して,テストデータを用いてモデルの精度評価を行います.
評価タブを表示してテストデータに「データ2」を選択します.「算出」ボタンをクリックすると以下のようにに4つの評価指標と混合行列が表示されます.
評価指標はそれぞれ値が大きいほどモデルの予測精度が高いことを意味します.混合行列はテストデータ(実測値)と予測値を比較した行列で,生存有無が”yes”の場合はほとんど予測が的中していることがわかります.
予測精度が十分でないと判断して,ハイパーパラメータから最大深度と学習率を調整して再度学習を実行します.
学習後,テストデータを用いて評価指標を算出すると先程より予測精度大きく向上していることがわかります.
⑥ 予測値の算出
作成したモデルに対して予測用データを読み込ませて,ターゲット変数の予測を行います.
予測タブを表示し予測用データの選択,「算出」ボタンをクリックすると予測結果が表示されます.
※ ここでは簡易的にテストデータと同じデータで算出しています.
ここまでがStaatAppを用いた基本的な勾配ブースティング決定木を用いた分析手順になります.
補足① ハイパーパラメータ
ランダムフォレストにおけるハイパーパラメータの説明とチューニング方法は以下になります.
種別 | 説明・チューニング方法 |
木の数準 | 予測に用いる決定木の本数です.本数が多いほど異なるパターンを学習する機会が増え,予測の精度が向上する可能性があります. 本数が多すぎるとモデルの訓練に必要な時間やリソースが大きく増えるとともに,過学習を引き起こす可能性があります. |
最大深度 | ツリーの最大深度は値が大きいほど,深く分割を行います.デフォルト設定では全ての葉が1になるまで分割されます. 過学習を防ぐためには最大値を設定します.また,過学習の防止に最も効果がある場合が多いです. |
葉の最大数 | 最大の葉の数が多いほど分割されます.デフォルト設定では葉の数は無制限です. 過学習を防ぐためには値を小さくして,分割回数を制限します. |
学習率 | 新しく追加される決定木の予測が,全体の予測結果にどれだけ寄与するかを決定します.学習率が高ければ高いほど、新たに追加される決定木の影響力が大きくなります. 学習率が高すぎると、過学習となり新たなデータに対する予測性能が低下する可能性があります.一方,学習率が低すぎると,訓練プロセスが遅くなり未学習となる可能性があります. |
乱数の固定 | 学習ごとに用いられる乱数を固定します.乱数を固定した場合,同じデータで学習した場合の演算結果が等しくなります. |
補足② 回帰問題
回帰問題を行う場合はターゲット変数に数値データを選択して,分析の種類に回帰を選択します.回帰問題では予測値が連続データとして算出されます.
また,モデルの評価指標が分類問題とは異なりRMSE(平均平方二乗誤差)やMAE(平均絶対誤差)で評価します.これらの値は予測結果と実測値との誤差を示し,値が小さいほどモデルの予測精度が高いと言えます.
R²(決定係数)は0~1の間で算出され,1に近いほど当てはまりがよいとされます.
補足③ 勾配ブースティング決定木のアルゴリズム
勾配ブースティング決定木のアルゴリズムとしては,最新かつ高速なLightGBMを用いています.
StaatAppでは演算処理としてはPython用ライブラリのLightGBMを使用しています.公式ドキュメントは以下になります.ドキュメント内にアルゴリズムの引用論文なども記載されているため,学術研究で記載する際は参考にしてください.
・分類問題(lightgbm.LGBMClassifier)
・回帰問題(lightgbm.LGBMRegressor)