1. 程式人生 > >整合學習----“三個臭皮匠,賽過諸葛亮”

整合學習----“三個臭皮匠,賽過諸葛亮”

整合學習(Ensemble Learning)通過使用一些方法改變原始訓練樣本的分佈,來構建多個不同的學習器,再結合這多個學習器來完成學習任務,常可獲得比單一學習器顯著優越的泛化效能。該過程中多個不同的分類器,叫做個體學習器或者基學習器。個體分類器之間要具備一定的差異性和準確性,即儘可能“好而不同”,個體分類器的準確度要大於0.5。整合學習的研究核心有二個內容:一者是如何構建具備一定差異性和準確率的基學習器,二者為如何整合多個不同的學習器,提升學習效能。

根據個體學習器的生成方式,當前整合學習方法大致可分為二類:1.個體學習器之間存在強依賴關係,必須序列生成的序列化方法,以Boosting為代表;2.個體學習器之間不存在依賴關係,可以同時生成的並行方法,以Bagging、隨機森林(Random Forest)為代表。

在正式介紹上述二類方法之前,先回顧二方面內容:

1.偏差-方差

如圖所示,藍色點為樣本的訓練期望值,紅色區域為樣本的真實值。偏差(Bias)指的是樣本期望值與真實值之間的誤差,方差指的是隨機變數在其期望值附近的波動程度。

2.Bootstrap取樣法

  Bootstrap是一種自助取樣法,“有放回抽樣”的經典樣本估計演算法。其假設觀察樣本即為資料總樣本,再由假定總體抽取子樣本,即再抽樣。後續的Bagging、Boosting、隨機森林等演算法的樣本抽樣演算法用的都是Bootstrap。

Boosting

Boosting是一種可把弱學習器提升為強學習器的演算法。先從初始訓練集訓練出一個基學習器,再根據基學習器的表現改變原始訓練樣本的分佈進行調整,使得先前學習器做錯的訓練樣本在後續得到更高的關注,再進一步學習新的學習器。典型的演算法是AdaBoost:對訓練樣本初始化相同的權重,訓練一個基學習器,根據該學習器的表現,給予判斷錯誤的樣本更高的權重,改變訓練樣本的權重分佈,在訓練新的學習器;迭代進行上述步驟。

從偏差-方差的角度來看,Boosting主要關注降低偏差。每一次迭代都是在上一輪的基礎上擬合訓練樣本,因此偏差逐漸降低。那麼對於基分類器來說,目標是降低方差,故而常選擇更簡單的深度很淺的決策樹;若基學習器過於複雜,則方差較大,容易產生過擬合,因此,Boosting的基本模型必須是“弱模型”,具備“高偏差低方差”的特點。

Bagging

給定包含m個樣本的資料集,隨機取出一個樣本放入取樣集中,再放回資料集。經過m次隨機取樣操作,得到包含m個樣本的取樣集。初始取樣集中,可能存在樣本多次出現。取樣出T個包含m個訓練樣本的取樣集,分別訓練基學習器,再將T個基學習器進行整合,這就是Bagging演算法。T個基學習器間相互獨立,可以並行生成,效能較為平均,方差小,因此目標是降低偏差,常採用較深而且不剪枝的決策樹、神經網路。與Boosting相比,Bagging更不易發生過擬合。Bagging的基本模型必須是“強模型”,具備“高方差低偏差”的特點。

隨機森林

隨機森林是在Bagging的基礎上改進的,不僅是用了資料樣本擾動,還使用了屬性擾動的多樣性增強機制,大大減少了產生過擬合的可能性,因此不需要剪枝。傳統決策樹在劃分屬性時,在當前節點的屬性集合中選擇一個最優屬性;而在RF中,先從當前節點的屬性集合中隨機選擇k個屬性,再計算一個最優屬性用於劃分。