1.損失函數
上一篇文章簡單介紹了集成學習和弱學習器的理論概率,最後給出了AdaBoost的僞代碼與實現步驟,思路比較清晰,這篇文章主要針對分類器的重要性α與分佈權重Dt的更新規則進行推導.推導之前先看一下常見的損失函數(損失函數在SVM(3)裏介紹過,這裏只給出損失函數形式):
損失函數(loss function)用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型就更魯棒。
2.AdabBoost的損失函數
AdaBoost算法有多種推導方式,最常見的是基於‘加性模型’,即基學習器的線性加權:
最小化損失函數(指數損失):
其中f(x)爲真實值,H(x)爲真實值,二者均爲二值型(-1,1),若H(x)能令損失函數最小化,則考慮上式對H(x)的偏導:
令導數爲0,求解:
因此有:
這意味着sign(H(x))達到了貝葉斯最優錯誤率,也就是說指數損失函數最小化時,分類錯誤率也將最小.
3.分類器重要性α更新規則
推導前先回顧一下算法的僞代碼:
開始論證~在AdaBoost中,第一個分類器h1是通過基學習算法用於初始數據分不而得,此後迭代生成ht和αt,當基分類器ht基於Dt產生後,該基分類器權重αt應使得αtht最小化損失函數.
當前基學習器分類錯誤的概率:
對損失函數求導:
令導數爲0得:
恰好對應僞代碼的第六步.
4.樣本權重Dt更新規則
AdaBoost在獲得Ht-1之後樣本分佈將進行調整,增加分類錯誤樣本的權數,減少分類正確樣本的權數,使下一輪基學習器ht能夠糾正Ht-1的一些錯誤,理想的ht能夠糾正Ht-1的全部錯誤,即最小化:
e^x在x=0處的泰勒展開:
將損失函數中ht(x)部分泰勒展開得(此處忽略了餘項):
因爲f(x),h(x) ∈ {-1,1}
此時理想的基學習器h(t)應滿足:
這裏運用對偶將min轉化爲max,有點類似支持向量機求最優間隔的方法,而且在優化問題中加入常數不影響最終的結果.
這裏Dt表示一個分佈:
這裏其實就大概瞭解了爲什麼要在更新Dt時下面引入zt去規範化分佈.
根據數學期望定義,這裏等價於:
這裏注意求期望的x範圍不是D,而是Dt.
由於f(x),h(x) ∈ {-1,1}:
將上式整理爲1個式子,這裏I(x)爲示性函數:
則理想的ht:
由此可見理想的ht是在分佈Dt下最小化分類誤差,因此,弱分類器基於Dt來訓練,且錯誤率應1小於50%(僞代碼第五步),考慮Dt與Dt+1的關係:
這裏對應僞代碼第七步的權值更新.
總結:
通過這兩篇文章的理論推導,AdaBoost的大致過程已經比較清晰了,證明步驟基本都是參考西瓜書,只是對其中一小部分加了一些小的註解,有問題歡迎大家交流~下一節將就實例python編碼看一下針對具體的數據,集成學習是如何一步一步更新權值縮小泛化誤差的.