1. 程式人生 > >【機器學習】整合學習(一)----基本思想和方法

【機器學習】整合學習(一)----基本思想和方法

整合學習可謂是機器學習中的大殺器,諸如GBDT(梯度提升樹),RF(隨機森林)這些演算法都是用到了整合學習的思想。這一篇主要就是複習一下BoostingBaggingStacking這三種方法和常用的結合策略。

整合學習(Ensemble Learning)

也被稱為多分類器系統(multi-classifier system)、基於委員會的學習(committee-based learning)。顧名思義,就是將多個個體學習器用某種策略組合起來成為強學習器,通常個體學習器是由已有的學習演算法從訓練資料中學習產生的。
同質整合,即整合中只包含同種型別的個體學習器,這些個體學習器亦被稱為基學習器

,產生這些基學習器的學習演算法叫作基學習演算法
異質整合,即整合中的個體學習器由不同的學習演算法生成。
這裡寫圖片描述
我們有時也會稱基學習器為弱學習器。
對於強弱學習,在《統計學習方法》中有描述,概括來說就是:

在PAC框架中: 定義
強可學習 一個概念,如果存在一個多項式的學習演算法能夠學習它,並且正確率很高,那麼就稱這個概念是強可學習
弱可學習 一個概念,如果存在一個多項式的學習演算法能夠學習它,學習的正確率僅比隨機猜測略好,那麼就稱這個概念是弱可學習

其實這個沒太理解,不過不影響後面。

整合學習如何能獲得比單一學習更好的效能呢?
既然我們將這些弱學習器整合起來得到強學習器,也就是希望能夠通過這種方式提高學習器的效能,使準確率能夠高於單一的弱學習器(個體學習器)。那麼至少滿足什麼樣的條件才能讓整合起來的弱學習器能夠比單一的弱學習器效能要好呢?
這裡舉《資料探勘導論》上的一個例子來說明:
假設我們有

25個做二分類的個體學習器,其中每一個個體學習器的誤差均為ε=0.35
1.若是所有基學習器都是沒有差別的,那麼整合這些基學習器之後,效能並沒有提高,誤差還是0.35
2.若是所有個體學習器都是相互獨立的(即它們的誤差不相關),則當我們採用“投票法”這種結合策略時,僅當超過一半的個體學習器都預測錯誤時,整合後的學習器才會作出錯誤的預測。這種情況下,整合後的學習器誤差為:
eensemble=i=1325C25iεi(1ε)25i=0.06
明顯遠小於單個個體學習器的誤差。
3.但是當這些個體學習器的誤差
ε>0.5
時,我們會發現整合後的學習器的效能並比不上單個的個體學習器。
因此,我們想要讓整合起來的個體學習器能夠比單一的個體學習器效能要好必須滿足兩個條件:(1)個體學習器之間應該是相互獨立的;(2)個體學習器的效能應當好於隨機猜測。
《機器學習》一書中對此是這樣描述的,個體學習器應“好而不同”,即個體學習器要有一定的“準確性”,不能太壞,並且要有“多樣性”,即學習器之間具有差異。

在理想情況下,我們希望個體學習器相互獨立,但在現實任務中,個體學習器是為解決同一個問題而訓練出來的,顯然不可能相互獨立。因此我們如何產生並結合“好而不同”的個體學習器,是最為關鍵的問題。

整合學習分類

目前,同質個體學習器應用最為廣泛,根據這些個體學習器之間是否存在依賴關係可以將其分為兩類:
一類是存在強依賴關係、必須序列生成的序列化方法,如Boosting.
另一類是不存在強依賴關係、可同時生成的並行化方法,如Bagging和RF.

根據整合思想,架構可分為三類:
即Boosting、Bagging和Stacking

【Boosting】

Boosting基本思想:先從初始訓練集訓練出一個基學習器,再根據基學習器的表現對訓練樣本的分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多關注,然後基於調整後的樣本分佈來訓練下一個基學習器;如此重複進行,直至基學習器數目達到事先指定的值T,最後將這T個基學習器進行加權結合。
過程如下圖:
這裡寫圖片描述

對於調整樣本分佈,我們一般用重賦權法(re-weighting)實施,即在訓練過程的每一輪中,根據樣本分佈為每個訓練樣本重新賦予一個權重。當基學習演算法無法接受帶權樣本時,則可以通過重取樣法(re-sampling)來處理,即在每一輪學習中,根據樣本分佈對訓練集重新進行取樣,再用重取樣而得的樣本集對基學習器進行訓練。一般而言,這兩種方法沒有顯著優劣差別。

Boosting系列演算法中最著名的演算法主要有AdaBoost和提升樹。
提升樹中應用最廣的是梯度提升樹(GBDT,Gradient Boosting Decision Tree)

【Bagging】(Bootstrap Aggregaing的縮寫)

Bootstrap:

自助法,是一種有放回的抽樣方法,目的是為了得到統計量的分佈以及置信區間。
Bootstrap具體步驟
給定一個包含m個樣本的初始訓練資料集,每次隨機取出一個樣本放入取樣資料集中,再把這個樣本放回初始訓練資料集,經過m次隨機取樣操作,我們得到了一個含m個樣本的取樣資料集(根據公式limm(11m)m1e0.368可知,初始訓練資料集中約有63.2%的樣本出現取樣集)

Bagging

Bagging基本思想:從初始訓練資料集中取樣出T個含m個訓練樣本的取樣集,然後基於每個取樣集訓練出一個基學習器,再將這些基學習器根進行結合。
過程如下圖:
這裡寫圖片描述

RF(Random Forest),隨機森林,它是Bagging的一個擴充套件變體,後續再去看這個演算法。

【Stacking】是結合策略——學習法的典型代表

Stacking基本思想
先從初始訓練資料集根據不同的初級學習演算法訓練出初級學習器,然後“生成”(如交叉驗證或留一法等)一個新的資料集用於訓練次級學習器。在這個新資料集中,初級學習器的輸出被當作樣例輸入特徵,而初始樣本的標記仍被當作樣例標記。
過程如下圖:
這裡寫圖片描述

結合策略

【平均法】

①簡單平均法

H(x)=1Ti=1Thi(x)

②加權平均法

H(x)=i=1Tωihi(x),通常要求ωi0i=1Tωi=1

【投票法】

①相對多數投票法

H(x)=Cargmaxji=1Thij(x)(Cj)
即預測為得票最多的標記,若同時有多個標記獲得最高票,則從中隨機選取一個。

②絕對多數投票法