1. 程式人生 > >機器學習之整合學習(一)Ensemble Learning

機器學習之整合學習(一)Ensemble Learning

一、整合學習概述

        整合學習通過構建並結合多個學習器來完成學習任務。通過將多個學習器結合,常可以獲得比單一學習器顯著優越的泛化效能,達到博採眾長的目的。
          整合學習有兩個主要的問題需要解決:
1、如何訓練每個學習器?
2、如何融合各個學習器?

二、個體學習器

        要獲得好的學習器,個體學習器應“好而不同”,即個體學習器要有一定的準確性,並且要有多樣性。
        根據個體學習器包含的型別,可分為同質個體學習器和異質個體學習器。整合中可以只包含同種型別的個體學習器,如決策樹、神經網路,這樣的整合是同質的,同質整合中的個體學習器亦稱“基學習器”,相應的學習演算法稱為“基學習演算法”。整合也可以包含不同型別的個體學習器,如同時包含決策樹和神經網路,這樣的整合是異質的,個體學習器常稱為“元件學習器”。目前同質個體學習器的應用歲最廣泛的,一般提到整合學習都是指同質個體學習器,而同質個體學習器使用最多的模型是CART決策樹和神經網路。
        根據個體學習器的生成是否存在依賴關係,可以分為兩類。個體學習器間存在強依賴關係,必須序列生成,代表演算法是boosting系列演算法;個體學習器之間不存在強依賴關係,可以並行生成,代表演算法是bagging和隨機森林系列演算法。

三、整合學習之Boosting

          Boosting演算法的工作機制是首先從訓練集中用初始權重訓練出一個弱學習器1,根據弱學習器的學習誤差率來更新訓練樣本的權重,使弱學習器1學習誤差率高的訓練樣本點的權重變高,在後面的弱學習器2中得到更多的重視,然後基於調整權重後的訓練集來訓練弱學習器2,如此重複,直到弱學習器數目達到事先指定的數目T,最後將T個弱學習器通過集合策略進行整合,得到最終的強學習器。從偏差-方差分解的角度看,Boosting主要關注降低偏差,因此Boosting能基於泛化效能相當弱的學習器構建出很強的整合。
        Boosting系列演算法裡最著名的演算法包括AdaBoost演算法和提升樹 (boosting tree)系列演算法,提升樹系列演算法裡應用最廣泛的是梯度提升樹 (Gradient Boosting Tree)。

四、整合學習之Bagging

          Bagging演算法通過T次隨機取樣得到T個取樣集,獨立訓練出T個弱學習器,再通過集合策略得到最終的強學習器。這裡的隨機取樣一般採用自助取樣法(Bootstrap sampling),即在包含m個樣本的資料集中,每次隨機取出一個樣本放入取樣集中,再把該樣本放回原資料集中,這樣下次取樣時該樣本仍有可能被選中,這樣經過m次隨機取樣可以得到含m個樣本的取樣集。原訓練集中有的樣本在取樣集中多次出現,有的從未出現,初始訓練集中約63.2%的樣本出現在取樣集中。從偏差-方差分解的角度看,Bagging主要關注降低方差,因此在不剪枝決策樹、神經網路等易受樣本擾動的學習器上效果更為明顯。
        隨機森林是Bagging的一個特化進階版,特化是因為隨機森林的弱學習器都是決策樹,進階是因為隨機森林在Bagging的樣本隨機取樣基礎上,又加上了特徵的隨機選擇,其基本思想沒有脫離Bagging的範疇。

五、整合學習之結合策略

        假設得到T個弱學習器是

5.1 平均法

        對於數值類的迴歸預測問題,通常使用平均法,也就是對T個弱學習器的輸出進行平均得到最終的預測輸出。
  • 算術平均法

  • 加權平均法

        其中ωi是弱學習器hi的權重,通常有

5.2 投票法

        對於分類問題的預測,通常使用投票法。假設預測類別是
  • 相對多數投票法
        最簡單的投票法,也就是常說的少數服從多數,T個弱學習器對樣本的預測中,數量最多的類別作為最終的分類類別,如果不止一個類別票數最高,則隨機選擇一個作為最終類別。
  • 絕對多數投票法
        稍微複雜些,也就是常說的票過半數,在相對多數投票法的基礎上,不僅要求獲得最高票,還要求票過半數,否則會拒絕預測,這在可靠性要求較高的學習任務中是一個很好的機制。
  • 加權投票法
        和加權平均法一樣,每個弱學習器的分類票數要乘以一個權重,最終將各類別的加權票數求和,最大值對應的類別為最終類別。

5.3 學習法

        前兩種方法比較簡單,但是學習誤差可能較大。當訓練資料很多時,一種更為強大的結合策略是學習法,即通過另一個學習器進行結合。
        學習法的代表方法是stacking。使用stacking結合策略時,先從初始資料集中訓練出初級學習器,然後生成一個新資料集用於訓練次級學習器,此時將弱學習器的學習結果作為輸入。