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