Adaboost + CART
用 CART 決策樹來作為 Adaboost 的基礎學習器
但是問題在於,需要把決策樹改成能接收帶權樣本輸入的版本。(need: weighted DTree(D, u(t)) )
這樣可能有點麻煩,有沒有簡單點的辦法?盡量不碰基礎學習器內部,想辦法在外面把數據送進去的時候做處理,能等價於給輸入樣本權重。(boostrapping)
例如權重 u 的占比是30%的樣本,對應的 sampling 的概率就設定為 0.3。
每一個基礎學習器在整體模型中的重要性還是用 αt 來衡量(gt 在 G 中的系數)。另外,這個方法中仍然是 boosting, CART 一定不能太強(剪枝比較多、簡單點就限制樹高度;訓練每棵樹都只用一部分訓練數據)
極端情況,限制樹的高度只有1,那就直接退化成 decision stump ,也就不用做 sampling 了(因為幾乎不會只用 stump 就能讓 error rate = 0)
GBDT
梯度提升樹(GBDT)也是一種前向分步算法,但基礎模型限定了使用 CART 回歸樹。在學習過程中,第 t 輪迭代的目標是找到一個 CART 回歸樹 gt(x) 讓本輪的損失函數 L(y, Gt(x)) = L(y, Gt-1(x) + gt(x)) 盡量小。
從 Adaboost 到 general boosting
負梯度擬合的優勢就是可以在通用框架下擬合各種損失誤差,這樣分類回歸都能做。在 ensemble https://www.cnblogs.com/chaojunwang-ml/p/11208164.html 分析過,這里再回顧一遍。
統一每次更新樣本權重的形式(gt-1(x) 正確分類的樣本權重減小,錯誤分類的樣本權重增加)
那么根據遞推公式,unT+1 可以從 un1 推得,而表達式中正好可以發現 G(x) 的 logit(voting score)。
而 yn * voting score 可以理解為點到分割平面的一種距離衡量,類似於 SVM 中的 margin,只不過沒有歸一化。而模型的訓練目標就是想要讓 margin 正的越大越好,等價於讓 unT+1 越小越好。也就是說,adaboost 中所有樣本的 un 之和會隨着時間步推移越來越小(讓每一個點的 margin 都越來越正、越來越大)。
這樣就可以看出 adaboost 整體模型的要最小化的目標函數,是所有時間步的所有樣本權重之和,即0/1損失函數的upper bound(指數損失函數)。
就用梯度下降(泰勒一階展開)來實現這個最小化(不同的是,這里要求 loss 函數對 gt(x) 函數的梯度,approximate functional gradient)。把1/N拿進去,紫色部分湊成 unt ,對剩下的exp部分用泰勒公式一階逼近,整理得到最終要對 h 求梯度的目標函數。
那就來看一下,發現最小化整體模型的目標函數,就等價於最小化 Einu(t) ,就是要優化基礎分類器(也就是說,adaboost中前向分步訓練基礎分類器,其實正是在為整體模型的梯度下降優化找最好的gt(x) )
再來就是要確定學習率,能不能每步都找到一個最好的學習率(短期內比固定的學習率下降的快)?steepest descent:loss 對其求導並另為0。得到的最好的學習率,正是 adaboost 中的 αt
從梯度下降的角度再次總結 adaboost 做分類
gradient boosting
負梯度擬合的擴展,不只用指數損失函數,用其他的損失函數(符合平滑條件)也可以。從目前已經達到的 G(xn) ,向某一個方向(h(xn))走一小步(η),使得新的 logit 與給定的 yn 之間的某種 error 變小。
以平方誤差舉例,error = (s-y)2
如果在某處往某個方向走了一小步,就要乘上 gradient 在那個地方的分量(error 對 s 偏微分,在sn 處取值)。然后就是找一個 h,讓下面式子的第二項越小越好(第一項與h無關)。直接的想法是:如果 s-y 是正的,就給一個負的 h ;如果 s-y 是負的,就給一個正的 h 。那么就讓 h 取到 s-y 的負方向。
但 h 的大小呢?如果不加約束,h(xn) = - ∞ * (sn-yn) ,可是我們這里找 h 只是要找一個方向,所以步長靠 η 決定。加一個正則化懲罰項即可。然后湊一個 (h(xn) - (yn - sn))2 出來,配上一個和 h 無關的常數項。要最小化這個式子,就是要令 h(xn) 和 (yn - sn) 之間的均方誤差最小,那就是以殘差 residual 為目標訓練一個回歸器。
然后決定 η 的大小,單變量最優化問題。但這里除了求偏微分令其等於0,還有一種簡潔的求法。把 gt(xn) 看成是feature,residual 看成簡單線性回歸的目標, 求這個一維的權重。
optimal η 的解為
加入 CART 作為 base learner,總結一下 GBDT
關於 GBDT 做分類的詳解:https://www.cnblogs.com/pinard/p/6140514.html