一、集成學(xué)習(xí)算法簡介
學(xué)習(xí)西瓜書筆記赊锚。
集成學(xué)習(xí)(ensemble learning)通過構(gòu)建并結(jié)合多個學(xué)習(xí)器來完成學(xué)習(xí)任務(wù)囱挑。如何產(chǎn)生“好而不同”的個體學(xué)習(xí)器,是集成學(xué)習(xí)研究的核心并齐。
根據(jù)個體學(xué)習(xí)器的生成方式,可以將集成學(xué)習(xí)方法大致分為兩大類:
- 1客税、個體學(xué)習(xí)器間存在強依賴關(guān)系况褪、必須串行生成的序列化方法。
比如boosting族算法更耻,代表性的有adaboost算法测垛,GBDT。 - 2秧均、個體學(xué)習(xí)器之間不存在強依賴關(guān)系食侮、可同時生成的并行化方法。
比如bagging和“隨機森林”目胡。
這篇文章大致介紹一下boosting算法中的adaboosting算法锯七,以及bdgging和“隨機森林”。
二誉己、從boosting到adaboost
2.1 boosting族算法的基本步驟
boosting是一族可將弱學(xué)習(xí)器提升為強學(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é)合。
2.2 boosting族算法的代表AdaBoost算法
可以通過加性模型的推導(dǎo)(基學(xué)習(xí)器的線性組合)疼阔,來理解AdaBoost算法 。
下面只是簡單的講述一下AdaBoost算法步驟,推導(dǎo)可以看資料(統(tǒng)計學(xué)習(xí)方法或者西瓜書)婆廊。
步驟:
第一個及分類器h1是通過直接將基學(xué)習(xí)算法用于初始數(shù)據(jù)分布而得迅细;此后迭代的生成hi和αi。
第一步:Dx = 1/m淘邻,初始化樣本權(quán)值的分布茵典。
循環(huán):
- 1、基于分布D訓(xùn)練出分類器ht宾舅。
- 2统阿、估計出誤差ε。
- 3筹我、用上一步得到的誤差計算權(quán)重αt扶平,(每加上一個αtht,都是以最小化當(dāng)前損失函數(shù)為目的蔬蕊。)
- 4结澄、由西瓜書,令損失函數(shù)求導(dǎo)再為0岸夯,可以得到權(quán)重的計算公式(由誤差 ε 表示。)
- 5、在獲得第t-1個基學(xué)習(xí)器ht-1之后魏铅,樣本分布將進行調(diào)整谭梗,使下一輪的基學(xué)習(xí)器ht能夠糾正ht-1的一些錯誤。理想的ht能夠糾正上一個分類器的全部錯誤旅赢。
(中間也用到了泰勒展開)即最小化目標函數(shù)齿桃。于是,獲得了新的樣本的分布Dt - 6鲜漩、返回第1步源譬。
注意AdaBoost算法每一輪都要判斷當(dāng)前基學(xué)習(xí)器是否滿足條件,一旦條件不滿足孕似,則當(dāng)前學(xué)習(xí)器被拋棄踩娘,且學(xué)習(xí)過程停止。
2.3 注重減小偏差的AdaBoost算法
AdaBoost算法中的個體學(xué)習(xí)器存在著強依賴關(guān)系喉祭,應(yīng)用的是串行生成的序列化方法养渴。每一個基生成器的目標,都是為了最小化損失函數(shù)泛烙。所以理卑,可以說AdaBoost算法注重減小偏差。
2.4 AdaBoost算法的缺點
由于屬于boosting算法族蔽氨,采用的是加性模型藐唠,對每個基學(xué)習(xí)器的輸出結(jié)果加權(quán)處理帆疟,只會得到一個輸出預(yù)測結(jié)果。所以標準的AdaBoost只適用于二分類任務(wù)宇立。
三踪宠、Bagging 算法
上節(jié)提到,AdaBoost算法注重減小偏差妈嘹,因此可能會有比較大的方差柳琢,泛化能力不強。
為了得到泛化能力強的集成润脸,集成中的個體學(xué)習(xí)器應(yīng)該盡可能的相互獨立柬脸。
盡管獨立可能無法做到,但是可以設(shè)法使基學(xué)習(xí)器有較大的差異毙驯。那么怎么做到呢倒堕?
一種方法是從訓(xùn)練樣本上考慮:
對訓(xùn)練樣本進行采樣,產(chǎn)生出若干個不同的子集尔苦,再從每個數(shù)據(jù)子集中訓(xùn)練出一個基學(xué)習(xí)器涩馆,這樣,由于訓(xùn)練數(shù)據(jù)不同允坚,我們獲得的基學(xué)習(xí)器可望具有比較大的差異魂那。
但又不能每個基學(xué)習(xí)器的訓(xùn)練樣本都完全不同,這樣不足以進行有效學(xué)習(xí)稠项。
于是讓每個個體學(xué)習(xí)器在采樣得到的相互有交疊的采樣子集上進行訓(xùn)練涯雅。
3.1 bagging算法步驟
每訓(xùn)練一次,有放回采樣m個樣本展运,然后再訓(xùn)練出一個基學(xué)習(xí)器活逆,再將這些基學(xué)習(xí)器結(jié)合。這就是bagging的基本流程拗胜。
3.2 bagging算法怎么輸出預(yù)測
不同于boosting算法族中蔗候,采用加性模型,對每個基學(xué)習(xí)器的輸出結(jié)果加權(quán)處理埂软,對于預(yù)測只有一個確定的值锈遥。
bagging中每個基學(xué)習(xí)器有較大的差異,那么每個基學(xué)習(xí)器輸出的預(yù)測結(jié)果可能也有較大的差異勘畔,所以需要有一定的策略來對每個基學(xué)習(xí)器的結(jié)果綜合運用所灸。
對于t個結(jié)果,bagging通常對分類任務(wù)采用簡單投票法炫七,對回歸任務(wù)使用簡單平均法爬立。
3.3 bagging算法的優(yōu)點
與標準的adaboost只適用于二分類任務(wù)不同,bagging能不經(jīng)修改地用于多分類万哪、回歸任務(wù)侠驯。
3.4 注重降低方差的bagging算法
因為bagging的每個基學(xué)習(xí)器差異比較大抡秆,泛化能力強,所以bagging算法主要關(guān)注降低方差吟策。因此琅轧,它在不減枝決策樹、神經(jīng)網(wǎng)絡(luò)等易受擾動得到學(xué)習(xí)器上效用更為明顯踊挠。
四、隨機森林(RF)
RF也屬于集成學(xué)習(xí)中的第二大類:個體學(xué)習(xí)器間不存在強依賴關(guān)系冲杀、可同時生成效床。
4.1 為什么叫隨機森林?
- 森林:因為基學(xué)習(xí)器是一組決策樹啊权谁。剩檀。。
- 隨機:在決策樹的訓(xùn)練過程中引入了隨機屬性選擇啊旺芽。沪猴。。
4.1 從bagging到隨機森林
隨機森林是bagging的一個擴展變體采章,相對于bagging有兩點不同:
- 1运嗜、RF的每個基學(xué)習(xí)器都是決策樹;
- 2悯舟、在構(gòu)建bagging集成的基礎(chǔ)上担租,進一步在決策樹的訓(xùn)練過程中引入了隨機屬性選擇。
4.2 隨機森林基學(xué)習(xí)器的學(xué)習(xí)方法
假設(shè)當(dāng)前節(jié)點還有d個屬性待劃分抵怎,對基決策樹的每個節(jié)點先從該節(jié)點的屬性集合d中隨機選擇一個包含k個屬性的子集奋救,再進行劃分。
當(dāng)k=d時反惕,就是傳統(tǒng)的決策樹尝艘。當(dāng)k=1時,就是隨機選擇一個屬性用于劃分姿染。
一般推薦k = log2d背亥。
4.3 隨機森林的優(yōu)點
隨機森林中基學(xué)習(xí)器的多樣性,不僅來自樣本擾動盔粹,還來自屬性擾動隘梨,這就使得最終集成的泛化性能可通過個體學(xué)習(xí)器之間差異度的增加而進一步提升。
五舷嗡、從結(jié)合策略到Stacking學(xué)習(xí)法
集成學(xué)習(xí)的第二類模型轴猎,為了提高集成的泛化能力,每個基學(xué)習(xí)器之間不存在很強的依賴性进萄,所以最終預(yù)測結(jié)果時捻脖,需要一定的策略對T個結(jié)果進行結(jié)合锐峭。下面介紹結(jié)合策略。
5.1 可婶、平均法
對數(shù)值型輸出沿癞,最常見的結(jié)合策略是使用平均法。
- 簡單平均法
- 加權(quán)平均法
但是對于規(guī)模比較大的集成來說矛渴,權(quán)重參數(shù)比較多椎扬,較容易導(dǎo)致過擬合。加權(quán)平均法未必一定優(yōu)于簡單平均法具温。
一般而言蚕涤,在個體學(xué)習(xí)器性能相差較大時,宜使用加權(quán)平均法铣猩,而在個體學(xué)習(xí)器性能相近時揖铜,宜使用簡單平均法。
這一點在第二個項目中深有體會达皿,該模型有三個損失函數(shù)天吓,每個損失函數(shù)的性能差別比較大,所以用了加權(quán)峦椰,在第一個數(shù)據(jù)集中調(diào)好參數(shù)以后龄寞,在第二個數(shù)據(jù)集中,效果就不是很好们何,需要重新進行調(diào)參萄焦。
5.2 投票法
- 絕對多數(shù)投票法
若某標記得票過半數(shù),則預(yù)測為該標記冤竹;否則拒絕預(yù)測拂封。 - 相對多數(shù)投票法
預(yù)測為得票最多的標記。若同時有多個標記獲得最高票鹦蠕,則從中隨機選取一個冒签。 - 加權(quán)投票法
5.3 學(xué)習(xí)法
當(dāng)訓(xùn)練數(shù)據(jù)很多時,一種更為強大的結(jié)合策略是使用“學(xué)習(xí)法”钟病,即通過另一個學(xué)習(xí)器來進行結(jié)合萧恕。
Stacking本身是一種著名的集成學(xué)習(xí)方法,且有不少集成學(xué)習(xí)算法可是為其變體或特例肠阱,它也可以看作是一種特殊的結(jié)合策略票唆,因此在此介紹。
我們把個體學(xué)習(xí)器成為初級學(xué)習(xí)器屹徘,用于結(jié)合的學(xué)習(xí)器成為次級學(xué)習(xí)器(或元學(xué)習(xí)器)走趋。
Stacking先從初始數(shù)據(jù)及訓(xùn)練出初級學(xué)習(xí)器,然后“生成”一個新數(shù)據(jù)集噪伊,用于訓(xùn)練次級學(xué)習(xí)器簿煌。在這個新數(shù)據(jù)集中氮唯,初級學(xué)習(xí)器的輸出被當(dāng)做樣例輸入特征,而原始樣本的標記仍被當(dāng)做樣例標記姨伟。
對于Stackin的一些深入了解惩琉,這里不進行過多介紹。