機器學習——集成學習

機器學習 隨機森林 教育 六鑰 2017-04-05

集成學習(ensemble learning)通過構建並結合多個學習器來完成學習任務,有時也被稱為多分類器系統(multi-classifier system)、基於委員會學習(committee-based learning)等。

集成學習一般是先產生一組“個體學習器”,再用某種策略將他們結合起來。個體學習器通常由一個現有的學習算法從訓練數據產生,例如C4.5決策樹算法、BP神經網絡算法等,此時集成中只包含同種類型的個體學習器。例如“決策樹集成”中全是決策樹,“神經網絡集成”中全是神經網絡,這樣的集成是“同質”的。同質集成中的個體學習器亦稱“基學習器”(based learner),相應的學習算法稱為“基學習算法”(base learning algorithm)。集成也可包含不同類型的個體學習器,例如同時包含決策樹和神經網絡,這樣的集成是異質的(heterogeneous)。異質集成中的個體學習器由不同的學習算法生產,這時就不再有基學習算法;相應的,個體學習器一般稱為基學習器,常稱為“組件學習器”(component learner)或直接稱為個體學習器。

集成學習器通過將多個學習器進行組合,常可獲得比單一學習器顯著優越的泛化性能。這對“弱學習器”尤為明顯,因此集成學習的很多理論研究都是針對學習器進行的,而基學習器有時也被直接稱為弱學習器。但需注意的是,雖然從理論是那個來說使用弱學習器集成足以獲得好的性能,但在實踐中出於種種考慮,例如希望使用較少的個體學習器,或是重用關於常見學習器的一些經驗等,人們往往會使用比較強的學習器。

根據個體學習器的生成方式,目前的集成學習方法大致可分為兩大類,即個體學習器間存在依賴關係、必須串行生成的序列化方法,以及個體學習器間不存在強依賴關係、可同時生成的並行化方法;前者的代表是Boosting,後者的代表是bagging和隨機森林(random forest)

1、Boosting

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

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

2、Bagging

欲得到泛化性能強的集成,集成中的個體學習器應儘可能相互獨立;雖然“獨立”在現實任務中無法做到,但可以設法使基學習器儘可能具有較大的差異。給定一個訓練數據集,一種可能的做法是對訓練樣本進行採樣,產生出若干個不同的子集,再從每個數據子集中訓練出一個基學習器。這樣,由於訓練數據不同,我們獲得的基學習器可望具有比較大的差異。然而,為獲得好的集成,我們同時還希望個體學習器不能太差。如果採樣出的每個子集都完全不同,則每個基學習器只用到了一小部分訓練數據,甚至不足以進行有效學習,這顯然無法確保產生出比較好的基學習器。為解決這個問題,我們考慮使用相互有交疊的採樣子集。

Bagging是並行式集成學習方法最著名的代表,從名字可以看你出,它直接基於自助採樣法(booststrap sampling)。給定包含m個樣本的數據集,我們先隨機取出一個樣本放入採樣集中,再把該樣本放回初始數據集,使得下次採樣時該樣本仍有可能被選中,這樣,經過m次隨機採樣操作,我們得到含m個樣本的採樣集,初始訓練集中有的樣本在採樣集裡多次出現,有的則為出現。經計算得到,初始訓練集中約有63.2%的樣本出現在採樣集中。我們可採樣出T個含m個訓練樣本的採樣集,然後基於每個採樣集訓練出一個基學習器,再將這些基學習器進行結合。這就是Bagging的基本流程。在對預測輸出進行結合時,bagging通常對分類任務使用簡單投票法,對迴歸任務使用簡單平均法。若分類預測時出現兩個類收到同樣票數的情形,則最簡單的做法是隨機選擇一個,也可進一步考察學習器投票的置信度裡確定最終勝者。

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

3、隨機森林

隨機森林(Random Forest 簡稱RF)是Bagging的一個擴展變體。RF是以決策樹為基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇。

隨機森林簡單、容易實現、計算開銷小,令人驚奇的是,它在很多現實任務中展現出強大的性能,被譽為“代表集成學習技術水平的方法”。隨機森林對Bagging只做了小改動,但是與Bagging中基學習器的“多樣性”僅通過樣本擾動而來不同,隨機森林中基學習器的多樣性不僅來自樣本擾動,還來自屬性擾動,這就使得最終集成的泛化性能可通過個體學習器之間差異度的增加進一步提升。

隨機森林的收斂性與Bagging相似。隨機森林的起始性能往往相對較差,特別是在集成中只包含一個基學習器時。因為通過引入屬性擾動,隨機森林中個體學習器的性能往往有所降低。然而,隨著個體學習器數目的增加,隨機森林通常會收斂都更低的泛化誤差。值得一提的是,隨機森林的訓練效率常由於Bagging,因為在個體決策樹的構建構成中,Bagging使用的是“確定型”決策樹,在選擇劃分屬性時要對結點的屬性進行考察,而隨機森林使用的是“隨機型”決策樹則只需考察一個屬性子集。

相關推薦

推薦中...