Kaggle上位入賞者が使いこなす勾配ブースティングを理解しよう | AIZINE(エーアイジン)
AI(人工知能)用語集

Kaggle上位入賞者が使いこなす勾配ブースティングを理解しよう

勾配ブースティング

現在機械学習タスクにおいて最も広く利用されているアルゴリズムのひとつに勾配ブースティングがありますよね。本記事では勾配ブースティングに至るまでのアルゴリズムの変遷と、勾配ブースティングの特徴についてわかりやすく解説していきましょう。

勾配ブースティングの現在

勾配ブースティングは2020年現在最も広く利用されている機械学習アルゴリズムのひとつで、特にエクセルなどの形式で表現されるテーブルデータでその性能を発揮します。その人気の高さから勾配ブースティングを高速化・高精度化したXGBoost、LightGBM、CatBoostなどの様々なパッケージが公開されており、こうした名前は一度は聞いたことがありますよね。

勾配ブースティングモデルの長所はやはり高速かつ高精度であることで、Kaggleなどのデータサイエンス系のコンペティションの上位入賞解法のほとんどにこれらの勾配ブースティングが利用されています。

勾配ブースティングに至るまで

アンサンブル系アルゴリズムはAIZINEのAI用語集でもいくつか解説しているように、様々な派生があります。大きく分けると各弱識別器を独立に学習させて予測を行うバギング、直前の弱識別器の学習結果をもとに直列に新たな弱識別器を構築していくブースティングという2つの手法があります。それぞれのアルゴリズムの詳細は以下の記事からご覧ください]

このブースティングという手法を拡張したものが勾配ブースティングです。

では勾配ブースティングでは何が変わったのでしょうか。この手法ではその名の通り、損失関数の勾配を利用した学習を行います。ブースティングの代表的な手法であるAdaBoostでは各弱識別器は本来の目的変数をうまく予測できるように直前の弱識別器の学習結果を利用して、各サンプルの重みを変更していました。しかし勾配ブースティングでは、直前の弱識別器までの予測結果と本来の目的変数の損失関数の勾配を擬似目的変数として利用します。

目的変数または直前の予測との残差を直接予測する場合と異なり勾配に対して学習することで、二乗誤差だけでない様々な損失関数やタスクに対して適切な学習を行えるという利点がある、ということは勾配ブースティングの特徴と言えるでしょう。

また勾配を利用することで損失関数に囚われず、決定木だけでなく様々な弱識別器を使えるという利点もあります。

勾配ブースティングの学習

本章では勾配ブースティングの学習手順を解説しましょう。大きくは以下の手順で学習を行います。

  1. 最初の弱識別器を本来の目的変数にフィットさせる(最初の予測に目的変数の平均をとる場合もある)
  2. 弱識別器の数だけ以下の手順を繰り返す

2-1. 各学習サンプルの損失関数の勾配を求める

2-2. 損失関数の勾配に弱識別器をフィットさせる

2-3. 構築した弱識別器の予測結果を用いて再び1に戻る

基本的に直前の予測ありきの学習方法であるため、①で最初の予測を行うための弱識別器を構築し、とりあえず直前の予測結果があれば学習が進められるため、最初の予測には目的変数の平均値を利用することもあります。

②では各弱識別器の学習を行いますが、まずは弱識別器をフィットさせる損失関数の勾配を計算し、その勾配を利用して弱識別器の学習を実施。この識別器を用いて各サンプルに対する予測を行い、次の弱識別器で利用される勾配の計算に必要な予測値を更新します。

このステップを構築する弱識別器の数だけ繰り返すことで、勾配の値がゼロに近づき、損失関数を最小化するモデルを構築することができます。

また勾配ブースティングを拡張した手法では損失関数の近似を行うために勾配だけでなくヘシアンを利用したり、連続的な変数をビニングすることで離散値として扱い、ノード分割を高速化するなどの工夫が行われています。

まとめ

勾配ブースティングについて重要な点をまとめましょう。

  • 現在最も利用されている機械学習アルゴリズムのひとつ
  • 高速かつ高精度であるためKaggleなどのコンペティションの上位解法の常連
  • アンサンブル学習の手法のひとつで、ブースティングを損失関数の勾配を用いて拡張したもの
  • Scikit-Learn、XGBoost、LightGBM、CatBoostなどのパッケージから簡単に利用できる
以上、ご覧いただきありがとうございました。

燃やせ探究心!突き詰めろ美しきソースコード!オタフ☆クラブ

みんなのAI(人工知能)用語集

トップへ戻る
タイトルとURLをコピーしました