1. 程式人生 > >簡單易學的機器學習演算法——整合方法(Ensemble Method)

簡單易學的機器學習演算法——整合方法(Ensemble Method)

一、整合學習方法的思想

前面介紹了一系列的演算法,每個演算法有不同的適用範圍,例如有處理線性可分問題的,有處理線性不可分問題。在現實世界的生活中,常常會因為“集體智慧”使得問題被很容易解決,那麼問題來了,在機器學習問題中,對於一個複雜的任務來說,能否將很多的機器學習演算法組合在一起,這樣計算出來的結果會不會比使用單一的演算法效能更好?這樣的思路就是整合學習方法。

       整合學習方法是指組合多個模型,以獲得更好的效果,使整合的模型具有更強的泛化能力。對於多個模型,如何組合這些模型,主要有以下幾種不同的方法:

  1. 在驗證資料集上上找到表現最好的模型作為最終的預測模型;
  2. 對多個模型的預測結果進行投票或者取平均值;
  3. 對多個模型的預測結果做加權平均。
以上的幾種思路就對應了整合學習中的幾種主要的學習框架。

二、整合學習的主要方法

1、強可學習和弱可學習

       在整合學習方法中,是將多個弱模型,通過一定的組合方式,組合成一個強模型。在《統計學習方法》中介紹了“強可學習(strongly learnable)”和“弱可學習(weakly learnable)”的概念。       在概率近似正確(probably approximately correct, PAC)學習的框架中,一個概念(一個類),如果存在一個多項式的學習演算法能夠學習它,並且正確率很高,那麼就稱這個概念是強可學習的。一個概念,如果存在一個多項式的學習演算法能夠學習它,學習正確率僅比隨機猜測略好,那麼就稱這個概念是弱可學習的。
Schapire指出在PAC學習框架下,一個概念是強可學習的充分必要條件是這個概念是弱可學習的。那麼對於一個學習問題,若是找到“弱學習演算法”,那麼可以將弱學習方法變成“強學習演算法”。

2、在驗證集上找表現最好的模型

       這樣的方法的思想與決策樹的思想類似,在不同的條件下選擇滿足條件的演算法。

3、多個模型投票或者取平均值

       對於資料集訓練多個模型,對於分類問題,可以採用投票的方法,選擇票數最多的類別作為最終的類別,而對於迴歸問題,可以採用取均值的方法,取得的均值作為最終的結果。在這樣的思路里最著名的是Bagging方法.BaggingBoostrap Aggregating
,其中,Boostrap是一種有放回的抽樣方法,其抽樣策略是簡單的隨機抽樣。       在Bagging方法中,讓學習演算法訓練多次,每次的訓練集由初始的訓練集中隨機取出的個訓練樣本組成,初始的訓練樣本在某次的訓練集中可能出現多次或者根本不出現。最終訓練出個預測函式,最終的預測函式為,對於分類和迴歸問題可採用如下的兩種方法:
  1. 分類問題:採用投票的方法,得票最多的類別為最終的類別
  2. 迴歸問題:採用簡單的平均方法
(圖片來自參考文章2)隨機森林演算法就是基於Bagging思想的學習演算法。

4、對多個模型的預測結果做加權平均

       在上述的Bagging方法中,其特點在於隨機化抽樣,通過反覆的抽樣訓練新的模型,最終在這些模型的基礎上取平均。而在對多個模型的預測結果做加權平均則是將多個弱學習模型提升為強學習模型,這就是Boosting的核心思想。       在Boosting演算法中,初始化時對每個訓練樣本賦予相等的權重,如,然後用該學習演算法對訓練集訓練輪,每次訓練後,對訓練失敗的訓練樣本賦予更大的權重,也就是讓學習演算法在後續的學習中幾種對比較難學的訓練樣本進行學習,從而得到一個預測函式序列,其中每個都有一個權重,預測效果好的預測函式的權重較大。最終的預測函式對於分類和迴歸問題可採用如下的兩種方法:
  1. 分類問題:有權重的投票方式
  2. 迴歸問題:加權平均
(圖片來自參考文章2)AdaBoostGBDT(Gradient Boosting Decision Tree)是基於Boosting思想的兩個最著名的演算法。

參考文章

1、《統計學習方法》