自適應(yīng)提升與梯度提升

自適應(yīng)提升

提升方法通過前一個學(xué)習(xí)器所犯的錯誤來訓(xùn)練下一個學(xué)習(xí)器,是一種串行方法。關(guān)于提升算法有很多,最具代表性的是AdaBoost算法。

集成學(xué)習(xí)-組合多學(xué)習(xí)器中介紹的Adaboost方法,樣本按概率被抽取作為訓(xùn)練子學(xué)習(xí)器的訓(xùn)練集。而每個子學(xué)習(xí)器根據(jù)前一子學(xué)習(xí)器的結(jié)果誤差更新樣本抽取概率,使被誤分類的實例在后面的訓(xùn)練中得到更多的重視。

分類問題中,Adaboost方法還可以采用全樣本數(shù)據(jù)訓(xùn)練每一個基學(xué)習(xí)器,根據(jù)前一子學(xué)習(xí)器的結(jié)果改變樣本數(shù)據(jù)的權(quán)重,來使被誤分類的實例得到更多重視。具體流程如下:

訓(xùn)練數(shù)據(jù)集T={(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)},其中x_i\in X \subseteq R^Ny_i\in Y=\{-1,+1\}。
1)初始化訓(xùn)練數(shù)據(jù)權(quán)值分布
D_1=(w_{11},\cdots,w_{1i},\cdots,w_{1N}), w_{1i} = \frac1{N},i=1,2,\cdots,N
2)對m=1,2,\cdots,M
??(a)使用具有權(quán)值D_m的訓(xùn)練集學(xué)習(xí),得到基分類器
G_m(x):X\to \{-1,+1\}
??(b)計算G_m(x)在訓(xùn)練集上的分類誤差率
e_m=P(G_m(x_i)\neq y_i)=\sum_{i=1}^Nw_{mi}I(G_m(x_i)\neq y_i)
??(c)計算G_m(x)的系數(shù)
\alpha_m=\frac12\log \frac{1-e_m}{e_m}
??(d)更新訓(xùn)練集的權(quán)重分布
D_{m+1}=(w_{m+1,1},\cdots,w_{m+1,i},\cdots,w_{m+1,N})
w_{m+1,i}=\frac{w_{mi}}{Z_m}\exp(-\alpha_my_iG_m(x_i))
Z_m=\sum_{i=1}^N w_{mi}\exp(-\alpha_my_iG_m(x_i))是規(guī)范化因子
3)構(gòu)建基本分類器的線性組合
f(x)=\sum_{m=1}^M\alpha_m G_m(x)
得到最終分類器G(x)=sign(f(x))

回歸問題情況下,則對上一個學(xué)習(xí)器擬合結(jié)果的殘差進行學(xué)習(xí),得到后面的學(xué)習(xí)器。

基學(xué)習(xí)器根據(jù)具體問題選定。一般常見的是提升樹算法,adaboost的最決策樹一般被認為是最好的機器學(xué)習(xí)算法之一。
而針對不同問題的提升樹,主要區(qū)別在于使用的損失函數(shù),包括回歸問題的平方誤差,分類問題的指數(shù)誤差,或一般決策問題的一般損失函數(shù)。

梯度提升

提升樹在學(xué)習(xí)過程中,當(dāng)損失函數(shù)是平方損失和指數(shù)損失時,計算相對簡單。但對一般損失函數(shù),往往每一步優(yōu)化不那么容易?;诖耍荻忍嵘椒?,通過學(xué)習(xí)前一個子學(xué)習(xí)器殘差的負梯度,得到后面的學(xué)習(xí)器。典型的就是GBDT算法(回歸樹)。

訓(xùn)練數(shù)據(jù)集T={(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)},其中x_i\in X \subseteq R^N,y_i\in Y \subseteq R,損失函數(shù)L(y,f(x)),f(x)為回歸樹。

1)初始化f_0(x)=\arg\min_c\sum_{i=1}^N L(y_i,c)
2)對m=1,2,\cdots,M
??(a)對i=1,2,\cdots,N,計算
r_{mi}=-[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i) }]_{f(x)=f_{m-1}(x)}
??(b)對r_{mi}擬合一個回歸樹,得到第m棵樹,共有J個葉子結(jié)點,其葉子結(jié)點區(qū)域為R_{mj}j=1,2,\cdots,J。
??(c)對j=1,2,\cdots,J,計算
c_{mj}=\arg\min_c \sum_{x_i\in R_{mj}}L(y_i,f_{m+1}(x_i)+c)
??(d)更新f_m(x)=f_{m-1}(x)+\sum_{j=1}^Jc_{mj}I(x\in R_{mj})。
3)得到最終回歸樹f(x)=f_M(x)=\sum_{m=1}^M\sum_{j=1}^Jc_{mj}I(x\in R_{mj})

對比

推薦GBDT樹的深度一般為6,對比DecisionTree/RandomForest需要把樹的深度調(diào)到15或更高。原因在于Bagging主要關(guān)注降低方差,并行地訓(xùn)練很多不同的分類器的目的就是降低這個方差。因此它在不剪枝的決策樹、神經(jīng)網(wǎng)絡(luò)等學(xué)習(xí)器上效用更為明顯。

Boosting主要關(guān)注降低偏差,因此Boosting能基于泛化性能相當(dāng)弱的學(xué)習(xí)器構(gòu)建出很強的集成。Boosting來說,每一步我們都會在上一輪的基礎(chǔ)上更加擬合原數(shù)據(jù),所以可以保證偏差,所以對于每個基分類器來說,問題就在于如何選擇variance更小的分類器,即更簡單的分類器,所以我們選擇了深度很淺的決策樹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容