今日は機械学習のトピックに関する30回目の投稿で、間違いなく機械学習時代の最も強力なモデルであるGBDTについてお話しします。
残念ながら、GBDTに関する情報は数多く出回っていますが、そのコアエッセンスを明確に紹介している人はほとんどいません。初心者は、最初の学習で、しばしば「勾配」、「残差」などの紛らわしい概念に惑わされ、学習と理解のアルゴリズム原理を遅らせることになります。しかし、実際には、GBDTの全体的な原理はまだ比較的直感的でシンプルであり、あなたがコアを把握するための正しい方法を見つける限り、私は信じて、大多数の人々のために、それは問題ではないはずです。
GBDT基本コンセプト
もう一つのキーワードはブースティングで、ブースティングはAdaBoostモデルを紹介するときにも出てきた、統合的なモデル学習法を示しています。その最大の特徴は、複数のモデルを学習し、継続的な繰り返しによってモデル全体の偏りを減らすことです。例えば、AdaBoostモデルでは、複数の弱い分類器を設定し、それらの分類器に性能に応じて異なる重みを与えます。この設計により、良い分類器にはできるだけ高い重みを与え、モデルの適合能力を確保します。
しかし、GBDTのBoosting手法は異なり、複数のCART決定回帰木から構成される加算モデルです。モデル全体の最終的な予測値は、すべての回帰木の予測値の合計であることが簡単に理解でき、これは後で勾配と残差を理解するために非常に重要です。
GBDTの予測式を書いてみてください:
式中のMはCARTツリーの数を示し、サンプルに対するi番目の回帰ツリーの予測結果を示し、theは各回帰ツリーのパラメータを示します。つまり、GBDTモデルの最終結果は、すべての回帰木の予測結果の合計です。
回帰の問題ならいいのですが、分類の問題ならどうなのでしょう?分類の結果を合計することは可能なのでしょうか?
実際、ロジスティック回帰では、この式の結果が標本のカテゴリが1である確率を表すという公式が使用されていることを知ることができます。もちろん、この確率を直接あてはめることはできませんが、結果をあてはめるために合計を使用できるので、間接的に確率を得ることができます。
回帰問題は最も直感的で理解しやすい問題です。分類問題は次回に回しますので、ここで少し理解しておきましょう。
勾配と残差
勾配と残差の概念が導入されたので、線形回帰での勾配降下の使い方を復習しましょう。
勾配降下は、損失関数を最小化する最適なパラメータを見つけるために線形回帰で使用されます。勾配を計算する目的はパラメータを調整することです。しかしGBDTは違います。勾配は次の反復ラウンドのために計算されます。
一例を挙げると、ある値にフィットさせるために線形回帰が使用されるとします。ここで目標とするyは20で、現在のyは10です。
しかし、GBDTはそうではなく、やはり最初の回帰木も真の結果と10異なる10の結果を与えると仮定し、勾配を計算します。回帰問題では、損失関数として平均2乗誤差MSEが使われることが多いので、この関数の勾配を計算します。まず損失関数の式を書きましょう:
Lの負の勾配の値は、予測される目標値からモデルによって予測された結果を差し引いた値に等しく、ちょうどそのように見えます。この値はしばしば残差とも呼ばれます。
は,サンプルiに対するm番目の回帰木の訓練目的を表し,次式で与えられます.
直感的には単純で、予測される結果は20で、最初の木は10を予測し、その差はまだ10なので、2番目の木を使って近似します。2番目の木は5を予測し、差は5になります。
設定されたしきい値未満にかなり近づくか、サブツリーの数が上限に達するまで続けられ、その時点でモデルの学習が停止します。
ここで重要なのは、残差を単に目標値との差として理解するのではなく、損失関数から負の勾配を計算することによって本質的に得られるものとして理解することです。
トレーニングプロセス
そして、モデルトレーニングの全プロセスを試してみて、すべての詳細を結びつけてください。
Mは決定木の本数を表します。はmラウンド目の学習後の全体を表し、これは最終的な出力GBDTモデルです。
- 初期化 - まず、最初の回帰木が作成されます。つまり、回帰問題の途中で、目標値を回帰木に直接フィッティングした結果です: 
- 反復 - i. 回帰木2からmについて、各木の訓練目的、すなわち前の結果の残差を計算します: - ii.現在のm番目のサブツリーについて、その実行可能なカットポイントとしきい値をトラバースして、残差をできるだけ近似するように、最適予測cに対応するパラメータを見つける必要があります: - ここでそれは,m番目のサブツリーのすべての分割法におけるリーフ・ノードの予測値の集合,つまり,m番目の回帰木によって到達可能な予測値の集合を意味します.ここで j は,1,2,3 .....j. - 次に更新ですが、ここでIは関数で、サンプルがノード上にあればI=1、なければI=0です。 
- 最後に、回帰木を得ます 
上の式は少し複雑に見えますが、実際にはand Iの助けを借りて回帰木を表現しているだけです。あなたがモデルの訓練から最終的に得たいのは、実はモデルのパラメータであり、回帰木の場合はパラメータを表現するのがより複雑なので、少しわかりにくく見えるかもしれません。
GBDTはより簡単に理解することができ、GBDTは複数の回帰木を訓練するために使用される加法モデルであり、予測はこれらの回帰木の合計です。そして、各回帰木の訓練目的は、モデルの残差です。
Shrinkage
Shinkageは、オーバーフィッティングを避けるためにGBDTを最適化する方法であり、この方法の本質は、残差の各反復の収束の程度を小さくすることであり、より少ない倍数の収束の各近似は、より少ない回数の結果の近似を、多くの回の1つの近似よりも優れていることです。具体的な性能指標は、学習率に似たパラメータを乗じた各回帰木の結果を、回帰木の数を増やして補正することです。
大げさに言えば、勾配降下問題において、学習率を掛けなければ振動の問題から抜け出せず収束できないことが明確に知られていることを除けば、勾配降下における学習率の掛け算と同じです。GBDTでは、Shrinkageのメカニズムには明確な証明や知覚的知識がなく、その効果は経験に基づくところが大きい。
比較のために収縮率を加えた式を書いてください:
Shrinkageパラメータは一般的に0.001から0.01の間の値をとります。
概要
ここでは、GBDTモデルの基本原理を紹介しました。決定木に関する記事を熟読された方であれば、GBDTを理解することは難しいことではないと思います。未読の方、読み逃した方は、その部分の読み方に関連する記事の最後を見て、内容を復習してください。
GBDTの最大のイノベーションは、勾配を小さくするためにパラメータを調整する従来のプロセスを、近似のための新しいツリーモデルの作成に変換することです。従来のモデルに比べ、GBDTは複数の分類器の結果を組み合わせるため、オーバーフィッティングを起こしにくく、複雑なシナリオにもフィットします。本日の紹介は、最も基本的な回帰問題の解法に過ぎず、分類問題では、式が若干異なりますので、この部分の内容は次回に紹介します。
GBDTオープンソースコード:https://github.com/gradient_boosting_decision_tree




