機器學習(17)之集成學習原理總結
微信公眾號
關鍵字全網搜索最新排名
【機器學習演算法】:排名第一
【機器學習】:排名第二
【Python】:排名第三
【演算法】:排名第四
前言
集成學習(ensemble learning)是現在非常火爆的機器學習方法。
它本身不是一個單獨的機器學習演算法,而是通過構建並結合多個機器學習器來完成學習任務。
也就是我們常說的「博採眾長
」。集成學習可以用於分類問題集成,回歸問題集成,特徵選取集成,異常點檢測集成等等
,可以說所有的機器學習領域都可以看到集成學習的身影。本文就對集成學習的原理做一個總結。
EL概述
從下圖,我們可以對集成學習的思想做一個概括。
對於訓練集數據,我們通過訓練若干個個體學習器,通過一定的結合策略,就可以最終形成一個強學習器,以達到博採眾長的目的。
也就是說,集成學習有兩個主要的問題需要解決,
第一是如何得到若干個個體學習器,第二是如何選擇一種結合策略,將這些個體學習器集合成一個強學習器。
EL之個體學習器
如上所述,集成學習的第一個問題就是如何得到若干個個體學習器。
這裡我們有兩種選擇。
第一種
就是所有的個體學習器都是一個種類的,或者說是同質的。
比如都是決策樹個體學習器,或者都是神經網路個體學習器。
第二種
就是所有的個體學習器不全是一個種類的,或者說是異質的。
比如我們有一個分類問題,對訓練集採用支持向量機個體學習器,邏輯回歸個體學習器和樸素貝葉斯個體學習器來學習,再通過某種結合策略來確定最終的分類強學習器。
目前來說,同質個體學習器的應用是最廣泛的,一般我們常說的集成學習的方法都是指的同質個體學習器。
而同質個體學習器使用最多的模型是CART決策樹和神經網路。
同質個體學習器按照個體學習器之間是否存在依賴關係可以分為兩類,
第一個是個體學習器之間存在強依賴關係,一系列個體學習器基本都需要串列生成,代表演算法是boosting系列演算法,
第二個是個體學習器之間不存在強依賴關係,一系列個體學習器可以並行生成,代表演算法是bagging和隨機森林(Random Forest)系列演算法。
下面就分別對這兩類演算法做一個概括總結。
EL之Boosting
Boosting的演算法原理我們可以用一張圖做一個概括如下:
從圖中可以看出,
Boosting演算法的工作機制是首先從訓練集用初始權重訓練出一個弱學習器1,根據弱學習的學習誤差率表現來更新訓練樣本的權重,使得之前弱學習器1學習誤差率高的訓練樣本點的權重變高,使得這些誤差率高的點在後面的弱學習器2中得到更多的重視。然後基於調整權重後的訓練集來訓練弱學習器2.,如此重複進行,直到弱學習器數達到事先指定的數目T,最終將這T個弱學習器通過集合策略進行整合,得到最終的強學習器。
Boosting系列演算法里最著名演算法主要有
AdaBoost演算法
和提升樹(boosting tree)
系列演算法。提升樹系列演算法裡面應用最廣泛的是梯度提升樹(Gradient Boosting Tree)
。
EL之Bagging
Bagging的演算法原理和 boosting不同,它的弱學習器之間沒有依賴關係,可以並行生成,我們可以用一張圖做一個概括如下:
從上圖可以看出,
bagging的個體弱學習器的訓練集是通過隨機採樣得到的。通過T次的隨機採樣,我們就可以得到T個採樣集,對於這T個採樣集,我們可以分別獨立的訓練出T個弱學習器,再對這T個弱學習器通過集合策略來得到最終的強學習器。
對於這裡的隨機採樣有必要做進一步的介紹,這裡一般採用的是
自助採樣法(Bootstap sampling)
,即對於m個樣本的原始訓練集,我們每次先隨機採集一個樣本放入採樣集,接著把該樣本放回,也就是說下次採樣時該樣本仍有可能被採集到,這樣採集m次,最終可以得到m個樣本的採樣集
,由於是隨機採樣,這樣每次的採樣集是和原始訓練集不同的,和其他採樣集也是不同的,這樣得到多個不同的弱學習器。隨機森林是bagging的一個特化進階版
,所謂的特化是因為隨機森林的弱學習器都是決策樹。所謂的進階是隨機森林在bagging的樣本隨機採樣基礎上,又加上了特徵的隨機選擇,其基本思想沒有脫離bagging的範疇。
EL之結合策略
在上面幾節裡面我們主要關注於學習器,提到了學習器的結合策略但沒有細講,本節就對集成學習之結合策略做一個總結。
平均法
對於數值類的回歸預測問題,通常使用的結合策略是平均法
,也就是說,對於若干和弱學習器的輸出進行平均得到最終的預測輸出。最簡單的平均是算術平均,也就是說最終預測是
如果每個個體學習器有一個權重w,則最終預測是
其中wi是個體學習器hi的權重,通常有
投票法
對於分類問題的預測,我們通常使用的是投票法
。假設我們的預測類別是{c1,c2,...cK},對於任意一個預測樣本x,我們的T個弱學習器的預測結果分別是(h1(x),h2(x)...hT(x))。最簡單的投票法是相對多數投票法,也就是我們常說的少數服從多數
,也就是T個弱學習器的對樣本x的預測結果中,數量最多的類別ci為最終的分類類別。如果不止一個類別獲得最高票,則隨機選擇一個做最終類別。稍微複雜的投票法是絕對多數投票法,也就是我們常說的要票過半數。
在相對多數投票法的基礎上,不光要求獲得最高票,還要求票過半數。否則會拒絕預測。更加複雜的是加權投票法,和加權平均法一樣,每個弱學習器的分類票數要乘以一個權重,
最終將各個類別的加權票數求和,最大的值對應的類別為最終類別。
學習法
上兩節的方法都是
對弱學習器的結果做平均或者投票,相對比較簡單,但是可能學習誤差較大
,於是就有了學習法這種方法,對於學習法,代表方法是stacking
,當使用stacking的結合策略時, 我們不是對弱學習器的結果做簡單的邏輯處理,而是再加上一層學習器,也就是說,我們將訓練集弱學習器的學習結果作為輸入,將訓練集的輸出作為輸出,重新訓練一個學習器來得到最終結果。
在這種情況下,我們將弱學習器稱為初級學習器,將用於結合的學習器稱為次級學習器。對於測試集,我們首先用初級學習器預測一次,得到次級學習器的輸入樣本,再用次級學習器預測一次,得到最終的預測結果。
小結
以上就是集成學習原理的一個總結,後面會分別對Adaboost, 提升樹,bagging和隨機森林的演算法原理做一個總結,敬請期待。
歡迎分享給他人讓更多的人受益
參考:
博客園(作者:劉建平)
http://www.cnblogs.com/pinard/p/6131423.html
周志華《機器學習》
李航《統計學習方法》
加我微信:guodongwe1991,備註姓名-單位-研究方向(加入微信機器學習交流1群)
招募 志願者
廣告、商業合作
請加QQ:357062955@qq.com
喜歡,別忘關注~
幫助你在AI領域更好的發展,期待與你相遇!