AdaBoost 和 Real Adaboost 總結
AdaBoost
AdaBoost, Adaptive Boosting(自適應增強), 是一種集成學習算法(ensemble learning),由Yoav Freund 和 Robert Schapire 於1995年提出。其思想是通過多個簡單的弱分類器集成一個具有較高准確率的強分類器。
經典AdaBoost算法過程
輸入:訓練數據
,其中
分別對應着樣本特征和樣本標簽
輸出:最終的強分類器
初始化:樣本權重分布
循環:t=1,...,T
....-針對權重樣本訓練弱分類器
....-計算弱分類器的錯誤率,
是示性函數
....-計算弱分類器的權重
....-使用當前的弱分類器更新樣本的分布,其中
是歸一化常數
最終的前分類器為:
AdaBoost過程示意圖

更新迭代原理
從直觀上理解,首先,當錯誤率$\epsilon$越大時,分類器的權重$\alpha$越小,這符合一般解釋及分類器性能越高置信度也就越大,在最終的表決中所占比重也就越大。其次,在新樣本分布的更新過程中,分類正確的樣本在下次分類器學習中作用越小,而分錯的樣本在下次分類器學習中的作用越大,這樣可以是新的分類器設計更集中在之前錯分的樣本分類上,使整體的分類性能提高。
從理論上推導:
AdaBoost采用的是指數誤差函數,其中D是樣本的分布,
表示樣本的標簽,
表示在分布D上計算期望。
i. 首先是權重的更新,希望分類器產生的總體指數誤差最小,則

其中表示某個分布上的概率分布函數。於是得到

即分類器權重的更新公式
ii. 接下來將推導分布的更新:
已獲得前個分類器,我們希望獲得第t個分類器能糾 正之前錯誤分類,使指數誤差函數最小。

泰勒展開:

這是因為

令表示一個新的分布,則上式可以寫作:

類似的

於是得到分布的更新公式。
AdaBoost的誤差上界
在更新分布時有歸一化常數

指數誤差函數:

AdaBoost分析
雖然在AdaBoost中對弱分類器沒有限制,可以是基於多維特征的決策樹,SVM等,但通常每個弱分類器都是基於所有特征中某一維構建的,並且輸出結果只有+1,-1兩種(二分類問題),所以在訓練時每一輪迭代相當於挑選最好的特征。
Real AdaBoost
Real AdaBoost 過程:
給定訓練集:
訓練集樣本的初始分布:
循環t=1,2,...,T: (T是弱分類器的個數)
.... - 將每一維特征的取值空間划分為若干個不相交的
.... - 計算在每個子空間上上正負樣本的權重

.... - 計算每一個弱分類器的輸出,
,其中
是一個很小的正常量用於平滑。
.... - 計算歸一化因子
.... - 選擇Z最小的的弱分類器作為該輪迭代選出的弱分類器
.... - 更新樣本分布
最終的強分類器為:, b是閾值。
Real AdaBoost 的理解
相對於AdaBoost而言,Real AdaBoost中弱分類器不再僅輸出{+1,-1},而是輸出[-1,1]間的實數,所以稱為Real AdaBoost, 我們可以認為輸出的值其實就是AdaBoost里的權重加權后的結果,即,所以Real AdaBoost也符合AdaBoost的框架
Real AdaBoost 的每個弱分類器設計是一種決策樹的簡單形式,而每個葉子節點判斷依據是將該區間樣本分類為樣本數最多的那一類。簡單的閾值化函數適用於線性可分情況,而對於線性不可分情形,采用這種分區間,即決策樹的形式能取得較好的性能。
每次迭代都希望尋找最小分類誤差的分類器,而Z值越小表示在對應樣本分布下該分類器對應的正負樣本個數差別越大,分類結果的置信度越高
下面我們從理論上分析迭代過程:
指數誤差函數為:

每次迭代的目標是尋找一個誤差最小的分類器,即最小,那么由AdaBoost框架得到

其中是在該維度上分成N個區間后,落在第j個區間分類器輸出值,為了使Z最小,可以得到

此時Z取得最小值

為了使輸出函數更加平滑,也為了抑制差距太大或者一方為0的情形,引入平滑因子,一般情況下令
Adaboost和Real Adaboost中弱分類器的區別示意圖:

matlab實現Real AdaBoost
References:
《機器學習》,周志華著
李志軒,復雜場景中監控視頻事件檢測算法[D],北京郵電大學,2014