Adaboost + CARThtml
用 CART 決策樹來做爲 Adaboost 的基礎學習器git
可是問題在於,須要把決策樹改爲能接收帶權樣本輸入的版本。(need: weighted DTree(D, u(t)) )算法
這樣可能有點麻煩,有沒有簡單點的辦法?儘可能不碰基礎學習器內部,想辦法在外面把數據送進去的時候作處理,能等價於給輸入樣本權重。(boostrapping)app
例如權重 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)) 儘可能小。3d
從 Adaboost 到 general boostinghtm
負梯度擬合的優點就是能夠在通用框架下擬合各類損失偏差,這樣分類迴歸都能作。在 ensemble http://www.javashuo.com/article/p-deldtqxd-s.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 作分類的詳解:http://www.javashuo.com/article/p-coowgizi-dv.html