Boosting Ensemble: 機器學習中,Ensemble model除了Bagging之外,更經常使用的是Boosting。與Bagging不一樣,Boosting中各個模型是串行的。其思想是,後面的model,要從前面models的預測中結果中,試圖將錯誤糾正。下面兩張圖能夠看出兩者的異同:算法
在第一個模型訓練以前,各個Training Examples出如今本次訓練中的機率相同;訓練後的模型,若是在某些數據的預測上出現錯誤,則這些數據點出如今下個模型中的機率將會被提高,反之預測正確的數據點的機率將會被下調。最終,再將各個模型的輸出作合併,給出最終Ensemble模型的預測。該算法的關鍵點是去設定‘什麼時候中止迭代’,由於無休止的糾錯最終將致使Overfitting.機器學習
Gradient Boosting Decision Tree(GBDT): 該算法改版自Boosting Ensemble,每一個model採用的都是Decision Tree,同時融入了Gradient Descent的思想。首先,咱們想象在最基礎的Boosting Ensemble中,當第一個模型訓練後,獲得一個預測值h1(X),而指望的輸出output爲Y,則兩者的差值(殘差:Residual)爲:學習
R1(X)=Y-h1(X)spa
那若是,咱們可以構建一個模型model2,去輸出R1(X),那麼Model1與Model2的輸出之和爲Y:blog
Y=h1(X)+R1(X)ci
固然,擬合出R1(X)是最理想的狀況,但實際中卻只能輸出近似值r1(X),將其累加到第一個model的輸出上,咱們就獲得了model2的輸出:it
h2(X)=h1(X)+r1(X)io
這是咱們又獲得了R2(X)爲Y與h2(X)的差值。循環往復,最終的輸出將會不斷逼近Y。但,這和Gradient有什麼關係呢?基礎
該模型在第n個模型上輸出的hypothesis是:model
hn(X)=hn-1(X)+rn-1(X)
若是把殘差Residual展開:
hn(X)=hn-1(X)+(y-hn-1(X))
在Gradient Descent裏面,咱們知道,Cost Function被定義爲:
當m爲1時,咱們很容易看出,hn(X)的值是在hn-1(X)的基礎上,減去了一倍的梯度(learning rate α=1),因此該算法被冠上了Gradient的名字,不無道理哦。