1. 程式人生 > >七、集成學習

七、集成學習

基礎 使用 .com bubuko random img 基本 以及 right

集成學習通過將多個學習器進行結合,常可獲得比單一學習器顯著優越的泛化性能。

要獲得好的集成,個體學習器應“好而不同”,即個體學習器要有一定的準確性,即學習器不能太壞,並且要有多樣性,即學習器間具有差異。

技術分享圖片

接下來介紹兩種集成方式,同時生成的並行化方法,以及串行的序列化方法。

1.Bagging和隨機森林

Bagging是一種並行式的集成學習方法,即基學習器的訓練之間沒有前後順序可以同時進行,使用“有放回”采樣的方式選取訓練集,對於包含n個樣本的訓練集,進行n次有放回的隨機采樣操作,從而得到m個樣本的采樣集,這樣訓練集中有接近36.8%的樣本沒有被采到。按照相同的方式重復進行,我們就可以采集到T個包含n個樣本的數據集,從而訓練出T個基學習器,最終對這T個基學習器的輸出進行結合。

技術分享圖片

隨機森林(Random Forest)是Bagging的一個拓展體,它在以決策樹為基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇。具體來說,傳統決策樹在選擇劃分屬性時是當前結點的屬性集合d中選擇一個最優屬性;而在RF中,對基決策樹的每個結點,先從該結點的屬性集合中隨機選擇一個包含k個屬性的子集,然後再從這個子集中選擇一個最優屬性用於劃分。這裏的參數k控制了隨機性的引入程度:若令k=d,則基決策樹的構建與傳統決策樹相同;若k=1,則是隨機選擇一個屬性用於劃分;一般情況下,推薦值k=log2d。

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

2. Boosting

Boosting的基本思想是先從初始訓練集訓練出一個基學習器,再根據基學習器的表現對訓練,樣本分布進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多關註,盡可能糾正這些錯誤,一直向下串行直至產生需要的T個基學習器,Boosting最終對這T個學習器進行加權結合。

技術分享圖片

Adaboost算法


對每一個學習器$h_{m}$,針對訓練集$D_{m}$

計算錯誤率$\varepsilon = \frac{{未正確分類的樣本數目}}{{所有樣本數目}}$

計算權重$\alpha_m = \frac{1}{2}\ln \left( {\frac{{1 - \varepsilon }}{\varepsilon }} \right)$

調整$D_{m}$中的每一個樣本$D_i^{m}$的權重為$D_i^{m+1}$,給下一個學習器$h_{m+1}$使用:

  樣本被正確分類的權重為,$D_i^{m + 1} = \frac{{D_i^m{e^{ - \alpha }}}}{{Sum(D)}}$

樣本被錯誤分類的權重為,$D_i^{m + 1} = \frac{{D_i^m{e^{ \alpha }}}}{{Sum(D)}}$

最終學習器集成為m個學習器的加權求和$H(x) = \sum\limits_{m = 1}^M {{\alpha _m}{h_m}(x)} $


提升樹

七、集成學習