文章目錄
- 一、內建學習概述
- 二、個體學習器
- 三、Boosting
- 四、Bagging
- 五、結合政策
-
- 1、平均法
- 2、投票法
- 3、學習法
-
- (1)核心圖解
-
- a、建構新的訓練集
- b、建構新的測試集
- c、最終的訓練與預測
- (2)示例
-
- a、建構新的訓練集
- b、建構新的測試集
- c、多模型的處理
- d、最終的訓練與預測
內建學習(ensemble learning) 不是一個單獨的機器學習算法,而是通過建構并結合多個機器學習器來完成學習任務。內建學習可以用于分類問題內建,回歸問題內建,特征選取內建,異常點檢測內建等等,可以說所有的機器學習領域都可以看到內建學習的身影。
一、內建學習概述
基本思想:對于訓練集資料,我們通過訓練若幹個個體學習器,通過一定的結合政策,就可以最終形成一個強學習器。
內建學習的兩個主要問題:
- 如何得到若幹個體學習器;
- 如何選擇一種結合政策,将若幹個體學習器內建一個強學習器。
二、個體學習器
- 個體學習器是異質的,即所有個體學習器都是不全是同一個種類的。eg:有一個分類問題,對訓練集采用支援向量機個體學習器,邏輯回歸個體學習器和樸素貝葉斯個體學習器來學習,再通過某種結合政策來确定最終的分類強學習器。
- 個體學習器是同質的(使用最廣泛),即所有個體學習器都是同一個種類的。eg:決策樹、神經網絡。
同質個體學習器
- 最常用的個體學習器:CART決策樹和神經網絡
- 按個體學習器之間的依賴關系分類:
- 強依賴關系,一系列個體學習器基本都需要串行生成,代表算法是 boosting 系列算法;
- 不存在強依賴關系,一系列個體學習器可以并行生成,代表算法是 bagging 系列算法。
三、Boosting
基本思想:個體學習器之間存在強依賴關系,必須串行序列化生成的內建學習方法。對訓練樣本分布調整,主要是通過增加誤分類樣本的權重,降低正确分類樣本的權重。
工作機制如下:
- 先從初始訓練集中學習一個基學習器;
- 根據基學習器的表現對訓練樣本分布進行調整,使得先前基學習器做錯的訓練樣本在後續收到更多關注;
- 基于調整後的樣本分布來訓練下一個基學習器;
- 如此反複,直到基學習器數目達到 T,最終将這 T 個基學習器進行權重結合。
Boosting系列算法裡最著名算法主要有AdaBoost算法和提升樹(boosting tree)系列算法。
四、Bagging
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)=T1i=1∑Thi(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∑Twihi(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∑Twi=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)核心圖解
對于每一輪的 5-fold,Model 1都要做滿5次的訓練和預測。
a、建構新的訓練集
- 先将訓練集 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;
- 令 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′′ ;
- 步驟2可以得到 k k k 個弱學習器以及 k k k 個相應的輸出 D j ′ ′ D_j'' Dj′′ ,這個 k k k 個輸出加上原本的類标構成新的訓練集 D n D_n Dn ;
- 在 D n D_n Dn 訓練次學習器 L L L , L L L 即為最後的學習器。
b、建構新的測試集
- 對于每個訓練好的一個弱學習器 L j L_j Lj,在測試集(Test Data,圖中所示綠色部分,不要與上面的“測試集”混淆。注意:此處是測試集的全部)進行預測,将 k k k 次的預測結果取平均作為新的預測集。
c、最終的訓練與預測
- 訓練集為建構新的訓練集步驟得到的訓練集,測試集為建構新的測試集得到的測試集
- 訓練分類器并預測。
(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,用訓練好的模型來預測他們吧。