[ML]勾配ブースト

:より転載https://medium.com/@cwchang/gradient-boosting-%E7%B0%A1%E4%BB%8B-f3a578ae7205

学習アルゴリズムの種類を後押しで、グラデーションブーストは常勝軍、その背後に簡単にアイデアに、この記事の試行での競争の多くは、あまりにも多くの数学を必要としない場合は、このモデルを導入することを望んで、あります。無知によって制限され、物語の不正確ならば、私を修正すること自由に感じなさい。 

グラデーションブースト対線形回帰(PC:文献[1])

何がブーストされます

機械学習では、ブーストを組み合わせて弱学習の基であり、強力な学習方法を得られるように、すべてのエラーを改善しようと、核となるアイデアは、一般的に「三ばか大将が1よりも優れている整流する。」されます。

弱い学習者は「引用1時よりも良い」モデルを指し、このモデルの優れた性質が含まれます:低複雑で、低コストの訓練のような簡単なオーバーフィッティングではない  意思決定切り株、このモデルは、実際にある(決定切り株?)深さ制限の層における決定木は、想像することができ、だけ迅速に予測するために訓練することができ、見積もりよりも作ることができますツリーはおそらく、非常に良いではありません決定をカットバックが、それは自然の弱仮説を満たすことができますより良いです。

ベース学習者としての弱仮説を後押しすると、離れてすぐに多くのモデルを結合するように訓練、複雑性の低い弱仮説も、私たちのために良好な特性をもたらした:良いオーバーフィッティングを持つことができる強力な学習者の究極の組み合わせを抵抗。

グラデーション後押し

これはグラデーションが所有ブースト一般的な性質に加えて、後押しご紹介します、また、多くの利点があります。

  1. ブーストグラデーションは、上の多くの異なった(微分)損失関数で使用することができます
  2. 別の損失関数を使用して、我々は回帰/分類/ランキングなどさまざまな問題に対処することができます

回帰の例は、ブーストグラデーションを導入して私たちは、その後、簡単な質問で始まり、同じ概念が回帰に限定されるものではなく、簡単に別の損失に、別のタスクに促進することができます。

回帰に例えば

与えられた訓練データでは特性X yを使用してターゲットを予測する:私たちは仕事を持っていると仮定します。同時に、我々は上の手を持っている  回帰ツリー  、それは、上記の決定切り株のようにこの制限を例えば弱学習者の役割を(再生できるように(x)は、我々が意図的にその複雑さを制限予測モデルF次の表に示すようにツリーの最大深さは、)層です。

 

次に私たちがやりたい、より良い予測モデルを訓練するために、知られているF(X)を使用することですが、プロセスでは、我々は以下のゲームの二つの規則を遵守する必要があります。

  1. 我々は、その内部アルゴリズムまたはパラメータを変更せずにのみ、その出力値を用いて、ブラックボックスとしてモデル、すなわち、F(X)への改質を行うことができません。
  2. また、我々は再訓練回帰ツリーモデルH(X)を活用することができ、元のF(x)は、所望のFに追加(X)+ H(x)がオリジナルモデルFよりも優れた(X)。

「より良い予測」にするために、我々は最初に使う  平均二乗エラー(MSE)を  この場合には、モデルの長所と短所を定量化するために、MSE F(x)は62.74です。

残留 - その後、我々はまた、実際の情報とF(X)との差を計算することができます。どこでそれがどこまで取得に落ちる - そして、小さいMSEの代表者に加えて、しかし、ある程度の「より良い予測は、」また、異なるX障害のそれぞれの新しいモデル(残留)を小さくすることができることを願っています!次の表予測F(x)は、xと残差の各アウトリストされています。

上記2つのルールが、残差を計算した後、直感的なアプローチは、回帰ツリーを使用することで残留H(X)、すなわちように予測するために訓練された
時間(X)≈y-F( X)を、 我々場合回帰ツリーは、その後、H(x)が設定されていると我々の目標に応じて、よくやった、このタスクを置くことができ、我々は、F(x)は+ H(X得ることができる必要があります )≈yを。私たちは、テストするために、上記の例を継続して使用します:

MSEでは、新しいモデルF MSEの(X)+ H(x)は、前の62.74に比べて、32.82であり、実際に良い結果であると同時に、我々は、最もXに見ることができます、F(X)+ H(x)の誤りは実際に小さくなっています。

これまでのところ、グラデーションは「直感的思考」は、ほぼ同じ持って後ろに後押し:

  1. ターゲットとして残留F(X)の使用、トレーニングH(X)
  2. 残留、訓練されたM(X)の標的としてF(X)+ H(X)を使用し
  3. 残差の標的としてF(X)+ H(X)+ M(X)を使用して(X)新しいNを再訓練します
  4. ...数回繰り返し...
  5. 最後に、F(X)+ H(X)+ M(X)+ N(X)+ ...最終的なモデルであります

また、我々は簡単にデータの寸法特長まで、上記の例を拡張することができ、あるいは我々は、ベース学習者の回帰ツリーを置き換える他のポンプを使用することができます。

残留二乗誤差との関係

上記の例は単純なアプローチのグラデーションを示しているが後押しが、二つのことは明らかではありません。

  1. 為什麼我們明明想優化的是 MSE 卻著手於 Residual,除了「知錯能改」這樣的直覺外,有沒有能數學化的理由?
  2. 既然我們用的是 Residual,為什麼不叫 Residual Boosting 而要叫 Gradient Boosting,說好的 Gradient 呢?

在回答這兩個問題前,我們先對要優化的 MSE Loss 稍做手腳,首先把 Squared Error 除以二:

L(y, F(x))= (y−F(x))²/2

接著對 L(y, F(x)) 中的 F(x) 做偏微分,得到

∂L/∂F = −(y−F)

也就是說,在使用 MSE Loss 的情況下,Residual 正是 Loss 對 F 的 Gradient 取負號(在 x 處取值)。

在繼續說下去之前,我們稍微岔開話題介紹一下 Gradient Descent。

Gradient Descent 101

Gradient Descent 是一個在最佳化領域相當常見的迭代方法,用於尋找「可微分函數」的局部最小值,它的做法是這樣的:

  1. 假設我們要最佳化的目標函數是 L(x),例如要找 L(x) 的最小值
  2. 隨機選取一個起始點,例如從 a 出發
  3. 從 a 沿著 −∇L(a)走一小步,即 a−γ∇L(a)
    此處的 ∇L(a) 代表的是 L 在 a 上的 Gradient
    那麼對於一個夠小的 γ,此處的函數值將小於等於 L(a)
  4. 換句話說,對於一個夠小的 γ,我們有
    L(a)≥L(a−γ∇L(a))
  5. 令 a−γ∇L(a) 為新的出發點,重複 3–4
  6. 根據這樣的方法,從 a 開始一步一步走(迭代),在 γ 選取適當的情況下,我們可以找到 L(x) 的局部最小值

在許多機器學習的演算法中,Gradient Descent 扮演的角色是迭代地找到最好的參數:假設需要優化損失函數 L(θ) 是參數 θ 的函數,那麼對於某些品性良好的 L(θ),我們只需要隨機地找一個出發點 θ,並沿著 Gradient 的方向持續更新 θ,便能降低損失函數的值。而這個「沿著 Gradient 的方向更新 θ 」的過程,其實也就是我們常說的 Training。

Gradient Descent 與 Gradient Boosting

了解 Gradient Descent 可以用於「優化」目標函數的值之後,我們就可以嘗試回答先前提到的問題:「為何用 Residual 來優化 MSE?」、「Gradient Boosting 的 Gradient 是從哪來的?」。

前面提到,Residual 正是 Loss 對 F 的 Gradient 取負號:

y−F=−∂L/∂F

如果我們把 H(x)=F(x)+h(x) 視作對 F(x) 的「更新」,那麼根據 h(x)≈y−F(x)=−∂L/∂F,其實我們做的正是上述 Gradient Descent 中的第三步:

H(x)=F(x)−γ∂L/∂F,
where γ=1

這就回答了為什麼我們能夠透過 Fit Residual 來優化 MSE:因為從 F(x) 沿著這個方向走得到的 H(x) 能夠降低損失函數 MSE 的值。

在一般的機器學習演算法中,我們透過對演算法的參數 θ 做 Gradient Descent 以學出能使「損失函數」達到局部最小值的參數。而在 Gradient Boosting 中,我們的參數其實就是模型的預測值 F(x),並且我們透過 Base Learner 來學出近似的−∂L/∂F。

當我們從 Gradient Descent 的角度來看 Residual 之後,事情就變得有趣一些了:我們知道 Residual 是 Squared Loss 的 Gradient,那麼如果衡量模型優劣的損失函數被換掉了,只要它還是滿足 Gradient Descent 需要的好性質,那麼我們一樣可以計算這個 Loss 對 F(x) 的 Gradient,並讓這個 Gradient 作為 Base Learner 的學習目標。這也是為什麼不叫 Residual Boosting 而叫 Gradient Boosting — 只是在 MSE 的情況下,負 Gradient 剛好是 Residual 而已。

寫在後面

  1. 在第一個例子中的 F(x)+h(x)+m(x)+… 這樣能夠加在一起的模型,一般我們稱之 Additive Models
  2. Gradient Descent 中控制步伐大小的 γ 稱作 Learning Rate,不見得要用 1 來 Update,只是在我們的例子中用 1 比較方便而已
  3. 上述的 Gradient Boosting 只是一個雛形,實際上我們還能透過使用 Adaptive Learning Rate、或是類似 Random Forest 使用的 Data Subsampling 來進一步優化這個演算法。

おすすめ

転載: www.cnblogs.com/shiyublog/p/10992609.html
おすすめ