1锰蓬、個(gè)體與集成
集成學(xué)習(xí)(ensemble learning)通過(guò)構(gòu)建并結(jié)合多個(gè)學(xué)習(xí)器來(lái)完成學(xué)習(xí)任務(wù)灼舍,有時(shí)也被稱(chēng)為多分類(lèi)器系統(tǒng)。
過(guò)于集成可能產(chǎn)生的效果等孵,西瓜書(shū)上是這么說(shuō)的:
準(zhǔn)確性和多樣性是集成學(xué)習(xí)的關(guān)鍵洛口,準(zhǔn)確性是基礎(chǔ)矫付,不難想象,幾個(gè)比隨機(jī)分類(lèi)器效果還差的分類(lèi)器組合在一起效果只會(huì)更差第焰;而多樣性實(shí)際上是為了“互補(bǔ)”买优,每個(gè)分類(lèi)器可能都學(xué)到了數(shù)據(jù)中的一部分信息,大家互通有無(wú)挺举,才能建立起更強(qiáng)的模型而叼,如果大家手里的信息都差不多,那結(jié)合在一起并不會(huì)右多大的提升豹悬。
2、Boosting
可以看到液荸,Boosting完美地展現(xiàn)了另各個(gè)基學(xué)習(xí)器“互補(bǔ)”的思想瞻佛,因?yàn)槲覀冊(cè)谇耙粋€(gè)學(xué)習(xí)器上錯(cuò)分的樣本,在訓(xùn)練下一個(gè)學(xué)習(xí)器的時(shí)候得到重點(diǎn)關(guān)注,于是下一個(gè)學(xué)習(xí)器將學(xué)到關(guān)于這部分錯(cuò)分樣本的更多信息以彌補(bǔ)前一個(gè)學(xué)習(xí)器的不足伤柄。
關(guān)于多樣性還有另一種解釋?zhuān)?/p>
我們現(xiàn)在希望通過(guò)調(diào)整樣本的權(quán)重使得下一個(gè)學(xué)習(xí)器和上一個(gè)學(xué)習(xí)器
的差異越大越好绊困,我們?cè)撛趺醋瞿亍I蠄D告訴我們适刀,我們只需要調(diào)整權(quán)重秤朗,使得
在調(diào)整后的權(quán)重
上表現(xiàn)得和隨機(jī)分類(lèi)器一樣好即可。容易想到笔喉,這樣做就是放大了
的錯(cuò)分樣本對(duì)應(yīng)的權(quán)重取视,縮小了正確分類(lèi)樣本對(duì)應(yīng)的權(quán)重。
如何調(diào)整權(quán)重來(lái)滿足上述條件呢常挚?
其實(shí)很簡(jiǎn)單作谭,就是把錯(cuò)分的樣本對(duì)應(yīng)的權(quán)重乘一個(gè)正比于加權(quán)正確率的系數(shù),把正確分類(lèi)的樣本乘一個(gè)正比于加權(quán)錯(cuò)誤率的系數(shù)奄毡,這樣就可以滿足在調(diào)整后的權(quán)重
上表現(xiàn)得和隨機(jī)分類(lèi)器一樣好折欠。
我們通過(guò)構(gòu)造一個(gè)“標(biāo)準(zhǔn)化因子”,把上述過(guò)程改寫(xiě)成:將錯(cuò)分樣本的權(quán)重乘以標(biāo)準(zhǔn)化因子吼过,將正確分類(lèi)樣本的權(quán)重除以標(biāo)準(zhǔn)化因子锐秦,容易看出,只要之前的基學(xué)習(xí)器正確率大于50%盗忱,即錯(cuò)誤率小于50%酱床,那么我們所做的事就是在放大錯(cuò)誤樣本的權(quán)重,縮小正確樣本的權(quán)重售淡。
這就得到了本節(jié)開(kāi)頭西瓜書(shū)上的論述斤葱。根據(jù)這個(gè)權(quán)重調(diào)整的方式我們可以得到如下算法;
算法的框架有了,還有兩個(gè)待解決的問(wèn)題揖闸,一個(gè)是權(quán)重的初始化問(wèn)題揍堕,另一個(gè)是最終的集成學(xué)習(xí)器要通過(guò)何種方式將得到的多樣化的基學(xué)習(xí)器集成在一起。第一個(gè)問(wèn)題是容易解決的汤纸,因?yàn)橐婚_(kāi)始我們對(duì)數(shù)據(jù)全無(wú)了解衩茸,因此只需對(duì)樣本一視同仁,即賦予它們同樣的權(quán)重贮泞。第二個(gè)問(wèn)題則需要一些思考楞慈,簡(jiǎn)單的讓各個(gè)基學(xué)習(xí)器進(jìn)行投票可以嗎?這樣恐怕效果不好啃擦,對(duì)于圖中舉出的例子來(lái)說(shuō)囊蓝,在初始權(quán)重下表現(xiàn)最好,而我們最終希望的其實(shí)就是在初始權(quán)重下表現(xiàn)最好令蛉,而我們知道
和
差異很大聚霜,所以
在初始權(quán)重下表現(xiàn)必然不好狡恬,因此用投票法組合基學(xué)習(xí)器并不會(huì)帶來(lái)提升。
那么我們?nèi)绾谓M合基學(xué)習(xí)器呢蝎宇?
上圖展示了一種合理的線性組合各基學(xué)習(xí)器的系數(shù)弟劲,這樣選取系數(shù)可以賦予分類(lèi)效果好(即加權(quán)錯(cuò)誤率低)的基學(xué)習(xí)器更大的權(quán)重,從而得到較好的集成學(xué)習(xí)器姥芥。
從而我們得到了AdaBoost算法:
西瓜書(shū)上則是從純數(shù)學(xué)的角度推導(dǎo)出了AdaBoost算法:
那么AdaBoost發(fā)揮了怎樣的作用呢兔乞?從方差偏差分解的角度來(lái)看,Boosting主要關(guān)注降低偏差凉唐,所以AdaBoost可以取得的效果類(lèi)似下面左圖庸追,也就是將簡(jiǎn)單的邊界組合得到復(fù)雜邊界,其作用類(lèi)似于特征轉(zhuǎn)換:
下面我們關(guān)注另一類(lèi)主要關(guān)注降低方差的集成方法——Bagging熊榛,以及其拓展變體隨機(jī)森林(Random Forest)锚国。
3、Bagging and Random Forest
以上就是Bagging的動(dòng)機(jī)玄坦。那么既然我們想要讓各個(gè)學(xué)習(xí)器盡可能“相互獨(dú)立”血筑,但又要使用有重疊的采樣子集,這要怎么做呢煎楣?
我們采用的是自助采樣法豺总,也就是有放回的采樣。相比無(wú)放回的采樣择懂,我們從直覺(jué)上思考一下為什么有放回的采樣更好喻喳。
無(wú)放回采樣最大的缺點(diǎn)就是每個(gè)學(xué)習(xí)器能使用的樣本太少了,假設(shè)有個(gè)樣本困曙,
個(gè)基學(xué)習(xí)器表伦,那么每個(gè)學(xué)習(xí)器只能使用
個(gè)樣本進(jìn)行學(xué)習(xí),這樣的效果顯然是不好的慷丽,首先一個(gè)樣本只被一個(gè)學(xué)習(xí)器使用到了蹦哼,這對(duì)于小樣本集的情況是很浪費(fèi)的;其次由于喂給每個(gè)基學(xué)習(xí)器的樣本數(shù)較少要糊,可能導(dǎo)致學(xué)習(xí)效果不佳纲熏,最終得到多個(gè)效果很差的基學(xué)習(xí)器(甚至可能比隨機(jī)分類(lèi)器效果還差),這樣集成就無(wú)法帶來(lái)性能提升锄俄。
那么有放回采樣又如何呢局劲?首先我們可以充分利用手頭的數(shù)據(jù),讓一個(gè)樣本可能在多個(gè)學(xué)習(xí)器的訓(xùn)練數(shù)據(jù)集種出現(xiàn)奶赠,從而得到較為充分的學(xué)習(xí)鱼填。其次,假設(shè)觀測(cè)樣本包含了潛在樣本的全部信息毅戈,那么我們不妨就把這個(gè)樣本看做“總體”苹丸,采用有放回采樣塑猖,進(jìn)行k輪抽取,得到的k個(gè)訓(xùn)練集之間是相互獨(dú)立的谈跛,這就使得個(gè)體學(xué)習(xí)器盡可能相互獨(dú)立。
另外塑陵,我們還要注意感憾,在bagging的每輪隨機(jī)采樣中,訓(xùn)練集中大約有36.8%的數(shù)據(jù)沒(méi)有被采樣集采集中令花。這是因?yàn)椋簩?duì)一個(gè)樣本阻桅,它在某一次含個(gè)樣本的訓(xùn)練集的采樣中,每次被采到的概率是
兼都。不被采到的概率為
嫂沉。
次采樣都沒(méi)有被采到的概率是
。當(dāng)
扮碧,
趟章。
對(duì)于這部分大約36.8%的沒(méi)有被采樣到的數(shù)據(jù),我們常常稱(chēng)之為袋外數(shù)據(jù)(Out Of Bag, OOB)慎王。這些數(shù)據(jù)可以用來(lái)檢測(cè)模型的泛化能力蚓土。
接下來(lái)我們看一下隨機(jī)森林,其實(shí)隨機(jī)森林和Bagging很類(lèi)似赖淤,只是在Bagging的樣本擾動(dòng)的基礎(chǔ)上增加了屬性擾動(dòng):
Bagging和Boosting比較如下:(https://www.cnblogs.com/liuwu265/p/4690486.html)
1)樣本選擇:
Bagging:訓(xùn)練集是有放回選取的蜀漆,從原始集中選出的各輪訓(xùn)練集之間是獨(dú)立的。
Boosting:每一輪的訓(xùn)練集不變咱旱,只是訓(xùn)練集中每個(gè)樣例在分類(lèi)器中的權(quán)重發(fā)生變化确丢。而權(quán)值是根據(jù)上一輪的分類(lèi)結(jié)果進(jìn)行調(diào)整。
2)樣例權(quán)重:
Bagging:使用均勻取樣吐限,每個(gè)樣例的權(quán)重相等
Boosting:根據(jù)錯(cuò)誤率不斷調(diào)整樣例的權(quán)值鲜侥,錯(cuò)誤率越大則權(quán)重越大。
3)預(yù)測(cè)函數(shù):
Bagging:所有預(yù)測(cè)函數(shù)的權(quán)重相等毯盈。
Boosting:每個(gè)弱分類(lèi)器都有相應(yīng)的權(quán)重剃毒,對(duì)于分類(lèi)誤差小的分類(lèi)器會(huì)有更大的權(quán)重。
4)并行計(jì)算:
Bagging:各個(gè)預(yù)測(cè)函數(shù)可以并行生成
Boosting:各個(gè)預(yù)測(cè)函數(shù)只能順序生成搂赋,因?yàn)楹笠粋€(gè)模型參數(shù)需要前一輪模型的結(jié)果赘阀。
4、結(jié)合策略
上面我們重點(diǎn)討論了如何生成用于集成的各個(gè)基學(xué)習(xí)器或個(gè)體學(xué)習(xí)器脑奠。下面我們討論如何把各個(gè)學(xué)習(xí)器結(jié)合在一起基公。
以下是西瓜書(shū)上給出的學(xué)習(xí)器結(jié)合可能帶來(lái)的三方面好處:
接下來(lái)西瓜書(shū)上介紹了三種常用的結(jié)合策略:平均法、投票法和學(xué)習(xí)法宋欺。
平均法最為簡(jiǎn)單轰豆,常用于數(shù)值型()輸出的任務(wù)(比如回歸)胰伍。常用的方法有簡(jiǎn)單平均和加權(quán)平均。一般而言酸休,在個(gè)體學(xué)習(xí)器性能相差較大時(shí)宜使用加權(quán)平均骂租,在個(gè)體學(xué)習(xí)器性能相近時(shí)宜使用簡(jiǎn)單平均。
投票法是針對(duì)分類(lèi)任務(wù)的結(jié)合策略斑司。主要有絕對(duì)多數(shù)投票法(若某標(biāo)記票數(shù)過(guò)半則預(yù)測(cè)為該標(biāo)記渗饮,否則拒絕預(yù)測(cè),適用于可靠性較高的場(chǎng)合)宿刮、相對(duì)多數(shù)投票法(得票最多的標(biāo)記即為預(yù)測(cè)結(jié)果互站,若有多個(gè)標(biāo)記獲得最高票則隨機(jī)選取一個(gè))、加權(quán)投票法(與加權(quán)平均類(lèi)似)僵缺。這里需要注意的點(diǎn)是胡桃,雖然分類(lèi)器估計(jì)出的類(lèi)概率一般都不太準(zhǔn)確,但基于類(lèi)概率進(jìn)行結(jié)合卻往往比基于類(lèi)標(biāo)記進(jìn)行結(jié)合性能更好磕潮。
學(xué)習(xí)法是使用學(xué)習(xí)器來(lái)結(jié)合學(xué)習(xí)器翠胰。Stacking是學(xué)習(xí)法的典型代表。我們稱(chēng)個(gè)體學(xué)習(xí)器為初級(jí)學(xué)習(xí)器揉抵,用于結(jié)合的學(xué)習(xí)器為次級(jí)學(xué)習(xí)器或元學(xué)習(xí)器亡容。則Stacking先從初始數(shù)據(jù)集種訓(xùn)練出初級(jí)學(xué)習(xí)器,然后“生成”一個(gè)新數(shù)據(jù)集用于訓(xùn)練次學(xué)習(xí)器冤今。這個(gè)新數(shù)據(jù)集種闺兢,初級(jí)學(xué)習(xí)器的輸出被當(dāng)作樣例輸入特征,初始樣本的標(biāo)記仍被當(dāng)作樣例標(biāo)記戏罢。Stacking算法流程如下:
5屋谭、多樣性
(略)