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每次根據上一輪訓練誤差給每個樣本更新權重,其中正確分類的樣本的權重就除以,而錯誤分類的樣本權重則乘以。如果把設為, 而使用0-1損失,那麼原有模型的加權損失就剛好是1/2,在加權之後的數據上分類效果最差。
Adaboost給樣本更新權重的過程其實可以看Gradient descent的過程。,其中yn是第n個樣本的觀測值,gt是第t輪訓練的預測值。令,那麼
其中的=1/(樣本量N), 可以寫成向量點積形式:,這個剛好是支持向量機的中對margin的定義。margin越大越好,因此權重越小越好,把所用的樣本n都加起來就得到了adaboost的exponential loss function:.可以看國立台灣大學的機器學習技法課程視頻中的具體推導過程,有了損失函數,可以證明就是Steepest Descent的learning rate,gt就是相應的gradient。機器學習技法簡單地講boosting + exp loss -&> adaboost那麼只要把這裡的損失函數換成不同的形式,比如log hinge 等等,均可以得到不同形式的boost版本。
題主想問的應該是gradient boostAdaBoost可以看做loss function是 exponential error的gradient boost如果loss function是其他形式,也可以一樣推導,只是不叫AdaBoost罷了。
我同意 @肖寒 評論。AdaBoost知識Boosting的一種方法,請查看博客:
第06章:深入淺出ML之Boosting家族
推薦閱讀:
※怎麼從通俗意義上理解邏輯回歸的損失函數?
※Metropolis Hasting演算法如何推導出Gibbs Sampling?
※模式識別與智能系統專業研究生找工作好找么?
※adaboost的樣本權值如何對弱分類器產生影響?