集成学习算法之boosting、bagging和随机森林算法原理
集成學習的定義
集成學習的主要思路是先通過一定的規則生成多個學習器,再采用某種集成策略進行組合,最后綜合判斷輸出最終結果。一般而言,通常所說的集成學習中的多個學習器都是同質的"弱學習器"。基于該弱學習器,通過樣本集擾動、輸入特征擾動、輸出表示擾動、算法參數擾動等方式生成多個學習器,進行集成后獲得一個精度較好的"強學習器"。
舉例說明:以三分類問題為例,假如有 N 個分類器相互獨立,錯誤率都為 P , 使用簡單的投票法組合分類器,其分類器的錯誤率為
從上式可以看出P<0.5時,錯誤率Perror隨著N的增大而減小,如果每個分類器的錯誤率都小于0.5,且相互獨立,則集成學習器個數越多,錯誤率越小,當N無窮大時,錯誤率接近于零。
?bagging 算法
1.1定義:
從上圖可以看出,Bagging的弱學習器之間的確沒有boosting那樣的聯系。它的特點在“隨機采樣”。
隨機采樣(bootsrap)就是從我們的訓練集里面采集固定個數的樣本,但是每采集一個樣本后,都將樣本放回。也就是說,之前采集到的樣本在放回后有可能繼續被采集到。對于我們的Bagging算法,一般會隨機采集和訓練集樣本數m一樣個數的樣本。這樣得到的采樣集和訓練集樣本的個數相同,但是樣本內容不同。如果我們對有m個樣本訓練集做T次的隨機采樣,,則由于隨機性,T個采樣集各不相同。
對于一個樣本,它在某一次含m個樣本的訓練集的隨機采樣中,每次被采集到的概率是1/m。不被采集到的概率為1?1/m。如果m次采樣都沒有被采集中的概率是(1-1/m)^m。當m→∞時(1-m/1)^m→1/e?0.368。也就是說,在bagging的每輪隨機采樣中,訓練集中大約有36.8%的數據沒有被采樣集采集中。
1.2 算法流程
輸入為樣本集D={(x,y1),(x2,y2),...(xm,ym)},弱學習器算法, 弱分類器迭代次數T。
輸出為最終的強分類器f(x)
1)對于t=1,2...,T:
a)對訓練集進行第t次隨機采樣,共采集m次,得到包含m個樣本的采樣集DtDt
b)用采樣集Dt訓練第t個弱學習器Gt(x)
2) 如果是分類算法預測,則T個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是回歸算法,T個弱學習器得到的回歸結果進行算術平均得到的值為最終的模型輸出
boosting算法
2.1 原理
?
(1)初始化訓練數據(每個樣本)的權值分布:如果有N個樣本,則每一個訓練的樣本點最開始時都被賦予相同的權重:1/N。
(2)訓練弱分類器。具體訓練過程中,如果某個樣本已經被準確地分類,那么在構造下一個訓練集中,它的權重就被降低;相反,如果某個樣本點沒有被準確地分類,那么它的權重就得到提高。同時,得到弱分類器對應的話語權。然后,更新權值后的樣本集被用于訓練下一個分類器,整個訓練過程如此迭代地進行下去。
(3)將各個訓練得到的弱分類器組合成強分類器。各個弱分類器的訓練過程結束后,分類誤差率小的弱分類器的話語權較大,其在最終的分類函數中起著較大的決定作用,而分類誤差率大的弱分類器的話語權較小,其在最終的分類函數中起著較小的決定作用。換言之,誤差率低的弱分類器在最終分類器中占的比例較大,反之較小。
2.2算法流程
第一步:
初始化訓練數據(每個樣本)的權值分布。每一個訓練樣本,初始化時賦予同樣的權值w=1/N。N為樣本總數。
D1表示,第一次迭代每個樣本的權值。w11表示,第1次迭代時的第一個樣本的權值。
N為樣本總數。
第二步:進行多次迭代,m=1,2….M。m表示迭代次數。
a)使用具有權值分布Dm(m=1,2,3…N)的訓練樣本集進行學習,得到弱的分類器。
該式子表示,第m次迭代時的弱分類器,將樣本x要么分類成-1,要么分類成1.那么根據什么準則得到弱分類器?
準則:該弱分類器的誤差函數最小,也就是分錯的樣本對應的 權值之和,最小
該式是隨em減小而增大。即誤差率小的分類器,在最終分類器的 重要程度大。
c)更新訓練樣本集的權值分布。用于下一輪迭代。其中,被誤分的樣本的權值會增大,被正確分的權值減小。
Dm+1是用于下次迭代時樣本的權值,Wm+1,i是下一次迭代時,第i個樣本的權值。
??? 其中,yi代表第i個樣本對應的類別(1或-1),Gm(xi)表示弱分類器對樣本xi的分類(1或-1)。若果分對,yi*Gm(xi)的值為1,反之為-1。其中Zm是歸一化因子,使得所有樣本對應的權值之和為1.
第三步迭代完成后,組合弱分類器。
加個sign函數,該函數用于求數值的正負。數值大于0,為1。小于0,為-1.等于0,為0.得到最終的強分類器G(x)
優點
(1)精度很高的分類器
(2)提供的是框架,可以使用各種方法構建弱分類器
(3)簡單,不需要做特征篩選
(4)不用擔心過度擬合
隨機森林
定義:隨機森林指的是利用多棵樹對樣本進行訓練并預測的一種分類器
舉例說明:隨機森林中有許多的分類樹。我們要將一個輸入樣本進行分類,我們需要將輸入樣本輸入到每棵樹中進行分類。打個形象的比喻:森林中召開會議,討論某個動物到底是老鼠還是松鼠,每棵樹都要獨立地發表自己對這個問題的看法,也就是每棵樹都要投票。該動物到底是老鼠還是松鼠,要依據投票情況來確定,獲得票數最多的類別就是森林的分類結果。森林中的每棵樹都是獨立的,99.9%不相關的樹做出的預測結果涵蓋所有的情況,這些預測結果將會彼此抵消。少數優秀的樹的預測結果將會超脫于蕓蕓“噪音”,做出一個好的預測。將若干個弱分類器的分類結果進行投票選擇,從而組成一個強分類器,這就是隨機森林bagging的思想(關于bagging的一個有必要提及的問題:bagging的代價是不用單棵決策樹來做預測,具體哪個變量起到重要作用變得未知,所以bagging改進了預測準確率但損失了解釋性。)。下圖可以形象地描述這個情況:
?
?
?
總結
以上是生活随笔為你收集整理的集成学习算法之boosting、bagging和随机森林算法原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: string转map集合_集合(下)
- 下一篇: Vonage再度入围IDC CPaaS“