集成學習原理

看到一個大牛的博客,很是好:  集成學習原理小結html

這我的的博客裏還有其餘算法總結,跟着他一塊學習。算法

 

算是RF GBDT前傳 網絡

集成學習 (ensemble learning) 能夠說是如今很是火爆的機器學習方法了。它自己不是一個單獨的機器學習算法,而是經過構建並結合多個機器學習器來完成學習任務。也就是咱們常說的 「博採衆長」。集成學習能夠用於分類問題集成,迴歸問題集成,特徵選取集成,異常點檢測集成等等,能夠說全部的機器學習領域均可以看到集成學習的身影。本文就對集成學習的原理作一個總結。dom

1. 集成學習概述

    從下圖,咱們能夠對集成學習的思想作一個歸納。對於訓練集數據,咱們經過訓練若干個個體學習器,經過必定的結合策略,就能夠最終造成一個強學習器,以達到博採衆長的目的。機器學習

    也就是說,集成學習有兩個主要的問題須要解決,第一是如何獲得若干個個體學習器,第二是如何選擇一種結合策略,將這些個體學習器集合成一個強學習器。post

2. 集成學習之個體學習器

    上一節咱們講到,集成學習的第一個問題就是如何獲得若干個個體學習器。這裏咱們有兩種選擇。學習

    第一種就是全部的個體學習器都是一個種類的,或者說是同質的。好比都是決策樹個體學習器,或者都是神經網絡個體學習器。第二種是全部的個體學習器不全是一個種類的,或者說是異質的。好比咱們有一個分類問題,對訓練集採用支持向量機個體學習器,邏輯迴歸個體學習器和樸素貝葉斯個體學習器來學習,再經過某種結合策略來肯定最終的分類強學習器。測試

    目前來講,同質個體學習器的應用是最普遍的,通常咱們常說的集成學習的方法都是指的同質個體學習器。而同質個體學習器使用最多的模型是 CART 決策樹和神經網絡。同質個體學習器按照個體學習器之間是否存在依賴關係能夠分爲兩類,第一個是個體學習器之間存在強依賴關係,一系列個體學習器基本都須要串行生成,表明算法是 boosting 系列算法,第二個是個體學習器之間不存在強依賴關係,一系列個體學習器能夠並行生成,表明算法是 bagging 和隨機森林(Random Forest)系列算法。下面就分別對這兩類算法作一個歸納總結。url

3. 集成學習之 boosting

    boosting 的算法原理咱們能夠用一張圖作一個歸納以下:spa

    從圖中能夠看出,Boosting 算法的工做機制是首先從訓練集用初始權重訓練出一個弱學習器 1,根據弱學習的學習偏差率表現來更新訓練樣本的權重,使得以前弱學習器 1 學習偏差率高的訓練樣本點的權重變高,使得這些偏差率高的點在後面的弱學習器 2 中獲得更多的重視。而後基於調整權重後的訓練集來訓練弱學習器 2.,如此重複進行,直到弱學習器數達到事先指定的數目 T,最終將這 T 個弱學習器經過集合策略進行整合,獲得最終的強學習器。

    Boosting 系列算法裏最著名算法主要有 AdaBoost 算法和提高樹 (boosting tree) 系列算法。提高樹系列算法裏面應用最普遍的是梯度提高樹 (Gradient Boosting Tree)。AdaBoost 和提高樹算法的原理在後面的文章中會專門來說。

4. 集成學習之 bagging

    Bagging 的算法原理和 boosting 不一樣,它的弱學習器之間沒有依賴關係,能夠並行生成,咱們能夠用一張圖作一個歸納以下:

    從上圖能夠看出,bagging 的個體弱學習器的訓練集是經過隨機採樣獲得的。經過 T 次的隨機採樣,咱們就能夠獲得 T 個採樣集,對於這 T 個採樣集,咱們能夠分別獨立的訓練出 T 個弱學習器,再對這 T 個弱學習器經過集合策略來獲得最終的強學習器。

    對於這裏的隨機採樣有必要作進一步的介紹,這裏通常採用的是自助採樣法(Bootstap sampling), 即對於 m 個樣本的原始訓練集,咱們每次先隨機採集一個樣本放入採樣集,接着把該樣本放回,也就是說下次採樣時該樣本仍有可能被採集到,這樣採集 m 次,最終能夠獲得 m 個樣本的採樣集,因爲是隨機採樣,這樣每次的採樣集是和原始訓練集不一樣的,和其餘採樣集也是不一樣的,這樣獲得多個不一樣的弱學習器。

    隨機森林是 bagging 的一個特化進階版,所謂的特化是由於隨機森林的弱學習器都是決策樹。所謂的進階是隨機森林在 bagging 的樣本隨機採樣基礎上,又加上了特徵的隨機選擇,其基本思想沒有脫離 bagging 的範疇。bagging 和隨機森林算法的原理在後面的文章中會專門來說。

5. 集成學習之結合策略

    在上面幾節裏面咱們主要關注於學習器,提到了學習器的結合策略但沒有細講,本節就對集成學習之結合策略作一個總結。咱們假定我獲得的 T 個弱學習器是 {h1,h2,...hT}{h1,h2,...hT}

5.1 平均法

    對於數值類的迴歸預測問題,一般使用的結合策略是平均法,也就是說,對於若干和弱學習器的輸出進行平均獲得最終的預測輸出。

    最簡單的平均是算術平均,也就是說最終預測是

      

    若是每一個個體學習器有一個權重 ww,則最終預測是

      

    其中 wi 是個體學習器 hi 的權重,一般有

       

5.2 投票法

    對於分類問題的預測,咱們一般使用的是投票法。假設咱們的預測類別是 {c1,c2,...cK}{c1,c2,...cK}, 對於任意一個預測樣本 x,咱們的 T 個弱學習器的預測結果分別是 (h1(x),h2(x)...hT(x))(h1(x),h2(x)...hT(x))。

    最簡單的投票法是相對多數投票法,也就是咱們常說的少數服從多數,也就是 T 個弱學習器的對樣本 x 的預測結果中,數量最多的類別 cici 爲最終的分類類別。若是不止一個類別得到最高票,則隨機選擇一個作最終類別。

    稍微複雜的投票法是絕對多數投票法,也就是咱們常說的要票過半數。在相對多數投票法的基礎上,不光要求得到最高票,還要求票過半數。不然會拒絕預測。

    更加複雜的是加權投票法,和加權平均法同樣,每一個弱學習器的分類票數要乘以一個權重,最終將各個類別的加權票數求和,最大的值對應的類別爲最終類別。

5.3 學習法

    上兩節的方法都是對弱學習器的結果作平均或者投票,相對比較簡單,可是可能學習偏差較大,因而就有了學習法這種方法,對於學習法,表明方法是 stacking,當使用 stacking 的結合策略時, 咱們不是對弱學習器的結果作簡單的邏輯處理,而是再加上一層學習器,也就是說,咱們將訓練集弱學習器的學習結果做爲輸入,將訓練集的輸出做爲輸出,從新訓練一個學習器來獲得最終結果。

    在這種狀況下,咱們將弱學習器稱爲初級學習器,將用於結合的學習器稱爲次級學習器。對於測試集,咱們首先用初級學習器預測一次,獲得次級學習器的輸入樣本,再用次級學習器預測一次,獲得最終的預測結果。

 

    以上就是集成學習原理的一個總結,後面會分別對 Adaboost, 提高樹,bagging 和隨機森林的算法原理作一個總結,敬請期待。

相關文章
相關標籤/搜索