Bootstrap(自助法),Bagging,Boosting(提升)
前言
最近在理清一些很必要的也很基礎(chǔ)的東西,記錄一下,結(jié)合網(wǎng)上和文獻(xiàn),自己也有些易化使之更輕松理解,如有錯(cuò)誤,請(qǐng)不吝賜教,多謝!
Bootstrap(自助法)
Bootstrap是一種抽樣方法
核心思想
這里寫圖片描述子樣本之于樣本,可以類比樣本之于總體
栗子:我要統(tǒng)計(jì)魚(yú)塘里面的魚(yú)的條數(shù),怎么統(tǒng)計(jì)呢?假設(shè)魚(yú)塘總共有魚(yú)1000條,我是開(kāi)了上帝視角的,但是你是不知道里面有多少。
步驟:
1. 承包魚(yú)塘,不讓別人撈魚(yú)(規(guī)定總體分布不變)。
2. 自己撈魚(yú),撈100條,都打上標(biāo)簽(構(gòu)造樣本)
3. 把魚(yú)放回魚(yú)塘,休息一晚(使之混入整個(gè)魚(yú)群,確保之后抽樣隨機(jī))
4. 開(kāi)始撈魚(yú),每次撈100條,數(shù)一下,自己昨天標(biāo)記的魚(yú)有多少條,占比多少(一次重采樣取分布)。
5. 重復(fù)3,4步驟n次。建立分布。
假設(shè)一下,第一次重新捕魚(yú)100條,發(fā)現(xiàn)里面有標(biāo)記的魚(yú)12條,記下為12%,放回去,再捕魚(yú)100條,發(fā)現(xiàn)標(biāo)記的為9條,記下9%,重復(fù)重復(fù)好多次之后,假設(shè)取置信區(qū)間95%,你會(huì)發(fā)現(xiàn),每次捕魚(yú)平均在10條左右有標(biāo)記,所以,我們可以大致推測(cè)出魚(yú)塘有1000條左右。其實(shí)是一個(gè)很簡(jiǎn)單的類似于一個(gè)比例問(wèn)題。這也是因?yàn)樘岢稣逧fron給統(tǒng)計(jì)學(xué)頂級(jí)期刊投稿的時(shí)候被拒絕的理由--"太簡(jiǎn)單"。這也就解釋了,為什么在小樣本的時(shí)候,bootstrap效果較好,你這樣想,如果我想統(tǒng)計(jì)大海里有多少魚(yú),你標(biāo)記100000條也沒(méi)用啊,因?yàn)閷?shí)際數(shù)量太過(guò)龐大,你取的樣本相比于太過(guò)渺小,最實(shí)際的就是,你下次再捕100000的時(shí)候,發(fā)現(xiàn)一條都沒(méi)有標(biāo)記,,,這特么就尷尬了。。。
Bootstrap經(jīng)典語(yǔ)錄
Bootstrap是現(xiàn)代統(tǒng)計(jì)學(xué)較為流行的一種統(tǒng)計(jì)方法,在小樣本時(shí)效果很好。通過(guò)方差的估計(jì)可以構(gòu)造置信區(qū)間等,其運(yùn)用范圍得到進(jìn)一步延伸。
就是一個(gè)在自身樣本重采樣的方法來(lái)估計(jì)真實(shí)分布的問(wèn)題
當(dāng)我們不知道樣本分布的時(shí)候,bootstrap方法最有用。
整合多個(gè)弱分類器,成為一個(gè)強(qiáng)大的分類器。這時(shí)候,集合分類器(Boosting, Bagging等)出現(xiàn)了。
什么是集成學(xué)習(xí)(ensemble learning)
了解boosting和bagging之前,先了解一下什么是集成學(xué)習(xí),一句話,三個(gè)臭皮匠頂個(gè)諸葛亮,一箭易折十箭難折,千里之堤潰于蟻穴,啊,跑題了。在分類的表現(xiàn)上就是,多個(gè)弱分類器組合變成強(qiáng)分類器。
這里寫圖片描述一句話,假設(shè)各弱分類器間具有一定差異性(如不同的算法,或相同算法不同參數(shù)配置),這會(huì)導(dǎo)致生成的分類決策邊界不同,也就是說(shuō)它們?cè)跊Q策時(shí)會(huì)犯不同的錯(cuò)誤。將它們結(jié)合后能得到更合理的邊界,減少整體錯(cuò)誤,實(shí)現(xiàn)更好的分類效果。
Bagging(bootstrap aggregation)
首先:bagging和boosting都是集成學(xué)習(xí)(ensemble learning)領(lǐng)域的基本算法
bagging:從訓(xùn)練集從進(jìn)行子抽樣組成每個(gè)基模型所需要的子訓(xùn)練集,對(duì)所有基模型預(yù)測(cè)的結(jié)果進(jìn)行綜合產(chǎn)生最終的預(yù)測(cè)結(jié)果,至于為什么叫bootstrap aggregation,因?yàn)樗槿∮?xùn)練樣本的時(shí)候采用的就是bootstrap的方法!
Bagging策略過(guò)程
這里寫圖片描述- 從樣本集中用Bootstrap采樣選出n個(gè)訓(xùn)練樣本(放回,因?yàn)閯e的分類器抽訓(xùn)練樣本的時(shí)候也要用)
- 在所有屬性上,用這n個(gè)樣本訓(xùn)練分類器(CART or SVM or ...)
- 重復(fù)以上兩步m次,就可以得到m個(gè)分類器(CART or SVM or ...)
- 將數(shù)據(jù)放在這m個(gè)分類器上跑,最后投票機(jī)制(多數(shù)服從少數(shù))看到底分到哪一類(分類問(wèn)題)
Bagging代表算法-RF(隨機(jī)森林)
RF:Random Forest
其中的Random就是指
1.訓(xùn)練樣本選擇方面的Random:
Bootstrap方法隨機(jī)選擇子樣本
2.特征選擇方面的Random:
屬性集中隨機(jī)選擇k個(gè)屬性,每個(gè)樹(shù)節(jié)點(diǎn)分裂時(shí),從這隨機(jī)的k個(gè)屬性,選擇最優(yōu)的(如何選擇最優(yōu)又有各種最大增益的方法,不在本文討論范圍內(nèi))。
RF構(gòu)造流程
這里寫圖片描述1.用Random(訓(xùn)練樣本用Bootstrap方法,選擇分離葉子節(jié)點(diǎn)用上面的2)的方式構(gòu)造一棵決策樹(shù)(CART)
2.用1的方法構(gòu)造很多決策樹(shù),每棵決策樹(shù)都最大可能地進(jìn)行生長(zhǎng)而不進(jìn)行剪枝,許多決策樹(shù)構(gòu)成一片森林,決策樹(shù)之間沒(méi)有聯(lián)系
3.測(cè)試數(shù)據(jù)進(jìn)入每一棵決策樹(shù),每棵樹(shù)做出自己的判斷,然后進(jìn)行投票選出最終所屬類別(默認(rèn)每棵樹(shù)權(quán)重一致)
RF優(yōu)點(diǎn)
1.不容易出現(xiàn)過(guò)擬合,因?yàn)檫x擇訓(xùn)練樣本的時(shí)候就不是全部樣本。
2.可以既可以處理屬性為離散值的量,比如ID3算法來(lái)構(gòu)造樹(shù),也可以處理屬性為連續(xù)值的量,比如C4.5算法來(lái)構(gòu)造樹(shù)。
3.對(duì)于高維數(shù)據(jù)集的處理能力令人興奮,它可以處理成千上萬(wàn)的輸入變量,并確定最重要的變量,因此被認(rèn)為是一個(gè)不錯(cuò)的降維方法。此外,該模型能夠輸出變量的重要性程度,這是一個(gè)非常便利的功能。
4.分類不平衡的情況時(shí),隨機(jī)森林能夠提供平衡數(shù)據(jù)集誤差的有效方法
RF缺點(diǎn)
1.隨機(jī)森林在解決回歸問(wèn)題時(shí)并沒(méi)有像它在分類中表現(xiàn)的那么好,這是因?yàn)樗⒉荒芙o出一個(gè)連續(xù)型的輸出。當(dāng)進(jìn)行回歸時(shí),隨機(jī)森林不能夠作出超越訓(xùn)練集數(shù)據(jù)范圍的預(yù)測(cè),這可能導(dǎo)致在對(duì)某些還有特定噪聲的數(shù)據(jù)進(jìn)行建模時(shí)出現(xiàn)過(guò)度擬合。
2.對(duì)于許多統(tǒng)計(jì)建模者來(lái)說(shuō),隨機(jī)森林給人的感覺(jué)像是一個(gè)黑盒子——你幾乎無(wú)法控制模型內(nèi)部的運(yùn)行,只能在不同的參數(shù)和隨機(jī)種子之間進(jìn)行嘗試。
Boosting
核心:Boosting是一種框架算法,用來(lái)提高弱分類器準(zhǔn)確度的方法,這種方法通過(guò)構(gòu)造一個(gè)預(yù)測(cè)函數(shù)序列,然后以一定的方式將他們組合成為一個(gè)準(zhǔn)確度較高的預(yù)測(cè)函數(shù),還有就是,Boosting算法更加關(guān)注錯(cuò)分的樣本,這點(diǎn)和Active Learning的尋找最有價(jià)值的訓(xùn)練樣本有點(diǎn)遙相呼應(yīng)的感覺(jué)
很抽象對(duì)不對(duì),沒(méi)關(guān)系,我們通過(guò)Adaboost來(lái)理解這個(gè)核心思想。
Boosting算法代表--Adaboost(Adaptive Boosting)
核心思想:一種迭代算法,針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后進(jìn)行分類,對(duì)于分類正確的樣本權(quán)值低,分類錯(cuò)誤的樣本權(quán)值高(通常是邊界附近的樣本),最后的分類器是很多弱分類器的線性疊加(加權(quán)組合),分類器相當(dāng)簡(jiǎn)單。實(shí)際上就是一個(gè)簡(jiǎn)單的弱分類算法提升(boost)的過(guò)程。
結(jié)合圖形來(lái)過(guò)一遍Adaboost算法
這里寫圖片描述算法開(kāi)始前,需要將每個(gè)樣本的權(quán)重初始化為1/m,這樣一開(kāi)始每個(gè)樣本都是等概率的分布,每個(gè)分類器都會(huì)公正對(duì)待。
這里寫圖片描述Round1,因?yàn)闃颖緳?quán)重都一樣,所以分類器開(kāi)始劃分,根據(jù)自己分類器的情況,只和分類器有關(guān)。劃分之后發(fā)現(xiàn)分錯(cuò)了三個(gè)"+"號(hào),那么這些分錯(cuò)的樣本,在給下一個(gè)分類器的時(shí)候權(quán)重就得到提高,也就是會(huì)影響到下次取訓(xùn)練樣本的分布,就是提醒下一個(gè)分類器,“誒!你注意點(diǎn)這幾個(gè)小子,我上次栽在他們手里了!”
這里寫圖片描述Round2,第二代分類器信誓旦旦的對(duì)上一代分類器說(shuō)"我知道了,大哥!我一定睜大眼睛好好分著三個(gè)玩意!"ok,這次三個(gè)上次分錯(cuò)的都被分出來(lái)了,但是并不是全部正確,這次又栽倒在左下角三個(gè)"-"上了,然后臨死前,第二代分類器對(duì)下一代分類器說(shuō)"這次我和上一代分類器已經(jīng)把他們摸得差不多了,你再稍微注意下左下角那三個(gè)小子,也別忘了上面那三個(gè)(一代錯(cuò)分的那三個(gè)"+")!"
這里寫圖片描述Round3:有了上面兩位大哥的提醒,第三代分類器表示,我差不多都知道上次大哥們都錯(cuò)哪了,我只要小心這幾個(gè),應(yīng)該沒(méi)什么問(wèn)題!只要把他們弄錯(cuò)的我給整對(duì)了,然后把我們收集的信息一對(duì),這不就行了么!ok,第三代分類器不負(fù)眾望,成功分對(duì)上面兩代分類器重點(diǎn)關(guān)注的對(duì)象,至于分錯(cuò)的那幾個(gè)小的,以前大哥們都分對(duì)了,我們坐下來(lái)核對(duì)一下就行了!
這里寫圖片描述最后,三個(gè)分類器坐下來(lái),各自談了談心得,分配了下權(quán)重,然后一個(gè)諸葛亮就誕生啦!是不是道理很簡(jiǎn)單!至于權(quán)重如何計(jì)算,不在本文討論范圍內(nèi)。
Adaboost優(yōu)點(diǎn)
1.可以使用各種方法構(gòu)造子分類器,Adaboost算法提供的是框架
2.簡(jiǎn)單,不用做特征篩選
3.相比較于RF,更不用擔(dān)心過(guò)擬合問(wèn)題
Adaboost缺點(diǎn)
1.從wiki上介紹的來(lái)看,adaboost對(duì)于噪音數(shù)據(jù)和異常數(shù)據(jù)是十分敏感的。Boosting方法本身對(duì)噪聲點(diǎn)異常點(diǎn)很敏感,因此在每次迭代時(shí)候會(huì)給噪聲點(diǎn)較大的權(quán)重,這不是我們系統(tǒng)所期望的。
2.運(yùn)行速度慢,凡是涉及迭代的基本上都無(wú)法采用并行計(jì)算,Adaboost是一種"串行"算法.所以GBDT(Gradient Boosting Decision Tree)也非常慢。
Pay Attention
1.Bagging: 樹(shù)"并行"生成 ,如RF;Boosting:樹(shù)"串行"生成,如Adaboost
2.boosting中的基模型為弱模型,而RF中的基樹(shù)是強(qiáng)模型(大多數(shù)情況)
3.boosting重采樣的不是樣本,而是樣本的分布,每次迭代之后,樣本的分布會(huì)發(fā)生變化,也就是被分錯(cuò)的樣本會(huì)更多的出現(xiàn)在下一次訓(xùn)練集中
4.明確一點(diǎn),我們迭代也好(Adaboost),并行(RF)也好,只和訓(xùn)練集有關(guān),和測(cè)試集真的一毛錢關(guān)系都沒(méi)有好么!我們先把原始數(shù)據(jù)分類測(cè)試集和訓(xùn)練集,然后測(cè)試集放一邊,訓(xùn)練集里面再挑子集作為迭代算法用的訓(xùn)練集!這個(gè)和K-fold思想很像。
作者:mrlevo520
鏈接:https://www.jianshu.com/p/708dff71df3a
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
總結(jié)
以上是生活随笔為你收集整理的Bootstrap(自助法),Bagging,Boosting(提升)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【阿西莫夫】最后的问题
- 下一篇: [机器学习收藏] TensorFlow初