1. 程式人生 > >Ensemble learning(集成學習)

Ensemble learning(集成學習)

使用 -h 回歸 ref splay 再次 任務 屬性 tst

定義

集成學習是一種機器學習範式,其中多個學習器被訓練來解決相同的問題。 這與試圖從訓練數據中學習一個假設的普通機器學習方法相反,集成方法嘗試構造一組假設並將它們結合使用。

一個集合包含一些通常被稱為基礎學習器的學習器。 一個集合的泛化能力通常比單個基礎學習器的泛化能力強得多。 實際上,集成學習具有極大吸引力,因為它可以將弱於隨機猜測的弱學習器提升為能夠做出非常準確預測的強大學習器。 所以,“基礎學習器”也被稱為“弱學習器”。 然而,值得註意的是,盡管大多數理論分析都是針對弱學習器的,但實踐中使用的基礎學習器並不一定很弱,因為使用不那麽薄弱的基礎學習器通常會導致更好的表現。

基礎學習器通常通過基礎學習算法從訓練數據生成,所述基礎學習算法可以是決策樹,神經網絡或其他種類的機器學習算法。 大多數集成方法使用單一的基本學習算法來生成均勻基礎學習器,但也有一些方法使用多種學習算法來生成異構學習器。 在後一種情況下,沒有單一的基本學習算法,因此,有些人更喜歡稱學習器為個別學習器或組件學習者為“基礎學習器”,而“個別學習器”和“組件學習器”的名稱也可用於同質基礎學習器。

構成集合

通常情況下,集合是分兩步構建的。 首先,生成許多基礎學習器,這些基礎學習器可以以並行樣式或序列樣式生成,序列樣式即基礎學習器的生成影響後續學習器的生成。 然後,將基礎學習器結合使用,其中最流行的組合方案是用於分類的多數投票和用於回歸的加權平均。

一般來說,為了獲得一個好的集合,基礎學習器應該盡可能地更加準確,並盡可能多樣化。這已經被Krogh和Vedelsby正式表現出來,並且被許多其他人所強調。對於估計學習器的準確性有很多有效的過程,例如交叉驗證,保持測試等。然而,對於直覺上認為是多樣性的東西沒有嚴格的定義。雖然已經設計了多種多樣性措施,但Kuncheva和Whitaker 表示,現有的多樣性措施在建設集合方面的作用是值得懷疑的。在實踐中,可以從不同的渠道引入基礎學習器的多樣性,例如對訓練樣例進行二次采樣,操縱屬性,操縱輸出,將隨機性註入學習算法,甚至同時使用多種機制。采用不同的基礎學習器生成過程和/或不同的組合方案導致不同的集合方法。

有許多有效的集成方法。 下面將簡要介紹三種有代表性的方法,Boosting ,Bagging 和Stacking 。 這裏為了簡單考慮二元分類。 也就是說,設X和Y分別表示實例空間和一組類標簽,假設Y = {-1;+1}中。 訓練數據集D = {(x1 ; y1); (x2; y2); …; (xm; ym)}給出,其中xi∈X和yi∈Y(i = 1;….; m)。

Boosting

實際上,Boosting是一系列算法,因為它有許多變體。在這裏,最著名的算法AdaBoost 被認為是一個例子。首先,它為所有訓練實例分配相同的權重。將第t輪學習中權重的分布表示為Dt。從訓練數據集和Dt算法生成一個基本學習器ht

:X-> Y通過調用基礎學習算法。然後,它使用訓練樣例來測試ht,並且不正確分類的例子的權重將會增加。因此,獲得更新的權重分布Dt + 1。從訓練數據集和Dt + 1中,AdaBoost通過再次調用基礎學習算法生成另一個基礎學習器。這種過程重復進行T次,每次都稱為一輪,最終的學習器是通過T輪基礎學習者的加權多數投票得出的,其中在訓練過程中確定了學習器的權重。在實踐中,基礎學習算法可以是可以直接使用加權訓練樣例的學習算法;否則可以通過根據權重分布Dt對訓練樣本進行采樣來利用權重。 AdaBoost的偽代碼如圖1所示。

技術分享圖片

Bagging

Bagging 通過調用基礎學習算法來訓練大量基礎學習器,每個基礎學習器都來自不同的bootstrap樣本。 Bootstrap樣本是通過對替換的訓練數據集進行二次采樣得到的,其中樣本的大小與訓練數據集的大小相同。 因此,對於bootstrap樣本,可能會出現一些訓練樣例,但有些訓練樣例可能不會,例如至少出現一次樣例的概率約為0.632。 在獲得基礎學習器後,Bagging通過多數投票將他們結合起來,並預測得票最多的類。 Bagging的偽代碼如圖2所示。 值得一提的是Bagging隨機森林的一個變種被認為是迄今為止最強大的集合方法之一。

技術分享圖片

Stacking

在Stacking的典型實現中,通過采用不同的學習算法從訓練數據集中生成許多第一級個體學習器。 這些個別學習器然後被稱為元學習器的二級學習者組合。 Stacking的偽代碼如圖3所示。 很明顯Stacking與信息融合方法有著密切的關系。

技術分享圖片

一般來說,沒有一種整體方法比其他整體方法更出色。 流行的集合方法的實證研究可以在許多論文中找到。 以前,有人認為使用更多的基礎學習器會導致更好的表現,但周等人證明了“許多可能比所有更好“的理論,這就表明更多的基礎學習器帶來更好的表現可能不是事實。 結果表明,在生成一組基礎學習器之後,選擇一些基礎學習器而不是全部使用它們來組成一個集合是更好的選擇。 這樣的集合被稱為選擇性集合。

值得一提的是,除了分類和回歸之外,集合方法也被設計用於聚類和其他類型的機器學習任務。

為什麽集合優於單個

為了理解為什麽一個集合的泛化能力通常比單個學習器的泛化能力強得多,Dietterich 通過觀察機器學習的本質為尋找最準確假設的假設空間提供了三個理由。第一個原因是,訓練數據可能無法提供足夠的信息來選擇單一的最佳學習器。例如,可能有許多學習器在訓練數據集上的表現同樣出色。因此,結合這些學習器可能是更好的選擇。第二個原因是,學習算法的搜索過程可能不完善。例如,即使存在唯一的最佳假設,也可能難以實現,因為運行算法會導致次優假設。因此,集合可以彌補這種不完善的搜索過程。第三個原因是,被搜索的假設空間可能不包含真正的目標函數,而集合可以給出一些很好的近似值。例如,眾所周知,決策樹的分類邊界是與坐標軸平行的線段。如果目標分類邊界是一條光滑的對角線,則使用單個決策樹不能產生良好的結果,但通過組合一組決策樹可以實現良好的近似。請註意,這些是直觀的,而不是嚴格的理論解釋。

有關Boosting和Bagging等著名集合方法的理論研究很多,但對這些方法的潛在機制還沒有一個清晰的認識。 例如,經驗觀察表明,即使經過大量循環,Boosting也不會遭受過度擬合,有時甚至能夠在訓練誤差已經達到零之後減少泛化誤差。 盡管許多研究人員已經研究了這種現象,但理論解釋仍在爭論中。

偏差方差分解常用於研究集合方法的性能。 眾所周知Bagging可以顯著減少方差,因此最好應用於遭受大方差的學習器,例如決策樹或神經網絡等不穩定的學習器。 除了減少方差外,Boosting可以顯著減少偏差,因此,對於弱決策者如決策殘塊,Boosting通常更有效。

總結

集成學習是一種強大的機器學習範式,在許多應用中展現出明顯的優勢。 通過使用多個學習者,一個集合的泛化能力可以比單個學習者的泛化能力好得多。 目前的集合方法的嚴重缺陷是缺乏可理解性,即集合體所學的知識對於用戶是不可理解的。 提高集合的可理解性是一個重要但尚未充分研究的方向。 另一個重要問題是目前沒有多樣性措施令人滿意,盡管眾所周知多樣性在集合中起著重要作用。 如果這些問題能夠得到很好的解決,集體學習將能夠為更多的應用做出更多貢獻。


參考文獻:“Ensemble Learning” Zhi-Hua Zhou




Ensemble learning(集成學習)