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