天天看點

內建學習(ensemble learning)(一)一、內建學習概述二、個體學習器三、Boosting四、Bagging五、結合政策

文章目錄

  • 一、內建學習概述
  • 二、個體學習器
  • 三、Boosting
  • 四、Bagging
  • 五、結合政策
    • 1、平均法
    • 2、投票法
    • 3、學習法
      • (1)核心圖解
        • a、建構新的訓練集
        • b、建構新的測試集
        • c、最終的訓練與預測
      • (2)示例
        • a、建構新的訓練集
        • b、建構新的測試集
        • c、多模型的處理
        • d、最終的訓練與預測

內建學習(ensemble learning) 不是一個單獨的機器學習算法,而是通過建構并結合多個機器學習器來完成學習任務。內建學習可以用于分類問題內建,回歸問題內建,特征選取內建,異常點檢測內建等等,可以說所有的機器學習領域都可以看到內建學習的身影。

一、內建學習概述

基本思想:對于訓練集資料,我們通過訓練若幹個個體學習器,通過一定的結合政策,就可以最終形成一個強學習器。

內建學習(ensemble learning)(一)一、內建學習概述二、個體學習器三、Boosting四、Bagging五、結合政策

內建學習的兩個主要問題:

  • 如何得到若幹個體學習器;
  • 如何選擇一種結合政策,将若幹個體學習器內建一個強學習器。

二、個體學習器

  • 個體學習器是異質的,即所有個體學習器都是不全是同一個種類的。eg:有一個分類問題,對訓練集采用支援向量機個體學習器,邏輯回歸個體學習器和樸素貝葉斯個體學習器來學習,再通過某種結合政策來确定最終的分類強學習器。
  • 個體學習器是同質的(使用最廣泛),即所有個體學習器都是同一個種類的。eg:決策樹、神經網絡。

同質個體學習器

  • 最常用的個體學習器:CART決策樹和神經網絡
  • 按個體學習器之間的依賴關系分類:
    • 強依賴關系,一系列個體學習器基本都需要串行生成,代表算法是 boosting 系列算法;
    • 不存在強依賴關系,一系列個體學習器可以并行生成,代表算法是 bagging 系列算法。

三、Boosting

基本思想:個體學習器之間存在強依賴關系,必須串行序列化生成的內建學習方法。對訓練樣本分布調整,主要是通過增加誤分類樣本的權重,降低正确分類樣本的權重。

工作機制如下:

  • 先從初始訓練集中學習一個基學習器;
  • 根據基學習器的表現對訓練樣本分布進行調整,使得先前基學習器做錯的訓練樣本在後續收到更多關注;
  • 基于調整後的樣本分布來訓練下一個基學習器;
  • 如此反複,直到基學習器數目達到 T,最終将這 T 個基學習器進行權重結合。
    內建學習(ensemble learning)(一)一、內建學習概述二、個體學習器三、Boosting四、Bagging五、結合政策

Boosting系列算法裡最著名算法主要有AdaBoost算法和提升樹(boosting tree)系列算法。

四、Bagging

Bagging 的弱學習器之間沒有依賴關系,可以并行生成。

內建學習(ensemble learning)(一)一、內建學習概述二、個體學習器三、Boosting四、Bagging五、結合政策

bagging的個體弱學習器的訓練集是通過随機采樣得到的。

通過

T

次的随機采樣,我們就可以得到

T

個采樣集,對于這

T

個采樣集,我們可以分别獨立的訓練出

T

個弱學習器,再對這

T

個弱學習器通過集合政策來得到最終的強學習器。

随機采樣

這裡一般采用的是自助采樣法(Bootstrap sampling),即有放回的采樣

m

次,可以得到

m

個樣本的采樣集。由于是随機采樣,這樣每次的采樣集是和原始訓練集不同的,和其他采樣集也是不同的,這樣得到多個不同的弱學習器。

随機森林

bagging的典型算法,個體分類器為決策樹。随機森林的随機展現在兩方面:

  • 樣本随機采樣;
  • 特征随機選擇。

五、結合政策

不妨假設得到T個弱分類器為 { h 1 , h 2 , . . . , h T } \{h_1, h_2,...,h_T\} {h1​,h2​,...,hT​}

1、平均法

常用于回歸預測問題,即對于若幹個弱學習器的輸出進行平均得到最終的預測輸出。

算術平均:最簡單的平均,其最終預測為

H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^Th_i(x) H(x)=T1​i=1∑T​hi​(x)

權重平均:對于每個弱分類器有一個權重 w w w,則最終預測為

H ( x ) = ∑ i = 1 T w i h i ( x ) H(x)=\sum_{i=1}^Tw_ih_i(x) H(x)=i=1∑T​wi​hi​(x)

其中, w i w_i wi​是弱分類器 h i h_i hi​ 的權重,通常有

w i ≥ 0 ,     ∑ i = 1 T w i = 1 w_i\geq0,\ \ \ \sum_{i=1}^Tw_i=1 wi​≥0,   i=1∑T​wi​=1

2、投票法

常用于分類問題。假設我們的預測類别是 { c 1 , c 2 , . . . , c k } \{c_1,c_2,...,c_k\} {c1​,c2​,...,ck​},對于任意一個樣本 x x x,則T個弱分類器的預測結果分别是 ( h 1 ( x ) , h 2 ( x ) , . . . , h T ( x ) ) (h_1(x),h_2(x),...,h_T(x)) (h1​(x),h2​(x),...,hT​(x))。

相對多數投票法,即少數服從多數,預測結果中最多的類别為最終的分類類别。若不止一個類别獲得最高票,則随機選擇一個作為最終類别。

絕對多數投票法,也就是常說的票數過半,否則拒絕預測。

權重投票法,在每個弱分類器的分類票數要乘以一個權重,最終将各個類别的權重票數求和,最大的值對應的類别為最終類别。

3、學習法

平均法和投票法簡單,但是可以學習誤差大,則有了學習法,典型方法為 stacking。

概述:将個體機器學習器的結果結合在一起,即對學習器的結果再加上一層學習器。将訓練集學習器的學習結果作為輸入,将訓練集的輸出作為輸出,重新訓練一個學習器來得到最終結果。(也就是常說的兩層)

術語:

  • 弱學習器稱為初級學習器,将用于結合的學習器稱為次級學習器;
  • 對于測試集,我們首先用初級學習器預測一次,得到次級學習器的輸入樣本,再用次級學習器預測一次,得到最終的預測結果。

(1)核心圖解

內建學習(ensemble learning)(一)一、內建學習概述二、個體學習器三、Boosting四、Bagging五、結合政策

對于每一輪的 5-fold,Model 1都要做滿5次的訓練和預測。

a、建構新的訓練集

  1. 先将訓練集 D ( T r a i n i n g D a t a ) D(Training Data) D(TrainingData) 拆成 k k k 個大小相似但互不相交的子集 D 1 , D 2 , … , D k D_1,D_2,…,D_k D1​,D2​,…,Dk​;
  2. 令 D j ′ = D − D j D_j'= D - D_j Dj′​=D−Dj​,在 D j ′ D_j' Dj′​ 上訓練一個弱學習器 L j L_j Lj​ 。将 D j D_j Dj​ 作為測試集,獲得 L j L_j Lj​ 在 D j D_j Dj​ 上的輸出 D j ′ ′ D_j'' Dj′′​ ;
  3. 步驟2可以得到 k k k 個弱學習器以及 k k k 個相應的輸出 D j ′ ′ D_j'' Dj′′​ ,這個 k k k 個輸出加上原本的類标構成新的訓練集 D n D_n Dn​ ;
  4. 在 D n D_n Dn​ 訓練次學習器 L L L , L L L 即為最後的學習器。

b、建構新的測試集

  1. 對于每個訓練好的一個弱學習器 L j L_j Lj​,在測試集(Test Data,圖中所示綠色部分,不要與上面的“測試集”混淆。注意:此處是測試集的全部)進行預測,将 k k k 次的預測結果取平均作為新的預測集。

c、最終的訓練與預測

  1. 訓練集為建構新的訓練集步驟得到的訓練集,測試集為建構新的測試集得到的測試集
  2. 訓練分類器并預測。

(2)示例

a、建構新的訓練集

Train Data有890行。(請對應圖中的上層部分)

每1次的fold,都會生成 713行 小train, 178行 小test。我們用Model 1來訓練 713行的小train,然後預測 178行 小test。預測的結果是長度為 178 的預測值。

這樣的動作走5次! 長度為178 的預測值 X 5 = 890 預測值,剛好和Train data長度吻合。這個890預測值是Model 1産生的,我們先存着,因為,一會讓它将是第二層模型的訓練來源。

重點:這一步産生的預測值我們可以轉成 890 X 1 (890 行,1列),記作 P1 (大寫P)

b、建構新的測試集

Test Data 有 418 行。(請對應圖中的下層部分,對對對,綠綠的那些框框)

每1次的fold,713行 小train訓練出來的Model 1要去預測我們全部的Test Data(全部!因為Test Data沒有加入5-fold,是以每次都是全部!)。此時,Model 1的預測結果是長度為418的預測值。

這樣的動作走5次!我們可以得到一個 5 X 418 的預測值矩陣。然後我們根據行來就平均值,最後得到一個 1 X 418 的平均預測值。

重點:這一步産生的預測值我們可以轉成 418 X 1 (418行,1列),記作 p1 (小寫p)

c、多模型的處理

走到這裡,你的第一層的Model 1完成了它的使命。

第一層還會有其他Model的,比如Model 2,同樣的走一遍, 我們有可以得到 890 X 1 (P2) 和 418 X 1 (p2) 列預測值。

這樣吧,假設你第一層有3個模型,這樣你就會得到:

來自5-fold的預測值矩陣 890 X 3,(P1,P2, P3) 和 來自Test Data預測值矩陣 418 X 3, (p1, p2, p3)。

d、最終的訓練與預測

來自5-fold的預測值矩陣 890 X 3 作為你的Train Data,訓練第二層的模型

來自Test Data預測值矩陣 418 X 3 就是你的Test Data,用訓練好的模型來預測他們吧。

繼續閱讀