當前位置:
首頁 > 最新 > 機器學習之自適應增強

機器學習之自適應增強

1.Adaboost簡介

Adaptive boosting(自適應增強)是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的弱分類器,然後把這些弱分類器集合起來,構成一個強分類器,Adaboost可處理分類和回歸問題。了解Adaboost演算法之前,我們先學習下Boost(增強)Adaptive(自適應)的概念。

1.1集成學習之Boosting

集成學習不是單獨的機器學習方法,而是通過構建並結合多個機器學習器來完成任務,集成學習可以用於分類問題集成、回歸問題集成、特徵選取集成、異常點檢測集成等方面。其思想是對於訓練數據集,我們通過訓練若干個個體學習器,通過一定的結合策略形成一個強學習器,以達到博採眾長的目的。在機器學習之隨機森林中我們已經用到集成學習中的bagging方法,此處我們詳細介紹集成學習中的Boosting方法。

從上圖可以看出,Boosting演算法的工作機制是從訓練集用初始權重訓練出一個弱學習器1,根據弱學習器的學習誤差率來更新訓練樣本的權重,使得之前弱學習器1中學習誤差率高的訓練樣本點權重變高。然後這些誤差率高的點在弱學習器2中得到更高的重視,利用調整權重後的訓練集來訓練弱學習器2。如此重複進行,直到弱學習器數達到事先指定的數目T,最終將這T個弱學習器通過集合策略進行整合,得到最終的強學習器。

1.2Adaptive自適應

Adaptive(自適應)體現在前一個基本分類器分錯的樣本會得到加強,加權後的全體樣本再次被用來訓練下一個基本分類器。同時在每一輪中加入一個新的弱分類器,直到得到某個預定的足夠小的錯誤率或達到預定的最大迭代次數。

1.3Adaboost流程

結合Adaptive(自適應)Boost(增強)概念,我們來具體介紹下Adaboost迭代演算法流程。

初始化訓練數據的權值分布。如果有N個樣本,則每一個訓練樣本最開始都被賦予相同的權值1/N。

訓練弱分類器。訓練過程中,如果某個樣本點已經被準確的分類,那麼在構造下一個訓練集中,他的權值會被降低。相反,如果某個樣本點沒有被準確分類,那麼它的權值就會得到提高。權值更新過的樣本集會被用於訓練下一個分類器,整個訓練過程如此迭代的進行下去。

多個弱分類器組合成強分類器。各個弱分類器的訓練過程結束後,增加分類誤差率小的弱分類器的權重,使其在最終的分類函數中起著較大的決定作用;而降低分類誤差率大的弱分類器的權重,使其在最終的分類函數中起著較小的決定作用。

那麼我們便要思考,如何計算學習誤差率e?,如何得到弱學習器權重係數α?,如何更新樣本權重D?,使用哪種結合策略?我們將在Adaboost分類和回歸演算法中給出詳細解答。


假設我們的訓練樣本為

訓練集在第k個弱學習器的輸出權重為

Adaboost分類演算法中包含二元分類和多元分類問題,多元分類問題為二元分類的推廣。為方便推導,此處我們假設是二元分類問題,輸出類別為{-1,1}。那麼第k個弱分類器Gk(x)在訓練集上的學習誤差率

對於二元分類問題,第k個弱分類器Gk(x)的權重係數

從上式可以看出,如果分類誤差率ek越大,則對應的弱分類器權重係數αk越小。也就是說,誤差率越大的弱分類器權重係數越小。

假設第k個弱分類器的樣本集權重係數為D(k)=(wk1,wk2,…,wkm),則更新後的第k+1個弱分類器的樣本集權重係數如下所示,此處Zk是規範化因子。

從wk+1,i計算公式可以看出,如果第i個樣本分類錯誤,則yiGk(xi)權重係數和樣本權重更新公式,我們在下面講Adaboost損失函數時會詳細介紹。

最後Adaboost分類問題採用加權平均法結合策略,最終的強分類器為

對於Adaboost多元分類演算法,其實原理和二元分類類似,最主要區別在弱分類器的係數上。比如Adaboost SAMME演算法,它的弱分類器的係數如下所示,其中R為類別數。從下式可以看出,如果是二元分類(R=2),則下式和上述二元分類演算法中的弱分類器的係數一致。


假設我們的訓練樣本為

訓練集在第k個弱學習器的輸出權重為

我們先看回歸問題中的誤差率。對於第k個弱學習器,計算他在訓練集上的最大誤差

然後計算每個樣本的相對誤差

上述公式是損失為線性的情況,如果我們採用平方誤差或指數誤差,則相對誤差如下所示。

最終得到第k個弱學習器的學習誤差率

那麼弱學習器的權重係數

然後更新樣本權重D,第k+1個弱分類器的樣本集權重係數如下所示,其中Zk為規範化因子。

最後Adaboost回歸問題採用加權平均法結合策略,最終的強回歸器為


上述我們介紹了Adaboost分類的弱學習器權重係數公式和樣本權重更新公式,但並沒具體解釋公式來源,此處我們通過Adaboost損失函數來進行推導。Adaboost模型是加法模型,學習演算法為前向分布學習演算法,損失函數為指數函數。

加法模型:最終強分類器是若干個弱分類器加權平均得到。

前向分布演算法:演算法是通過一輪輪弱學習器得到,利用前一輪弱學習器的結果來更新後一個弱學習器的訓練權重。

假設第k-1輪和第k輪強學習器為

因此我們可以得到

可見強學習器是通過前向分布演算法一步步得到。Adaboost損失函數為指數函數,即定義損失函數為

利用前向分布學習演算法的關係可以得到損失函數為

首先我們求Gk(x)可以得到

將Gk(x)代入損失函數,並對α進行求導,使其等於0,於是我們得到

其中ek為我們前面介紹的分類誤差率


為了防止Adaboost過擬合,通常也會加入正則化項,這個正則化項通常稱為步長(learning rate)。定義為ν,對於前面的弱學習器的迭代

如果我們加上正則化項,則有

v的取值為(0,1]。對於同樣的訓練集,較小的ν意味著我們需要更多的弱學習器的迭代次數。通常我們用步長和迭代最大次數一起來決定演算法的擬合效果。


我們經常需要通過改變參數來讓模型達到更好的分類或回歸結果,具體參數設置可參考sklearn官方教程。


7.1Adaboost優點

不容易發生過擬合。

Adaboost是一種有很高精度的分類器。

當使用簡單分類器時,計算出的結果是可理解的。

可以使用各種方法構建子分類器,Adaboost演算法提供的是框架。

7.2Adaboost缺點

訓練時間過長。

執行效果依賴於弱分類器的選擇。

對樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習器的預測準確性。

文章參考

集成學習之Adaboost演算法原理小結


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

機器學習預測奧斯卡最佳影片,《水形物語》將勝出?
如何簡單理解AI與機器學習

TAG:機器學習 |