集成学习-Boosting集成学习算法AdaBoost
?
Boosting是一族將弱學(xué)習(xí)器提升為強學(xué)習(xí)器的算法,適用于個體學(xué)習(xí)器間存在強依賴關(guān)系、必須串行生成序列化方法。最著名的代表是AdaBoost。
Boosting的工作機制:從初始的訓(xùn)練集中訓(xùn)練出一個基學(xué)習(xí)器,再根據(jù)基學(xué)習(xí)器的表現(xiàn)對樣本分布進(jìn)行調(diào)整,使得先前基學(xué)習(xí)器做錯的訓(xùn)練樣本在后續(xù)受到更多的關(guān)注,然后基于調(diào)整后的樣本分布來訓(xùn)練下一個基學(xué)習(xí)器;如此重復(fù)進(jìn)行,直到基學(xué)習(xí)器數(shù)目達(dá)到事先指定的值T,最終將這T個基學(xué)習(xí)器進(jìn)行加權(quán)結(jié)合。
目錄
Adaboost算法
AdaBoost的兩種權(quán)重
AdaBoost分類示例
AdaBoost算法原理
AdaBoost計算示例
算法優(yōu)缺點
Adaboost算法
Adaboost是一種原理簡單,但很實用的有監(jiān)督機器學(xué)習(xí)算法,它是daptive boosting的簡稱,Adaboost是一種迭代算法,其核心思想是針對同一個訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構(gòu)成一個更強的最終分類器(強分類器)。
算法本身是通過改變樣本數(shù)據(jù)的權(quán)重分布來實現(xiàn)的,它根據(jù)每次訓(xùn)練集之中每個樣本的分類是否正確,以及上次的總體分類的準(zhǔn)確率,來確定每個樣本的權(quán)值。將修改過權(quán)值的新數(shù)據(jù)集送給下層分類器進(jìn)行訓(xùn)練,最后將每次訓(xùn)練得到的分類器最后融合起來,作為最后的決策分類器。使用Adaboost分類器可以排除一些不必要的訓(xùn)練數(shù)據(jù)特征,并放在關(guān)鍵的訓(xùn)練數(shù)據(jù)上面。
?
如圖是Adaboost的原理示意圖,左邊矩形表示數(shù)據(jù)集,中間表示根據(jù)特征閾值來做分類,這樣每一個弱分類器都類似于一個單節(jié)點的決策樹,其實就是閾值判斷而已,右邊的三角形對每個弱分類器賦予一個權(quán)重,最后根據(jù)每個弱分類器的加權(quán)組合來判斷總體類別。要注意一下數(shù)據(jù)集從上到下三個矩形內(nèi)的直方圖不一樣,這表示每個樣本的權(quán)重也發(fā)生了變化,樣本權(quán)重的一開始初始化成相等的權(quán)重,然后根據(jù)弱分類器的錯誤率來調(diào)整每個弱分類器的權(quán)重。
由上所示,每個弱分類器可以要求不高的準(zhǔn)確率,哪怕錯誤率是50%也可以接受,但是最后通過線性加權(quán)組合就可以得到一個很好的分類器,這點也可以通過錯誤率分析驗證。
AdaBoost的兩種權(quán)重
一種為數(shù)據(jù)權(quán)重、一種為分類器權(quán)重
數(shù)據(jù)權(quán)重:用于確定分類器權(quán)重(弱分類器尋找其分類最小的決策點,找到之后用這個最小的誤差計算出弱分類器的權(quán)重)
分類器權(quán)重:說明了弱分類器在最終決策中擁有發(fā)言權(quán)的大小
數(shù)據(jù)權(quán)重
最開始每個樣本的權(quán)重都相同,錯誤就會增加權(quán)重。
每訓(xùn)練一個弱分類器就會調(diào)整每個樣本的權(quán)重,上一輪訓(xùn)練中被錯誤分類點的權(quán)重增加,促使下一輪著分析錯誤分類點,達(dá)到“你分不對我來分的”效果。
由于每個分類器都會關(guān)注上個分錯的點,那么也就是說每個分類器都有側(cè)重。
分類器權(quán)重
每個分類器都有可能分對其上一個分類器美分對的數(shù)據(jù),同時針對上一個分類器分隊的數(shù)據(jù)也可能沒有分隊。這就導(dǎo)致了分類器中都有各自最關(guān)注的點,這就說明每一個分類器都只關(guān)注訓(xùn)練數(shù)據(jù)中的一部分?jǐn)?shù)據(jù),全部分類器組合起來才能發(fā)揮作用,那么最終的結(jié)果是通過加權(quán)“投票“決定的,權(quán)重的大小是根據(jù)弱分類器的分類錯誤率計算出來的。
?
AdaBoost算法中不同的訓(xùn)練集是通過調(diào)整每個樣本對應(yīng)的權(quán)重來實現(xiàn)的。開始時,每個樣本對應(yīng)的權(quán)重是相同的,即其中 n 為樣本個數(shù),在此樣本分布下訓(xùn)練出一弱分類器。對于分類錯誤的樣本,加大其對應(yīng)的權(quán)重;而對于分類正確的樣本,降低其權(quán)重,這樣分錯的樣本就被突顯出來,從而得到一個新的樣本分布。在新的樣本分布下,再次對樣本進(jìn)行訓(xùn)練,得到弱分類器。依次類推,經(jīng)過 T 次循環(huán),得到 T 個弱分類器,把這 T 個弱分類器按一定的權(quán)重疊加(boost)起來,得到最終想要的強分類器。
AdaBoost算法的具體步驟如下:
1. 給定訓(xùn)練樣本集S,其中X和Y分別對應(yīng)于正例樣本和負(fù)例樣本; T為訓(xùn)練的最大循環(huán)次數(shù);
2. 初始化樣本權(quán)重為1/n ,即為訓(xùn)練樣本的初始概率分布;
3. 第一次迭代:
(1) 訓(xùn)練樣本的概率分布相當(dāng)下,訓(xùn)練弱分類器;
(2) 計算弱分類器的錯誤率;
(3) 選取合適閾值,使得誤差最小;
(4) 更新樣本權(quán)重;
經(jīng)T次循環(huán)后,得到T個弱分類器,各個弱分類器的訓(xùn)練過程結(jié)束后,加大分類誤差率小的弱分類器權(quán)重,使其在最終的分類中起著較大的決定作用,而降低分類誤差率大的弱分類器的權(quán)重,使其在最終的分類函數(shù)中起著較大的決定作用,換而言子誤差率低的弱分類器在最終分類器中占的權(quán)重較大,否則較小。
Adaboost算法是經(jīng)過調(diào)整的Boosting算法,其能夠?qū)θ鯇W(xué)習(xí)得到的弱分類器的錯誤進(jìn)行適應(yīng)性調(diào)整。上述算法中迭代了T次的主循環(huán),每一次循環(huán)根據(jù)當(dāng)前的權(quán)重分布對樣本x定一個分布P,然后對這個分布下的樣本使用弱學(xué)習(xí)算法得到一個弱分類器,對于這個算法定義的弱學(xué)習(xí)算法。實際上,每一次迭代,都要對權(quán)重進(jìn)行更新。更新的規(guī)則是:減小弱分類器分類效果較好的數(shù)據(jù)的權(quán)重,增大弱分類器分類效果較差的數(shù)據(jù)的權(quán)重,最終的分類器是個弱分類器的加權(quán)平均。
AdaBoost分類示例
下面我們舉一個簡單的例子來看看Adaboost的實現(xiàn)過程:
圖中,“+”和“-”分別表示兩種類別,在這個過程中,我們使用水平或者垂直的直線作為分類器,來進(jìn)行分類。
?
根據(jù)分類的正確率,得到一個新的樣本分布D2-,一個子分類器h1
其中劃圈的樣本表示被分錯的。在右邊的途中,比較大的“+”表示對該樣本做了加權(quán)。
?
根據(jù)分類的正確率,得到一個新的樣本分布D3,一個子分類器h2
?
得到一個子分類器h3整合所有子分類器:
?
此可以得到整合的結(jié)果,從結(jié)果中看,及時簡單的分類器,組合起來也能獲得很好的分類效果,在例子中所有的。Adaboost算法的某些特性是非常好的,主要介紹adaboost的兩個特性。
一是訓(xùn)練的錯誤率上界,隨著迭代次數(shù)的增加,會逐漸下降;
二是Adaboost算法即使訓(xùn)練次數(shù)很多,也不會出現(xiàn)過擬合的問題。
算法特點:
AdaBoost算法原理
AdaBoost計算示例
算法優(yōu)缺點
優(yōu)點
對于boosting算法,存在兩個問題:
1. 如何調(diào)整訓(xùn)練集,使得在訓(xùn)練集上訓(xùn)練的弱分類器得以進(jìn)行;
2. 如何將訓(xùn)練得到的各個弱分類器聯(lián)合起來形成強分類器。
針對以上兩個問題,adaBoost算法進(jìn)行了調(diào)整:
1. 使用加權(quán)后選取的訓(xùn)練數(shù)據(jù)代替隨機選取的訓(xùn)練樣本,這樣將訓(xùn)練的焦點集中在比較難分的訓(xùn)練數(shù)據(jù)樣本上;
2. 將弱分類器聯(lián)合起來,使用加權(quán)的投票機制代替平均投票機制。讓分類效果好的弱分類器具有較大的權(quán)重,而分類效果差的分類器具有較小的權(quán)重。
?
?
?
?
參考鏈接:http://www.360doc.com/content/14/1109/12/20290918_423780183.shtml
參考鏈接:http://blog.csdn.net/marvin521/article/details/9319459
參考鏈接:http://blog.csdn.net/baiduforum/article/details/6721749
參考鏈接:http://www.cnblogs.com/pinard/p/6133937.html
參考鏈接:http://www.cnblogs.com/pinard/p/6133937.html
參考鏈接:https://zhuanlan.zhihu.com/p/27126737
參考鏈接:https://zhuanlan.zhihu.com/p/27126737
參考鏈接:https://blog.csdn.net/qq_24753293/article/details/80180944
?
總結(jié)
以上是生活随笔為你收集整理的集成学习-Boosting集成学习算法AdaBoost的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 集成学习算法-基础
- 下一篇: Hadoop中任务提交运行流程