集成学习(ensemble learning)(一)
文章目錄
- 一、集成學習概述
- 二、個體學習器
- 三、Boosting
- 四、Bagging
- 五、結(jié)合策略
- 1、平均法
- 2、投票法
- 3、學習法
- (1)核心圖解
- a、構(gòu)建新的訓練集
- b、構(gòu)建新的測試集
- c、最終的訓練與預(yù)測
- (2)示例
- a、構(gòu)建新的訓練集
- b、構(gòu)建新的測試集
- c、多模型的處理
- d、最終的訓練與預(yù)測
集成學習(ensemble learning) 不是一個單獨的機器學習算法,而是通過構(gòu)建并結(jié)合多個機器學習器來完成學習任務(wù)。集成學習可以用于分類問題集成,回歸問題集成,特征選取集成,異常點檢測集成等等,可以說所有的機器學習領(lǐng)域都可以看到集成學習的身影。
一、集成學習概述
基本思想:對于訓練集數(shù)據(jù),我們通過訓練若干個個體學習器,通過一定的結(jié)合策略,就可以最終形成一個強學習器。
集成學習的兩個主要問題:
- 如何得到若干個體學習器;
- 如何選擇一種結(jié)合策略,將若干個體學習器集成一個強學習器。
二、個體學習器
- 個體學習器是異質(zhì)的,即所有個體學習器都是不全是同一個種類的。eg:有一個分類問題,對訓練集采用支持向量機個體學習器,邏輯回歸個體學習器和樸素貝葉斯個體學習器來學習,再通過某種結(jié)合策略來確定最終的分類強學習器。
- 個體學習器是同質(zhì)的(使用最廣泛),即所有個體學習器都是同一個種類的。eg:決策樹、神經(jīng)網(wǎng)絡(luò)。
同質(zhì)個體學習器
- 最常用的個體學習器:CART決策樹和神經(jīng)網(wǎng)絡(luò)
- 按個體學習器之間的依賴關(guān)系分類:
- 強依賴關(guān)系,一系列個體學習器基本都需要串行生成,代表算法是 boosting 系列算法;
- 不存在強依賴關(guān)系,一系列個體學習器可以并行生成,代表算法是 bagging 系列算法。
三、Boosting
基本思想:個體學習器之間存在強依賴關(guān)系,必須串行序列化生成的集成學習方法。對訓練樣本分布調(diào)整,主要是通過增加誤分類樣本的權(quán)重,降低正確分類樣本的權(quán)重。
工作機制如下:
- 先從初始訓練集中學習一個基學習器;
- 根據(jù)基學習器的表現(xiàn)對訓練樣本分布進行調(diào)整,使得先前基學習器做錯的訓練樣本在后續(xù)收到更多關(guān)注;
- 基于調(diào)整后的樣本分布來訓練下一個基學習器;
- 如此反復(fù),直到基學習器數(shù)目達到 T,最終將這 T 個基學習器進行加權(quán)結(jié)合。
Boosting系列算法里最著名算法主要有AdaBoost算法和提升樹(boosting tree)系列算法。
四、Bagging
Bagging 的弱學習器之間沒有依賴關(guān)系,可以并行生成。
bagging的個體弱學習器的訓練集是通過隨機采樣得到的。
通過 T 次的隨機采樣,我們就可以得到 T 個采樣集,對于這 T 個采樣集,我們可以分別獨立的訓練出 T 個弱學習器,再對這 T 個弱學習器通過集合策略來得到最終的強學習器。
隨機采樣
這里一般采用的是自助采樣法(Bootstrap sampling),即有放回的采樣 m 次,可以得到 m 個樣本的采樣集。由于是隨機采樣,這樣每次的采樣集是和原始訓練集不同的,和其他采樣集也是不同的,這樣得到多個不同的弱學習器。
隨機森林
bagging的典型算法,個體分類器為決策樹。隨機森林的隨機體現(xiàn)在兩方面:
- 樣本隨機采樣;
- 特征隨機選擇。
五、結(jié)合策略
不妨假設(shè)得到T個弱分類器為 {h1,h2,...,hT}\{h_1, h_2,...,h_T\}{h1?,h2?,...,hT?}
1、平均法
常用于回歸預(yù)測問題,即對于若干個弱學習器的輸出進行平均得到最終的預(yù)測輸出。
算術(shù)平均:最簡單的平均,其最終預(yù)測為
H(x)=1T∑i=1Thi(x)H(x)=\frac{1}{T}\sum_{i=1}^Th_i(x)H(x)=T1?i=1∑T?hi?(x)
加權(quán)平均:對于每個弱分類器有一個權(quán)重 www,則最終預(yù)測為
H(x)=∑i=1Twihi(x)H(x)=\sum_{i=1}^Tw_ih_i(x)H(x)=i=1∑T?wi?hi?(x)
其中,wiw_iwi?是弱分類器 hih_ihi? 的權(quán)重,通常有
wi≥0,∑i=1Twi=1w_i\geq0,\ \ \ \sum_{i=1}^Tw_i=1wi?≥0,???i=1∑T?wi?=1
2、投票法
常用于分類問題。假設(shè)我們的預(yù)測類別是 {c1,c2,...,ck}\{c_1,c_2,...,c_k\}{c1?,c2?,...,ck?},對于任意一個樣本 xxx,則T個弱分類器的預(yù)測結(jié)果分別是 (h1(x),h2(x),...,hT(x))(h_1(x),h_2(x),...,h_T(x))(h1?(x),h2?(x),...,hT?(x))。
相對多數(shù)投票法,即少數(shù)服從多數(shù),預(yù)測結(jié)果中最多的類別為最終的分類類別。若不止一個類別獲得最高票,則隨機選擇一個作為最終類別。
絕對多數(shù)投票法,也就是常說的票數(shù)過半,否則拒絕預(yù)測。
加權(quán)投票法,在每個弱分類器的分類票數(shù)要乘以一個權(quán)重,最終將各個類別的加權(quán)票數(shù)求和,最大的值對應(yīng)的類別為最終類別。
3、學習法
平均法和投票法簡單,但是可以學習誤差大,則有了學習法,典型方法為 stacking。
概述:將個體機器學習器的結(jié)果結(jié)合在一起,即對學習器的結(jié)果再加上一層學習器。將訓練集學習器的學習結(jié)果作為輸入,將訓練集的輸出作為輸出,重新訓練一個學習器來得到最終結(jié)果。(也就是常說的兩層)
術(shù)語:
- 弱學習器稱為初級學習器,將用于結(jié)合的學習器稱為次級學習器;
- 對于測試集,我們首先用初級學習器預(yù)測一次,得到次級學習器的輸入樣本,再用次級學習器預(yù)測一次,得到最終的預(yù)測結(jié)果。
(1)核心圖解
對于每一輪的 5-fold,Model 1都要做滿5次的訓練和預(yù)測。
a、構(gòu)建新的訓練集
b、構(gòu)建新的測試集
c、最終的訓練與預(yù)測
(2)示例
a、構(gòu)建新的訓練集
Train Data有890行。(請對應(yīng)圖中的上層部分)
每1次的fold,都會生成 713行 小train, 178行 小test。我們用Model 1來訓練 713行的小train,然后預(yù)測 178行 小test。預(yù)測的結(jié)果是長度為 178 的預(yù)測值。
這樣的動作走5次! 長度為178 的預(yù)測值 X 5 = 890 預(yù)測值,剛好和Train data長度吻合。這個890預(yù)測值是Model 1產(chǎn)生的,我們先存著,因為,一會讓它將是第二層模型的訓練來源。
重點:這一步產(chǎn)生的預(yù)測值我們可以轉(zhuǎn)成 890 X 1 (890 行,1列),記作 P1 (大寫P)
b、構(gòu)建新的測試集
Test Data 有 418 行。(請對應(yīng)圖中的下層部分,對對對,綠綠的那些框框)
每1次的fold,713行 小train訓練出來的Model 1要去預(yù)測我們?nèi)康腡est Data(全部!因為Test Data沒有加入5-fold,所以每次都是全部!)。此時,Model 1的預(yù)測結(jié)果是長度為418的預(yù)測值。
這樣的動作走5次!我們可以得到一個 5 X 418 的預(yù)測值矩陣。然后我們根據(jù)行來就平均值,最后得到一個 1 X 418 的平均預(yù)測值。
重點:這一步產(chǎn)生的預(yù)測值我們可以轉(zhuǎn)成 418 X 1 (418行,1列),記作 p1 (小寫p)
c、多模型的處理
走到這里,你的第一層的Model 1完成了它的使命。
第一層還會有其他Model的,比如Model 2,同樣的走一遍, 我們有可以得到 890 X 1 (P2) 和 418 X 1 (p2) 列預(yù)測值。
這樣吧,假設(shè)你第一層有3個模型,這樣你就會得到:
來自5-fold的預(yù)測值矩陣 890 X 3,(P1,P2, P3) 和 來自Test Data預(yù)測值矩陣 418 X 3, (p1, p2, p3)。
d、最終的訓練與預(yù)測
來自5-fold的預(yù)測值矩陣 890 X 3 作為你的Train Data,訓練第二層的模型
來自Test Data預(yù)測值矩陣 418 X 3 就是你的Test Data,用訓練好的模型來預(yù)測他們吧。
總結(jié)
以上是生活随笔為你收集整理的集成学习(ensemble learning)(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据竞赛】“达观杯”文本智能处理挑战赛
- 下一篇: 【爬虫】Scrapy爬取腾讯社招信息