Adaboost可不可以使用其他的損失函數?

Adaboost是通過最小化指數損失,得到基分類器的權重和對樣本分布進行更新。那麼,Adaboost 可不可以使用其他損失函數,比如 log loss?因為對數幾率回歸使用log loss是問題使然。那麼,Adaboost使用指數損失是從哪方面?

個人理解,使用其他損失函數比如log loss,Adaboost求解不出來每個基分類器的權重。不然對數幾率回歸也不用梯度下降了。


我對AdaBoost的了解僅限於維基百科上的介紹。

維基百科頁面上Derivation一節中的推導,是依賴於指數損失的,另外還依賴於每個弱分類器都是二分類器。在這種模型中,當然只能使用指數損失。

不過說實話,AdaBoost是我見過的唯一使用指數損失的模型,指數損失真不能算是一種典型的損失函數。維基百科在下面的幾節中提到了一些更常用的損失函數。如果要使用其它損失函數,模型的推導過程必須做出修改。修改後的模型是不是還能叫做AdaBoost,我就不確定了。


結論: AdaBoost 只能是指數損失, Boosting 框架可以使用其他損失函數。

你這個問題有些囧。 AdaBoost 及其變種都是指數損失,這是這個方法的根本。但 AdaBoost 不是唯一的 Boosting 方法,其他 Boosting 方法可以用其他的損失函數,對應其他演算法,如 LogitBoost 等等。


Gradient boosting是ensemble learning中降低bias的方法之一, Adaptive boost (ADABOOST) 使用boosting + 指數損失,實質上可以看作Steepest gradient descent演算法的實現。在boosting中也可以使用其他的損失函數,比如gradient boost for regression使用的是平方誤差。

adaboost每次根據上一輪訓練誤差給每個樣本更新權重u_{t+1},其中正確分類的樣本的權重就除以lambda,而錯誤分類的樣本權重則乘以lambda。如果把lambda設為sqrt{frac{1-e_t}{e_t} } , 而e_t
使用0-1損失,那麼原有模型的加權損失就剛好是1/2,在加權之後的數據上分類效果最差。

Adaboost給樣本更新權重的過程其實可以看Gradient descent的過程。

u_{t+1}=u_t*lambda^{-y_n*g_t},其中yn是第n個樣本的觀測值,gt是第t輪訓練的預測值。

alpha_t=ln(lambda),

那麼

u_{t+1}=u_0*e^{-y_n*sum_{1}^{t}{ alpha_t*g_t}}

其中的u_{0}=1/(樣本量N), y_n*sum_{1}^{t}{alpha_t*g_t} 可以寫成向量點積形式:y_n(alphacdot g),這個剛好是支持向量機的中對margin的定義。margin越大越好,因此權重u_{t+1}越小越好,把所用的樣本n都加起來就得到了adaboost的exponential loss function:1/N*sum_{n=1}^{N}{x} e^{-y_n*sum_{1}^{t}{ alpha_t*g_t}}.

可以看國立台灣大學的機器學習技法課程視頻中的具體推導過程,有了損失函數,可以證明alpha_t就是Steepest Descent的learning rate,gt就是相應的gradient。

機器學習技法


簡單地講boosting + exp loss -&> adaboost

那麼只要把這裡的損失函數換成不同的形式,比如log hinge 等等,均可以得到不同形式的boost版本。


題主想問的應該是gradient boost

AdaBoost可以看做loss function是 exponential error的gradient boost

如果loss function是其他形式,也可以一樣推導,只是不叫AdaBoost罷了。


我同意 @肖寒 評論。AdaBoost知識Boosting的一種方法,請查看博客:

第06章:深入淺出ML之Boosting家族


推薦閱讀:

怎麼從通俗意義上理解邏輯回歸的損失函數?
Metropolis Hasting演算法如何推導出Gibbs Sampling?
模式識別與智能系統專業研究生找工作好找么?
adaboost的樣本權值如何對弱分類器產生影響?

TAG:機器學習 | adaboost |