集成學(xué)習(xí):三個(gè)臭皮匠,賽過(guò)諸葛亮
原創(chuàng)【51CTO.com原創(chuàng)稿件】俗話說(shuō)“三個(gè)臭皮匠,頂個(gè)諸葛亮”,多個(gè)比較弱的人若能有一種方法集中利用他們的智慧,也可以達(dá)到比較好的效果。
其實(shí),集成學(xué)習(xí)的思路亦是如此——在對(duì)新的實(shí)例進(jìn)行分類的時(shí)候,把若干個(gè)單個(gè)分類器集成起來(lái),通過(guò)對(duì)多個(gè)分類器的分類結(jié)果進(jìn)行某種組合來(lái)決定最終的分類,以取得比單個(gè)分類器更好的性能。
如果把單個(gè)分類器比作一個(gè)決策者的話,集成學(xué)習(xí)的方法就相當(dāng)于多個(gè)決策者共同進(jìn)行一項(xiàng)決策。
目前,集成學(xué)習(xí)的常用算法有三種,分別為:bagging,boosting和stacking。
Bagging 算法,或稱 Bootstrap Aggregating 算法。大家通常使用 Bagging 這個(gè)名字,是因?yàn)樗蔷C合了Bootstrapping和Aggregagtion而形成的一個(gè)組合模型。
Bagging算法主要對(duì)樣本訓(xùn)練集合進(jìn)行隨機(jī)化抽樣,通過(guò)反復(fù)的抽樣訓(xùn)練新的模型,最終在這些模型的基礎(chǔ)上選取綜合預(yù)測(cè)結(jié)果。
Bagging
基于Bagging的代表算法有隨機(jī)森林
Boosting(提升)算法,是常用的有效的統(tǒng)計(jì)學(xué)習(xí)算法,屬于迭代算法。Boosting和Bagging的區(qū)別在于是對(duì)加權(quán)后的數(shù)據(jù)利用弱分類器依次進(jìn)行訓(xùn)練。
Boosting通過(guò)不斷地使用一個(gè)弱學(xué)習(xí)器彌補(bǔ)前一個(gè)弱學(xué)習(xí)器的“不足”的過(guò)程,來(lái)串行地構(gòu)造一個(gè)較強(qiáng)的學(xué)習(xí)器,這個(gè)強(qiáng)學(xué)習(xí)器能夠使目標(biāo)函數(shù)值足夠小。
Boosting
Boosting系列算法里***算法主要有AdaBoost算法和GBDT算法。
Stacking(堆疊)算法是通過(guò)一個(gè)元分類器或者元回歸器來(lái)整合多個(gè)分類模型或回歸模型的集成學(xué)習(xí)技術(shù)。基礎(chǔ)模型利用整個(gè)訓(xùn)練集做訓(xùn)練,元模型將基礎(chǔ)模型的特征作為特征進(jìn)行訓(xùn)練。
Stacking
基礎(chǔ)模型通常包含不同的學(xué)習(xí)算法,因此stacking通常是異質(zhì)集成。
對(duì)數(shù)值型輸出,最常見(jiàn)的結(jié)合策略是使用平均法。
-
簡(jiǎn)單平均法
-
加權(quán)平均法
但是對(duì)于規(guī)模比較大的集成來(lái)說(shuō),權(quán)重參數(shù)比較多,較容易導(dǎo)致過(guò)擬合。加權(quán)平均法未必一定優(yōu)于簡(jiǎn)單平均法。
一般而言,在個(gè)體學(xué)習(xí)器性能相差較大時(shí),宜使用加權(quán)平均法,而在個(gè)體學(xué)習(xí)器性能相近時(shí),宜使用簡(jiǎn)單平均法。
相對(duì)多數(shù)投票法:預(yù)測(cè)為得票最多的標(biāo)記。若同時(shí)有多個(gè)標(biāo)記獲得***票,則從中隨機(jī)選取一個(gè)。
假設(shè)我們的預(yù)測(cè)類別是,對(duì)于任意一個(gè)預(yù)測(cè)樣本x,我們的個(gè)弱學(xué)習(xí)器的預(yù)測(cè)結(jié)果分別是。 最簡(jiǎn)單的投票法是相對(duì)多數(shù)投票法,也就是我們常說(shuō)的少數(shù)服從多數(shù),也就是個(gè)弱學(xué)習(xí)器的對(duì)樣本X的預(yù)測(cè)結(jié)果中,數(shù)量最多的類別為最終的分類類別。如果不止一個(gè)類別獲得***票,則隨機(jī)選擇一個(gè)做最終類別。
絕對(duì)多數(shù)投票法:若某標(biāo)記得票過(guò)半數(shù),則預(yù)測(cè)為該標(biāo)記;否則拒絕預(yù)測(cè)。
與相對(duì)多數(shù)投票法相比較為復(fù)雜,也就是我們常說(shuō)的要票過(guò)半數(shù)。在相對(duì)多數(shù)投票法的基礎(chǔ)上,不光要求獲得***票,還要求票過(guò)半數(shù)。
加權(quán)投票法:算法更為復(fù)雜,和加權(quán)平均法一樣,每個(gè)弱學(xué)習(xí)器的分類票數(shù)要乘以一個(gè)權(quán)重,最終將各個(gè)類別的加權(quán)票數(shù)求和,***的值對(duì)應(yīng)的類別為最終類別。
當(dāng)訓(xùn)練數(shù)據(jù)很多時(shí),為了盡量縮小誤差,可利用一種更為強(qiáng)大的結(jié)合策略,便是使用“學(xué)習(xí)法”,即通過(guò)另一個(gè)學(xué)習(xí)器來(lái)進(jìn)行結(jié)合。
對(duì)于學(xué)習(xí)法,代表方法是stacking,當(dāng)使用stacking的結(jié)合策略時(shí), 我們不是對(duì)弱學(xué)習(xí)器的結(jié)果做簡(jiǎn)單的邏輯處理,而是再加上一層學(xué)習(xí)器,也就是說(shuō),我們將訓(xùn)練集弱學(xué)習(xí)器的學(xué)習(xí)結(jié)果作為輸入,將訓(xùn)練集的輸出作為輸出,重新訓(xùn)練一個(gè)學(xué)習(xí)器來(lái)得到最終結(jié)果。
在這種情況下,我們將弱學(xué)習(xí)器稱為初級(jí)學(xué)習(xí)器,將用于結(jié)合的學(xué)習(xí)器稱為次級(jí)學(xué)習(xí)器。對(duì)于測(cè)試集,我們首先用初級(jí)學(xué)習(xí)器預(yù)測(cè)一次,得到次級(jí)學(xué)習(xí)器的輸入樣本,再用次級(jí)學(xué)習(xí)器預(yù)測(cè)一次,得到最終的預(yù)測(cè)結(jié)果。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】