1. 程式人生 > >機器學習筆記——整合學習

機器學習筆記——整合學習

一,個體與整合

整合學習通過構建並結合多個學習器來完成學習任務,有時也被稱為多分類器系統,基於委員會的學習。

其一般結構是先產生一組“個體學習器”,再用某種策略將它們結合起來。如下圖:

整合學習研究的核心是如何產生並結合“好而不同”的個體學習器。

根據個體學習器的生成方式,整合學習方法可分為兩大類:

一是個體學習器間存在強依賴關係,必須序列生成的序列化方法:Boosting

二是個體學習器間不存在強依賴關係,可同時生成的並行化方法:Bagging,“隨即森林”

二,Boosting

Boosting是一族可將弱學習器提升為強學習器的演算法。工作機制是:先從初始訓練集訓練出一個基學習器,再根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多關注,然後基於調整後的樣本分佈來訓練下一個基學習器;如此重複進行直至基學習器數目達到事先指定的值T,最終將這T個基學習器進行加權結合。

Boosting族演算法最著名的代表是AdaBoost,演算法如下:

其中yi∈{-1,+1},f是真實函式。

Boosting演算法要求基學習器能對特定的資料分佈進行學習,可通過“重賦權法”和“重取樣法”實施。

重賦權法:在訓練過程的每一輪中,根據樣本的分佈為每個訓練樣本重新賦予一個權重。

重取樣法:在每一輪學習中,根據樣本分佈對訓練集重新進行取樣,再用重取樣而得到的樣本集對基學習器進行訓練。

從偏差-方差分解的角度看,Boosting主要關注降低偏差,因此Boosting能基於泛化效能相當弱的學習器構建出很強的整合。

三,Bagging與隨機森林

3.1 Bagging

Bagging是並行式整合學習方法最著名的代表。其基於自助取樣法從包含m個樣本的資料集中取樣出T個含m個訓練樣本的取樣集,然後基於每個取樣集訓練出一個基學習器,再將這些基學習器進行結合。演算法描述如下:

從偏差-方差分解的角度看,Bagging主要關注降低方差,因此它在不剪枝決策樹,神經網路等易受樣本擾動的學習器上效用更為明顯。

3.2 隨機森林

隨機森林是Bagging的一個擴充套件變體。具體來說,傳統決策樹在選擇劃分屬性時是在當前結點的屬性集合(假設有d個屬性)中選擇一個最優屬性;而在RF中,對基決策樹的每個節點,先從該節點的屬性集合中隨機選擇一個包含k個屬性的子集,然後再從這個子集中選擇一個最優屬性用於劃分

。一般情況下,推薦值k = log2d.

隨機森林對Bagging只做了小改動,但是與Bagging中基學習器的“多樣性”僅通過樣本擾動而來不同,隨機森林中基學習器的多樣性不僅來自於樣本擾動,還來自屬性擾動,這就使得最終整合的泛化效能可通過個體學習器之間的差異度的增加進一步提高。

四,結合策略

常見的集合策略有:對於數值型輸出,使用平均法;對於分類任務來說,使用投票法。

這裡主要介紹一下另一種特殊的方法——學習法。

當訓練資料很多時,一種強大的結合策略是使用“學習法”,即通過另一個學習器 來進行結合。Stacking是學習法的典型代表,這裡我們把個體學習器稱為初級學習器,對於結合的學習器稱為次級學習器或者元學習器。

Stacking先從初始資料集訓練出初級學習器,然後生成一個新資料集用於訓練次級學習器。在這個新資料集中,初級學習器的輸出被當作樣例輸入特徵,而初始樣本的標記仍被當作樣例標記。演算法如下:

在訓練階段,一般是通過使用交叉驗證或者留一法這樣的方式,用訓練初級學習器未使用的樣本來產生次級學習器的訓練樣本。