一、介紹
集成學(xué)習(xí)就是組合這里的多個弱監(jiān)督模型以期得到一個更好更全面的強監(jiān)督模型显熏,集成學(xué)習(xí)潛在的思想是即便某一個弱分類器得到了錯誤的預(yù)測,其他的弱分類器也可以將錯誤糾正回來。
集成方法是將幾種機器學(xué)習(xí)技術(shù)組合成一個預(yù)測模型的元算法坛善,以達到減小方差(bagging)、偏差(boosting)或改進預(yù)測(stacking)的效果邻眷。
一般經(jīng)驗中眠屎,如果把好壞不一的東西摻雜在一起,那么最終結(jié)果很可能是整體效果比最壞的東西要好一些肆饶,但又比最好的那個要壞一些改衩,那么這種情況下不如就讓最好的單獨去工作,而不要參與混合驯镊。但是集成學(xué)習(xí)還是對多個學(xué)習(xí)器進行了結(jié)合葫督,那它怎么保證整體的效果會比最好的那個單一學(xué)習(xí)器的效果更好呢。要獲得好的集成板惑,個體學(xué)習(xí)器應(yīng)“好而不同”橄镜,即個體學(xué)習(xí)器要有一定的準確性,即學(xué)習(xí)器不能太壞冯乘,并且要有“多樣性”(diversity)洽胶,即學(xué)習(xí)器間具有差異。
集成學(xué)習(xí)在各個規(guī)模的數(shù)據(jù)集上都有很好的策略往湿。
數(shù)據(jù)集大:劃分成多個小數(shù)據(jù)集妖异,學(xué)習(xí)多個模型進行組合
數(shù)據(jù)集型锵贰:利用Bootstrap方法進行抽樣,得到多個數(shù)據(jù)集他膳,分別訓(xùn)練多個模型再進行組合
集成方法可分為兩類(Boosting和Bagging):
根據(jù)個體學(xué)習(xí)器生成方式的不同响逢,目前集成學(xué)習(xí)方法大致可分為兩大類,即個體學(xué)習(xí)器間存在強依賴關(guān)系棕孙、必須串行生成的序列化方法舔亭,以及個體學(xué)習(xí)器間不存在強依賴關(guān)系、可同時生成的并行化方法蟀俊;前者的代表是Boosting钦铺,后者的代表是和Bagging和“隨機森林”(Random Forest)。
序列集成方法肢预,其中參與訓(xùn)練的基礎(chǔ)學(xué)習(xí)器按照順序生成(例如 AdaBoost)矛洞。序列方法的原理是利用基礎(chǔ)學(xué)習(xí)器之間的依賴關(guān)系。通過對之前訓(xùn)練中錯誤標記的樣本賦值較高的權(quán)重烫映,可以提高整體的預(yù)測效果沼本。
并行集成方法,其中參與訓(xùn)練的基礎(chǔ)學(xué)習(xí)器并行生成(例如 Random Forest)锭沟。并行方法的原理是利用基礎(chǔ)學(xué)習(xí)器之間的獨立性抽兆,通過平均可以顯著降低錯誤。
二族淮、集成方法的特點
1. 將多個分類方法聚集在一起辫红,以提高分類的準確率。
(這些算法可以是不同的算法祝辣,也可以是相同的算法贴妻。)
2. 集成學(xué)習(xí)法由訓(xùn)練數(shù)據(jù)構(gòu)建一組基分類器,然后通過對每個基分類器的預(yù)測進行投票來進行分類
3. 嚴格來說较幌,集成學(xué)習(xí)并不算是一種分類器揍瑟,而是一種分類器結(jié)合的方法。
4. 通常一個集成分類器的分類性能會好于單個分類器
5. 如果把單個分類器比作一個決策者的話乍炉,集成學(xué)習(xí)的方法就相當于多個決策者共同進行一項決策绢片。
自然地,就產(chǎn)生兩個問題:
1)怎么訓(xùn)練每個算法岛琼?
2)怎么融合每個算法底循?
三、集成學(xué)習(xí)的幾種方法(Bagging槐瑞,Boosting以及Stacking)
1熙涤、Bagging(bootstrap aggregating,裝袋)
Bagging即套袋法,先說一下bootstrap祠挫,bootstrap也稱為自助法那槽,它是一種有放回的抽樣方法,目的為了得到統(tǒng)計量的分布以及置信區(qū)間等舔,其算法過程如下:
A)從原始樣本集中抽取訓(xùn)練集骚灸。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓(xùn)練樣本(在訓(xùn)練集中,有些樣本可能被多次抽取到慌植,而有些樣本可能一次都沒有被抽中)甚牲。共進行k輪抽取,得到k個訓(xùn)練集蝶柿。(k個訓(xùn)練集之間是相互獨立的)
B)每次使用一個訓(xùn)練集得到一個模型丈钙,k個訓(xùn)練集共得到k個模型。(注:這里并沒有具體的分類算法或回歸方法交汤,我們可以根據(jù)具體問題采用不同的分類或回歸方法雏赦,如決策樹、感知器等)
C)對分類問題:將上步得到的k個模型采用投票的方式得到分類結(jié)果蜻展;對回歸問題喉誊,計算上述模型的均值作為最后的結(jié)果。(所有模型的重要性相同)
要想獲得泛化性能強的集成纵顾,集成中的個體學(xué)習(xí)器應(yīng)盡可能相互獨立。而“獨立”在現(xiàn)實任務(wù)中比較難以做到栋盹,不過我們可以設(shè)法使基學(xué)習(xí)器盡可能具有較大的差異施逾。給定一個訓(xùn)練集,一種可能的做法是對訓(xùn)練樣本進行采樣例获,產(chǎn)生出若干個不同的子集汉额,再從每個數(shù)據(jù)子集中訓(xùn)練出一個基學(xué)習(xí)器,這樣榨汤,由于訓(xùn)練數(shù)據(jù)不同蠕搜,我們獲得的基學(xué)習(xí)器可望具有比較大的差異。然而收壕,為獲得好的集成妓灌,我們同時希望個體學(xué)習(xí)器不能太差。如果采樣出的每個子集都完全不同蜜宪,則每個基學(xué)習(xí)器只用到了一小部分訓(xùn)練數(shù)據(jù)虫埂,那甚至不能進行有效的學(xué)習(xí),更不談確保產(chǎn)生比較好的基學(xué)習(xí)器了圃验。于是掉伏,為了解決這個問題,我們使用相互有交疊的采樣子集。
Bagging基于前面提到過的自助采樣法(bootstrap sampling)斧散。給定包含m個樣本的數(shù)據(jù)集供常,我們先隨機取出一個樣本放入采樣集中,再把該樣本放回初始數(shù)據(jù)集鸡捐,使得下次采樣時該樣本仍有可能被選中话侧,這樣,經(jīng)過m此隨機采樣操作闯参,我們得到含m個樣本的采樣集瞻鹏,初始訓(xùn)練集中有的樣本在采樣集里多次出現(xiàn),有的則從未出現(xiàn)鹿寨。
于是新博,我們可以采樣出T個含m個訓(xùn)練樣本的采樣集,然后基于每個采樣集訓(xùn)練出一個基學(xué)習(xí)器脚草,再集成赫悄,這就是Bagging的基本流程。在對預(yù)測輸出進行結(jié)合時馏慨,Bagging通常對分類任務(wù)采用簡單投票法埂淮,對回歸任務(wù)使用簡單平均法。若分類預(yù)測時出現(xiàn)兩個類收到同樣票數(shù)的情形写隶,則最簡單的做法是隨機選擇一個倔撞,也可進一步考察學(xué)習(xí)器投票的置信度來確定最終勝者。
Bagging的算法描述如下圖:
從偏差-方差分解的角度看慕趴,Bagging主要關(guān)注降低方差(防止過擬合)痪蝇,因此它在不剪枝決策樹、神經(jīng)網(wǎng)絡(luò)等容易受樣本擾動的學(xué)習(xí)器上效用更為明顯冕房。
Bagging總結(jié):
□飭① ?Bagging通過降低基分類器的方差,改善了泛化誤差
“也帷② ?其性能依賴于基分類器的穩(wěn)定性给僵;如果基分類器不穩(wěn)定,bagging有助于降低訓(xùn)練數(shù)據(jù)的隨機波動導(dǎo)致的誤差详拙;如果穩(wěn)定帝际,則集成分類器的誤差主要由基分類器的偏倚引起
③ ?由于每個樣本被選中的概率相同溪厘,因此bagging并不側(cè)重于訓(xùn)練數(shù)據(jù)集中的任何特定實例
常用的集成算法類是隨機森林胡本。
在隨機森林中工窍,集成中的每棵樹都是由從訓(xùn)練集中抽取的樣本(即 bootstrap 樣本)構(gòu)建的粉私。另外,與使用所有特征不同康铭,這里隨機選擇特征子集,從而進一步達到對樹的隨機化目的披粟。
具體來說咒锻,傳統(tǒng)決策樹在選擇劃分屬性時是在當前結(jié)點的屬性集合(假定有d個屬性)中選擇一個最有屬性;而在RF中守屉,對基決策樹的每個結(jié)點惑艇,先從該結(jié)點的屬性集合中隨機選擇一個包含k個屬性的子集,然后再從這個子集中選擇一個最優(yōu)屬性用于劃分拇泛。這里的參數(shù)k控制了隨機性的引入程度:若令k=d滨巴,則基決策樹的構(gòu)建與傳統(tǒng)決策樹相同;若令k=1俺叭,則是隨機選擇一個屬性用于劃分恭取;一般情況下,推薦值
RF簡單熄守、容易實現(xiàn)蜈垮、計算開銷小,而令人驚奇的是裕照,它在很多學(xué)習(xí)任務(wù)中展現(xiàn)出強大的性能攒发,被譽為“代表集成學(xué)習(xí)技術(shù)水平的方法”。
RF的收斂性與Bagging相似晋南。隨機森林的起始性能往往相對較差惠猿,特別是在集成中只包含一個基學(xué)習(xí)器時,這很容易理解搬俊,因為通過引入屬性擾動紊扬,隨機森林中個體學(xué)習(xí)器的性能往往有所降低。然而唉擂,隨著個體學(xué)習(xí)器數(shù)目的增加,隨機森林通常會收斂到更低的泛化誤差檀葛。
Random Forest算法參數(shù)解釋及調(diào)優(yōu):https://blog.csdn.net/iModel/article/details/80042862
2玩祟、Boosting
Boosting主要思想是將弱分類器組裝成一個強分類器。在PAC(probably approximately correct屿聋,概率近似正確)學(xué)習(xí)框架下空扎,則一定可以將弱分類器組裝成一個強分類器。
這一族算法的工作機制都是類似的:先從初始訓(xùn)練集訓(xùn)練出一個基學(xué)習(xí)器润讥,再根據(jù)基學(xué)習(xí)器的表現(xiàn)對訓(xùn)練樣本分布進行調(diào)整转锈,使得先前基學(xué)習(xí)器做錯的訓(xùn)練樣本在后續(xù)受到更多關(guān)注,然后基于調(diào)整后的樣本分布來訓(xùn)練下一個基學(xué)習(xí)器楚殿;如此重復(fù)進行撮慨,直至基學(xué)習(xí)器數(shù)目達到事先指定的值T,最終將這T個基學(xué)習(xí)器進行加權(quán)結(jié)合。Boosting族算法最著名的代表是AdaBoost砌溺。
Boosting算法要求基學(xué)習(xí)器對特定的數(shù)據(jù)分布進行學(xué)習(xí)影涉,這一點是通過“重賦權(quán)法”(re-weighting)實現(xiàn)的,即在訓(xùn)練過程的每一輪中规伐,根據(jù)樣本分布為每個訓(xùn)練樣本重新賦予一個權(quán)重蟹倾,對無法接受代全樣本的基學(xué)習(xí)算法,則可通過“重采樣法”(re-sampling)來處理猖闪,即在每一輪學(xué)習(xí)中鲜棠,根據(jù)樣本分布對訓(xùn)練集重新進行采樣,再用重采樣而得到的樣本集對基學(xué)習(xí)器進行訓(xùn)練培慌。一般而言豁陆,這兩種做法沒有顯著的優(yōu)劣差別。不過由于Boosting算法在訓(xùn)練的每一輪都會檢查當前生成的基學(xué)習(xí)器的性能是否比隨機猜測好检柬,若不符合則拋棄當前基學(xué)習(xí)器献联,并停止學(xué)習(xí)過程,這會導(dǎo)致最后的集成中只包含很少的基學(xué)習(xí)器而性能不佳何址。而若采用“重采樣閥”里逆,則可以獲得“重啟動”機會以避免訓(xùn)練過程的過早停止,即在拋棄不滿足條件的當前基學(xué)習(xí)器之后用爪,再根據(jù)當前分布重新對訓(xùn)練樣本進行重采樣原押,再基于新的采樣結(jié)果重新訓(xùn)練出基學(xué)習(xí)器,從而使得學(xué)習(xí)過程可以持續(xù)到預(yù)設(shè)的T輪完成偎血。
而從偏差-方差分解的角度看诸衔,Boosting主要關(guān)注降低偏差(避免欠擬合),因此Boosting能基于泛化性能相當弱的學(xué)習(xí)器構(gòu)建出很強的集成颇玷。
關(guān)于Boosting的兩個核心問題:
1)在每一輪如何改變訓(xùn)練數(shù)據(jù)的權(quán)值或概率分布笨农?
通過提高那些在前一輪被弱分類器分錯樣例的權(quán)值,減小前一輪分對樣例的權(quán)值帖渠,來使得分類器對誤分的數(shù)據(jù)有較好的效果谒亦。
2)通過什么方式來組合弱分類器?
通過加法模型將弱分類器進行線性組合空郊,比如:
AdaBoost(Adaptive boosting)算法:剛開始訓(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ù)哼审。通過擬合殘差的方式逐步減小殘差谐腰,將每一步生成的模型疊加得到最終模型孕豹。
Boosting的基本思想是通過某種方式使得每一輪基學(xué)習(xí)器在訓(xùn)練過程中更加關(guān)注上一輪學(xué)習(xí)錯誤的樣本,區(qū)別在于是采用何種方式怔蚌?AdaBoost采用的是增加上一輪學(xué)習(xí)錯誤樣本的權(quán)重的策略巩步,而在Gradient Boosting中則將負梯度作為上一輪基學(xué)習(xí)器犯錯的衡量指標,在下一輪學(xué)習(xí)中通過擬合負梯度來糾正上一輪犯的錯誤桦踊。
Gradient Boosting算法流程:
在Gradient Boosting框架中椅野,最常用的基學(xué)習(xí)器是決策樹 (一般是CART),二者結(jié)合就成了著名的梯度提升樹 (Gradient Boosting Decision Tree, GBDT)算法籍胯。GBDT(Gradient Boost Decision Tree)竟闪,每一次的計算是為了減少上一次的殘差,GBDT在殘差減少(負梯度)的方向上建立一個新的模型杖狼。
參考:https://www.cnblogs.com/massquantity/p/9174746.html
3炼蛤、Stacking
Stacking方法是指訓(xùn)練一個模型用于組合其他各個模型。首先我們先訓(xùn)練多個不同的模型蝶涩,然后把之前訓(xùn)練的各個模型的輸出為輸入來訓(xùn)練一個模型理朋,以得到一個最終的輸出。理論上绿聘,Stacking可以表示上面提到的兩種Ensemble方法嗽上,只要我們采用合適的模型組合策略即可。但在實際中熄攘,我們通常使用logistic回歸作為組合策略兽愤。
當訓(xùn)練數(shù)據(jù)很多時,一種更為強大的結(jié)合策略是使用“學(xué)習(xí)法”挪圾,即通過另一個學(xué)習(xí)器來進行結(jié)合浅萧。Stacking是學(xué)習(xí)法的典型代表,這里我們把個體學(xué)習(xí)器稱為初級學(xué)習(xí)器哲思,用于結(jié)合的學(xué)習(xí)器稱為次級或者元學(xué)習(xí)器洼畅。
Stacking先從初始訓(xùn)練集訓(xùn)練出初級學(xué)習(xí)器,然后“生成”一個新數(shù)據(jù)集用于訓(xùn)練次級學(xué)習(xí)器棚赔。在這個新數(shù)據(jù)集中土思,初級學(xué)習(xí)器的輸出被當作樣例輸入特征,而初始樣本的標記仍被當做樣例標記忆嗜。Stacking的算法描述如下圖所示,這里假定初始學(xué)習(xí)器使用不同學(xué)習(xí)算法產(chǎn)生(例如可同時包含決策樹崎岂,神經(jīng)網(wǎng)絡(luò)算法)捆毫,即初級集成是異質(zhì)的。
4冲甘、這幾個集成方法的使用
https://blog.csdn.net/willduan1/article/details/73618677
四绩卤、Bagging和Boosting二者之間的區(qū)別
1途样、Bagging和Boosting的區(qū)別:
1)樣本選擇上:
Bagging:訓(xùn)練集是在原始集中有放回選取的,從原始集中選出的各輪訓(xùn)練集之間是獨立的濒憋。
Boosting:每一輪的訓(xùn)練集不變何暇,只是訓(xùn)練集中每個樣例在分類器中的權(quán)重發(fā)生變化。而權(quán)值是根據(jù)上一輪的分類結(jié)果進行調(diào)整凛驮。
2)樣例權(quán)重:
Bagging:使用均勻取樣裆站,每個樣例的權(quán)重相等
Boosting:根據(jù)錯誤率不斷調(diào)整樣例的權(quán)值,錯誤率越大則權(quán)重越大黔夭。
3)預(yù)測函數(shù)權(quán)重:
Bagging:所有預(yù)測函數(shù)的權(quán)重相等宏胯。
Boosting:每個弱分類器都有相應(yīng)的權(quán)重,對于分類誤差小的分類器會有更大的權(quán)重本姥。
4)并行計算:
Bagging:各個預(yù)測函數(shù)可以并行生成
Boosting:各個預(yù)測函數(shù)只能順序生成肩袍,因為后一個模型參數(shù)需要前一輪模型的結(jié)果。
2婚惫、決策樹與這些算法框架進行結(jié)合所得到的新的算法:
1)Bagging + 決策樹 = 隨機森林
2)AdaBoost + 決策樹 = 提升樹
3)Gradient Boosting + 決策樹 = GBDT
參考: