引言:在機器學(xué)習(xí)的有監(jiān)督學(xué)習(xí)算法中吻育,我們的目標(biāo)是學(xué)習(xí)出一個穩(wěn)定的且在各個方面表現(xiàn)都比較好的模型炼幔,但實際情況往往不這么理想,有時我們只能得到多個有偏好的模型(弱監(jiān)督模型滚局,在某些方面表現(xiàn)的比較好)居暖。集成學(xué)習(xí)就是組合這里的多個弱監(jiān)督模型以期得到一個更好全面的強監(jiān)督模型,集成學(xué)習(xí)潛在的思想即便某一個弱分類器得到了錯誤的預(yù)測藤肢,其它的弱分類器也可以將錯誤糾正回來太闺。
? ? 集成學(xué)習(xí)在各個規(guī)模的數(shù)據(jù)及上都有很好的策略。
?數(shù)據(jù)集大:劃分成多個小數(shù)據(jù)集嘁圈,學(xué)習(xí)多個模型進行組合省骂。
?數(shù)據(jù)集小:利用Boostrap方法進行抽樣最住,得到多個數(shù)據(jù)集钞澳,分別訓(xùn)練多個模型再進行組合。
1. 集成學(xué)習(xí)的分類
? ? 集成方法可以分類為:Bagging/Boosting/Stacking/Blending涨缚。也可以分類為串行集成方法和并行集成方法轧粟。串行模型的原理是通過基礎(chǔ)模型的獨立性,然后通過平均能夠較大地降低誤差脓魏。大部分集成模型都是通過一個基礎(chǔ)學(xué)習(xí)算法來生成一個同質(zhì)的基礎(chǔ)學(xué)習(xí)器兰吟,即同類型的學(xué)習(xí)器,也叫同質(zhì)集成茂翔。而異質(zhì)集成混蔼,為了集成后的結(jié)果表現(xiàn)最好,異質(zhì)基礎(chǔ)學(xué)習(xí)器需要盡可能準(zhǔn)確并且差異性夠大珊燎。下面我們就分別了解四種集成學(xué)習(xí)框架惭嚣。
?同質(zhì)集成中,個體學(xué)習(xí)由相同的學(xué)習(xí)算法生成俐末,個體學(xué)習(xí)器稱為基學(xué)習(xí)器料按。
?異質(zhì)集成中,個體學(xué)習(xí)器由不同的學(xué)習(xí)算法生成卓箫,個體學(xué)習(xí)器稱為組件學(xué)習(xí)器载矿。
要求:
(1)個體學(xué)習(xí)器要好于隨機猜測的結(jié)果。
(2)個體學(xué)習(xí)器要相互獨立。
? ? 第一個條件相對來說比較容易實現(xiàn)闷盔,在當(dāng)前問題下訓(xùn)練一個模型弯洗,結(jié)果比瞎猜的結(jié)果好就行了则果。第二個條件是集成學(xué)習(xí)研究的核心問題肠鲫。每個個體學(xué)習(xí)器學(xué)習(xí)的都是同一個問題,所以個體學(xué)習(xí)器不可能做到完全相互獨立疼约。想想小時候溺拱,老師讓你發(fā)表不同的觀點逃贝,想想寫論文的時候找創(chuàng)新點,人都很難做到這樣一件事情迫摔,何況它只是一個小小的學(xué)習(xí)算法沐扳。
1.1 Bagging
? ? Bagging是bootstrap aggregating的簡寫。先說下boorstrap(即自助法)句占,它是一種有放回的抽樣方法沪摄,目的是為了得到統(tǒng)計量的分布以及置信區(qū)間。具體步驟如下:
? ? (1)在訓(xùn)練數(shù)據(jù)集中隨機采樣纱烘,所謂的隨機采樣(bootstrap)就是從我們的訓(xùn)練集里面采集國定個數(shù)的樣本杨拐,但是每采集一個樣本后,都將樣本放回擂啥。也就是說哄陶,之前采集到的樣本在放回后有可能繼續(xù)被采集到。對于我們的Bagging算法啤它,一般會隨機采集和訓(xùn)練集樣本數(shù)m一樣個數(shù)的樣本奕筐。這樣得到的采樣集和訓(xùn)練集樣本的個數(shù)相同舱痘,但是樣本內(nèi)容不同变骡。如果我們對有m個樣本訓(xùn)練集做T次的隨機采樣,則由于隨機性芭逝,T個采樣集各不相同塌碌。
? ? (2)訓(xùn)練一個集模型,對不同的子集進行訓(xùn)練旬盯。得到T個基模型台妆。
? ? (3)T個基模型對測試數(shù)據(jù)進行預(yù)測,得到預(yù)測結(jié)果胖翰。
? ? (4)將T中結(jié)果綜合起來接剩。分類任務(wù)通常使用投票的方式得出結(jié)果,回歸任務(wù)用評價的方式得到結(jié)果萨咳。
? ? 在Bagging方法中懊缺,利用bootstrap方法從整體數(shù)據(jù)集中采取有放回抽樣得到N個數(shù)據(jù)集,在每個數(shù)據(jù)集上學(xué)習(xí)出一個模型培他,最后的預(yù)測結(jié)果利用N個模型的輸出得到鹃两,具體地:分類問題采用N個模型預(yù)測投票的方式遗座,回歸問題采用N個模型預(yù)測平均的方式。
? ? 例如隨機森林(Random forest)就屬于Bagging俊扳。隨機森林簡單地說就是用隨機的方式建立一個森林途蒋,森林由很多的決策樹組成,隨機森林的每一棵決策樹之間是沒有關(guān)聯(lián)的馋记。
????在我們學(xué)習(xí)每一棵決策樹的時候就需要用到Boostrap方法号坡。在隨機森林中,有兩個隨機采樣的過程:對輸入數(shù)據(jù)的行(數(shù)據(jù)的數(shù)量)與列(數(shù)據(jù)的特征)都進行采樣梯醒。對于行采樣筋帖,采用有放回的方式,若有N個數(shù)據(jù)冤馏,則采樣出N個數(shù)據(jù)(可能有重復(fù))日麸,這樣在訓(xùn)練的時候每一棵樹都不是全部的樣本,相對而言不容易出現(xiàn)overfitting逮光;接著進行列采樣從M個特征選出m個(m<<M)代箭。最后進行決策樹學(xué)習(xí)。
? ? 預(yù)測的時候涕刚,隨機森林的每一棵數(shù)的都對輸入進行預(yù)測嗡综,最后進行投票,哪個類別多杜漠,輸入樣本就屬于哪個類別极景。這就相當(dāng)于前面說的,每一個分類器(每一棵樹)都比較弱驾茴,但組合到一起(投票)就比較強了盼樟。
1.2 Boosting
????提升方法是一種可以用來減小監(jiān)督學(xué)習(xí)中偏差的機器學(xué)習(xí)算法。主要也是學(xué)習(xí)一系列弱分類器锈至,并將其組合為一個強分類器晨缴。Boosting中有代表性的是AdaBoost算法:剛開始訓(xùn)練時對每一個訓(xùn)練例賦相等的權(quán)重,然后用該算法對訓(xùn)練集訓(xùn)練t輪峡捡,每次訓(xùn)練后击碗,對訓(xùn)練失敗的訓(xùn)練例賦以較大的權(quán)重,也就是讓學(xué)習(xí)算法在每次學(xué)習(xí)以后更注意學(xué)錯的樣本们拙,從而得到多個預(yù)測函數(shù)稍途。具體可以參考《統(tǒng)計學(xué)習(xí)方法》。GBDT也是一種Boosting的方法砚婆,與AdaBoost不同械拍,GBDT每一次的計算是為了減少上一次的殘差,GBDT在殘差減少(負梯度)的方向上建立一個新的模型。
? ? 訓(xùn)練過程為階梯狀殊者,基模型按次序一一進行訓(xùn)練(實現(xiàn)上可以做到并行)与境,基模型的訓(xùn)練集按照某種策略每次進行一定的轉(zhuǎn)化。對所有基模型預(yù)測的結(jié)果進行線性綜合產(chǎn)生最終的預(yù)測結(jié)果猖吴。
(1)初始化訓(xùn)練數(shù)據(jù)的權(quán)重摔刁,w1=w2=...=wn=1/N,N為樣本的數(shù)量海蔽。
(2)訓(xùn)練第一個基模型共屈,計算模型的錯誤率,計算模型的系數(shù)党窜。
(3)更新數(shù)據(jù)集的權(quán)重拗引,誤分類數(shù)據(jù)的權(quán)重調(diào)大,分類正確的數(shù)據(jù)權(quán)值調(diào)小幌衣。在訓(xùn)練一個基類模型矾削。依次進行。
(4)每個模型對測試數(shù)據(jù)豁护,進行預(yù)測哼凯。
(5)對所有基模型的預(yù)測結(jié)果進行加權(quán)求和。準(zhǔn)確率高的模型調(diào)大權(quán)值楚里,準(zhǔn)確率低的模型減小權(quán)值断部。
Bagging與Boosting的區(qū)別
(1)數(shù)據(jù)方面
? ? Bagging:對數(shù)據(jù)進行采樣訓(xùn)練。
? ? Boosting:根據(jù)前一輪學(xué)習(xí)結(jié)果調(diào)整數(shù)據(jù)的重要性班缎。
(2)投票方面
? ? Bagging:所有學(xué)習(xí)器平均投票蝴光。
? ? Boosting:對學(xué)習(xí)器進行加權(quán)投票。
(3)學(xué)習(xí)順序
? ? Bagging的學(xué)習(xí)是并行的达址,每個學(xué)習(xí)器沒有依賴關(guān)系蔑祟。
? ? Boosting學(xué)習(xí)是串行,學(xué)習(xí)有先后順序苏携。
(4)主要作用
? ? Bagging主要用于提高泛化性能(解決過擬合做瞪,也可以說降低方差)
? ? Boosting主要用于提高訓(xùn)練精度(解決欠擬合对粪,也可以說降低偏差)
? ? 從算法來看右冻,Bagging關(guān)注的是多個基模型的投票組合,保證了模型的穩(wěn)定著拭,因而每一個基模型就要相對復(fù)雜一些以降低偏差(比如每一棵決策樹都很深)纱扭;而Boosting采用的策略是在每一次學(xué)習(xí)中都減少上一輪的偏差,因為保證了偏差的基礎(chǔ)上就要將每一個基分類器簡化為使得方差更小儡遮。
1.3 Stacking
?Stacking方法是指訓(xùn)練一個模型用于組合其他各個模型乳蛾。首先我們先訓(xùn)練多個不同的模型,然后把之前訓(xùn)練的各個模型的輸出為輸入來訓(xùn)練一個模型,以得到一個最終的輸出肃叶。理論上蹂随,Stacking可以表示上面提到的兩種Ensemble方法,只要我們采用合適的模型組合策略即可因惭。但在實際中岳锁,我們通常使用logistic回歸作為組合策略。
? ? 將訓(xùn)練好的所有基模型對訓(xùn)練集進行預(yù)測蹦魔,第j個基模型對第i個訓(xùn)練樣本的預(yù)測值將作為新的訓(xùn)練集中第i個樣本的第j個特征值激率,最后基于新的訓(xùn)練集進行訓(xùn)練。同理勿决,預(yù)測的過程也要先經(jīng)過所有基模型的預(yù)測形成新的測試集乒躺,最后再對測試集進行預(yù)測。
? ? (1)使用訓(xùn)練數(shù)據(jù)低缩,訓(xùn)練T個不同的模型嘉冒,得到T個基模型。
? ? (2)使用T個基模型咆繁,分別對訓(xùn)練數(shù)據(jù)進行預(yù)測健爬,與原始訓(xùn)練數(shù)據(jù)的標(biāo)簽一起組成新的訓(xùn)練數(shù)據(jù)。
? ? (3)使用T個基模型么介,分別對測試數(shù)據(jù)進行預(yù)測娜遵,生成新的測試數(shù)據(jù)。
? ? (4)使用新的訓(xùn)練數(shù)據(jù)壤短,訓(xùn)練一個元模型设拟。
? ? (5)使用元模型對測試數(shù)據(jù)進行預(yù)測,得到最終結(jié)果久脯。
下面為Stacking框架圖:
1.4 Blending
? ? 將訓(xùn)練數(shù)據(jù)進行劃分纳胧,劃分之后的訓(xùn)練數(shù)據(jù)一部分訓(xùn)練基模型,一部分經(jīng)模型預(yù)測后作為新的特征訓(xùn)練元模型帘撰。測試數(shù)據(jù)同樣經(jīng)過基模型預(yù)測跑慕,形成新的測試數(shù)據(jù)。最后摧找,元模型對新的測試數(shù)據(jù)進行預(yù)測核行。Blending框架圖如下所示:
? ? (1)將原始訓(xùn)練數(shù)據(jù)劃分為訓(xùn)練集和驗證集。
? ? (2)使用訓(xùn)練集對訓(xùn)練T個不同的模型蹬耘。
? ? (3)使用T個基模型芝雪,對驗證集進行預(yù)測,結(jié)果作為新的訓(xùn)練數(shù)據(jù)综苔。
? ? (4)使用新的訓(xùn)練數(shù)據(jù)惩系,訓(xùn)練一個元模型位岔。
? ? (5)使用T個基模型,對測試數(shù)據(jù)進行預(yù)測堡牡,結(jié)果作為新的測試數(shù)據(jù)抒抬。
? ? (6)使用元模型對新的測試數(shù)據(jù)進行預(yù)測,得到最終結(jié)果晤柄。
2.1 訓(xùn)練樣本擾動
? ? 從原始訓(xùn)練樣本中產(chǎn)生不同的樣本子集瞧剖,然后利用不同的樣本自己訓(xùn)練不同的個體學(xué)習(xí)器。如Bagging中使用的是資助采樣可免,Boosting中使用的序列采樣抓于。
? ? 這種訓(xùn)練樣本擾動的方法簡單有效,但只對不穩(wěn)定的基學(xué)習(xí)器有效浇借,像決策樹捉撮、神經(jīng)網(wǎng)絡(luò)等;對于穩(wěn)定的基學(xué)習(xí)器妇垢,如線性學(xué)習(xí)器巾遭、支持向量機、樸素貝葉斯闯估、KNN等灼舍,就效果不明顯,產(chǎn)生這個問題的原因就是因為穩(wěn)定的基學(xué)習(xí)器涨薪,“變通能力”并不是很強骑素。
? ? 集成學(xué)習(xí)分為個體學(xué)習(xí)器之間存在強依賴關(guān)系、必須串行生成的序列方法-Boosting和不存在強依賴關(guān)系刚夺,可同時生成并行化方法-Bagging献丑。
2.2 輸入屬性擾動:
? ? 輸入屬性擾動通常是從初始屬性集中抽取出若干個屬性子集,然后利用不同的屬性子集訓(xùn)練出不同的個體學(xué)習(xí)器侠姑。比如有:1998年Tin Kam Ho所提出的隨機子空間方法创橄,英文Random subspace method(RSM),又叫attribute bagging 或者feature bagging莽红。隨機子空間(RSM)通過使用隨機的部分特征妥畏,而不是所有特征來訓(xùn)練每個分類器,來降低每個分類器之間的相關(guān)性安吁。
? ? RSM的方法常用于特征數(shù)比較多的場景中醉蚁,如核磁共振、基因組序列柳畔、CSI(信道狀態(tài)信息)馍管。在訓(xùn)練完成之后,依據(jù)預(yù)測結(jié)果再做進一步處理薪韩,如投票或結(jié)合先驗概率确沸。
2.3 算法參數(shù)擾動:
? ? 算法參數(shù)擾動指的是通過隨機設(shè)置不同的參數(shù)來訓(xùn)練差別較大的個體學(xué)習(xí)器。如下圖所示的神經(jīng)網(wǎng)絡(luò)的隱層神經(jīng)元數(shù)俘陷、初始連接權(quán)值不同罗捎。
此類方法對參數(shù)較多的算法有效,對參數(shù)較少的算法拉盾,可通過將學(xué)習(xí)過程中某些環(huán)節(jié)用其他類似方法代替桨菜?從而達到擾動的目的。
2.4 輸出標(biāo)記擾動
? ? 輸出標(biāo)記擾動是對訓(xùn)練樣本的類別記稍作變動捉偏,將原來的多分類問題隨機轉(zhuǎn)化為多個二分類問題來訓(xùn)練基學(xué)習(xí)器倒得。經(jīng)典的一個算法就是糾錯輸出編碼法(Error-Correcting Output Codes, ECOC)。
? ? 將每個類別對應(yīng)一個長度為n的二進制位串(稱為碼字)夭禽,共形成m個碼字霞掺,這些碼字的同一位描述了一個二值函數(shù)。學(xué)習(xí)結(jié)束后獲得n個二分類器讹躯,在分類階段菩彬,每個二分類器對輸入樣本產(chǎn)生的輸出形式輸出向量,然后由決策規(guī)則判定輸入樣本的類別潮梯。
? ? 這類方法對類數(shù)足夠多的數(shù)據(jù)集有效骗灶,但若數(shù)據(jù)集包含的類數(shù)較少,則不宜使用秉馏。
2.5 混合擾動:
混合擾動在同一個集成算法中同時使用上述多種擾動方法耙旦。比如隨機森林就同時使用了訓(xùn)練樣本擾動和輸入屬性擾動。
2.6? 集成學(xué)習(xí)策略
? ? 主要有平均法和常見的投票法(Voting)萝究,具體包括:
(1)簡單平均法:簡單地輸出結(jié)果平均一下母廷。
(2)加權(quán)平均法:乘以權(quán)值系數(shù)將其加起來。
(3)絕對多數(shù)投票法:即若標(biāo)記的票過半數(shù)糊肤,則分類為該標(biāo)記琴昆,否則拒絕分類。
(4)相對多數(shù)投票法:分類為得票最多的標(biāo)記馆揉,若同時有多個標(biāo)記獲得最高票业舍,則從中隨機選取一個。
(5)加權(quán)投票法:給每個個體學(xué)習(xí)器預(yù)測的類標(biāo)記賦一個權(quán)值升酣,分類為權(quán)值最大的標(biāo)記舷暮。這里的權(quán)值通常為該個體學(xué)習(xí)器的分類置信度(類成員概率)。