這幾章我們聊聊集成學(xué)習(xí)卧斟,集成學(xué)習(xí)算法是目前為止我們?cè)?strong>相同特征條件下做特征工程時(shí)殴边,建立模型評(píng)分和效果最好的算法。比之前講過(guò)的線性回歸珍语、Logist回歸锤岸、KNN、決策樹(shù)的評(píng)分效果都好板乙。
集成學(xué)習(xí)的講解分三個(gè)部分:Bagging-自舉匯聚是偷、Boosting-提升算法、Stacking-模型融合募逞。注意:Stacking模型是一個(gè)很有趣的算法晓猛,在比賽中用到有時(shí)候效果會(huì)出奇得好,但有時(shí)候會(huì)出現(xiàn)畫(huà)蛇添足的效果凡辱,需要大家在比賽中自己體會(huì)一番戒职,這個(gè)后續(xù)我們會(huì)講到。
Bagging算法:隨機(jī)森林透乾,隨機(jī)森林的思想就是Bagging算法的核心思想洪燥。
Boosting算法:集成學(xué)習(xí)中最重點(diǎn)的內(nèi)容磕秤,GBDT-迭代決策樹(shù)/梯度提升決策樹(shù)、Adaboost-自適應(yīng)提升捧韵、XGBoost市咆、LightGBM。
在比賽中XGBoost算法用得比較多再来,模型效果相當(dāng)不錯(cuò)蒙兰。
此外需要進(jìn)一步研究學(xué)習(xí)的一個(gè)重要算法是LightGBM,這是微軟算法研究團(tuán)隊(duì)推出的一套芒篷,以直方圖為標(biāo)準(zhǔn)的提升算法搜变。其運(yùn)算效率在集成學(xué)習(xí)算法中是最快的。
一针炉、為什么要進(jìn)行集成學(xué)習(xí)
集成學(xué)習(xí)的思想是將若干個(gè)學(xué)習(xí)器(分類器挠他、回歸器)組合之后產(chǎn)生一個(gè)新的學(xué)習(xí)器。
弱分類器(weak learner): 指那些分類準(zhǔn)確率值只稍好于隨機(jī)猜測(cè)的分類器(error<0.5);
集成算法的成功在于保證弱分類器的多樣性篡帕。而且集成不穩(wěn)定的算法也能夠得到一個(gè)比較明顯的性能提升殖侵。
選擇集成學(xué)習(xí)主要原因:
1、弱分類器間存在一定的差異性镰烧,這會(huì)導(dǎo)致分類的邊界不同拢军,也就是說(shuō)可能存在錯(cuò)誤。那么將多個(gè)若分類器合并后怔鳖,就可以得到更加合理的邊界朴沿,減少整體的錯(cuò)誤率,實(shí)現(xiàn)更好的效果败砂。
2赌渣、對(duì)于數(shù)據(jù)集過(guò)大或者過(guò)小,可以分別進(jìn)行劃分和有放回的操作昌犹,產(chǎn)生不同的數(shù)據(jù)子集坚芜,然后使用數(shù)據(jù)子集訓(xùn)練不同的分類器,最終再合并成一個(gè)大分類器斜姥。
3鸿竖、如果數(shù)據(jù)的劃分邊界過(guò)于復(fù)雜,使用線性模型很難描述情況铸敏,那么可以訓(xùn)練多個(gè)模型缚忧,然后再進(jìn)行模型的融合。
4杈笔、對(duì)于多個(gè)異構(gòu)的特征集闪水,很難進(jìn)行融合。那么可以考慮為每個(gè)數(shù)據(jù)集構(gòu)建一個(gè)分類模型蒙具,然后將多個(gè)模型融合球榆。
例 - 在實(shí)際工作中很可能拿到如下的數(shù)據(jù)類型朽肥,如何將ABC三個(gè)數(shù)據(jù)集合并?
A數(shù)據(jù)集:x1-物品大類,x2-金額 | Y-點(diǎn)擊次數(shù)
①:電腦持钉、10000 | 點(diǎn)了
②:日用品衡招、50 | 沒(méi)點(diǎn)
B數(shù)據(jù)集(電腦):x1-CPU型號(hào),x2-顯卡 | Y-電腦的類型
①:I7、1080 | 蘋(píng)果
②:I5每强、1070 | IBM
C數(shù)據(jù)集(日用品):.....
方法:構(gòu)建多個(gè)分類模型始腾,最終將模型進(jìn)行融合。
A數(shù)據(jù)集中空执,將電腦和日用品進(jìn)行分類浪箭,分成兩個(gè)大類。
A-電腦和B結(jié)合脆烟,生成一個(gè)模型進(jìn)行預(yù)測(cè)山林。
A-日用品和C結(jié)合房待,生成一個(gè)模型進(jìn)行預(yù)測(cè)邢羔。
最后得到的模型進(jìn)行融合。
二桑孩、Bagging方法
Bagging方法又稱自舉匯聚法拜鹤,思想是:在原始數(shù)據(jù)集上,通過(guò)有放回的抽樣的方法流椒,重新選擇出S個(gè)新數(shù)據(jù)集來(lái)分別訓(xùn)練S個(gè)分類器的集成技術(shù)敏簿。即:這些模型訓(xùn)練的數(shù)據(jù)中允許存在重復(fù)的數(shù)據(jù)。
之前講過(guò)宣虾,這里回顧一下:從m個(gè)樣本中惯裕,抽取出m個(gè)新的觀測(cè)值,此時(shí)任意一個(gè)樣本沒(méi)有被抽到的概率為36.8%绣硝。
解析:某個(gè)樣本一次被抽到的概率是1/m 蜻势,那么一次沒(méi)有被抽到的概率就是 1-1/m,m次都沒(méi)有抽取到的聯(lián)合概率是 (1-1/m)m 即樣本沒(méi)有出現(xiàn)在新的數(shù)據(jù)集中的概率鹉胖。假如樣本的數(shù)據(jù)集足夠的大握玛,即當(dāng)m趨向于無(wú)窮大的時(shí)候求出的極限為1/e,約等于36.8%甫菠。
Bagging方法訓(xùn)練出的模型在預(yù)測(cè)新樣本分類時(shí)挠铲,會(huì)使用多數(shù)投票、求均值的方式來(lái)統(tǒng)計(jì)最終分類結(jié)果寂诱。
Bagging方法的弱學(xué)習(xí)器可以是基本的算法模型:Linear拂苹、Ridge、Lasso痰洒、Logistic醋寝、Softmax搞挣、ID3、C4.5音羞、CART囱桨、SVM、KNN等嗅绰。
總結(jié): Bagging是有放回的抽樣舍肠,并且每個(gè)自己的樣本數(shù)量必須和原樣本數(shù)量一致,允許子集存在重復(fù)數(shù)據(jù)窘面。
三翠语、隨機(jī)森林(Random Forest)
在Bagging策略的基礎(chǔ)上進(jìn)行修改后的一種算法
1、從原始樣本集m個(gè)中用Bootstrap采樣-有放回重采樣财边,選出m個(gè)樣本肌括。
2、從所有屬性中隨機(jī)選出k個(gè)屬性酣难,選擇最佳分割屬性作為節(jié)點(diǎn)創(chuàng)建決策樹(shù)谍夭。
3、重復(fù)以上兩步s次憨募,即建立s個(gè)決策樹(shù)紧索。
4、這s個(gè)決策樹(shù)形成隨機(jī)森林菜谣,通過(guò)投票表決結(jié)果珠漂,決定數(shù)據(jù)屬于哪一類。
隨機(jī)森林包含兩個(gè)隨機(jī)的層面:樣本隨機(jī)尾膊,選擇特征隨機(jī)媳危。
PS:隨機(jī)森林在傳統(tǒng)行業(yè),比如金融行業(yè)用的比較多冈敛。一般金融行業(yè)用到的算法:Logistic回歸待笑、決策樹(shù)、隨機(jī)森林莺债。但在比賽中隨機(jī)森林用到的概率比較低滋觉,原因在于比賽數(shù)據(jù)比較復(fù)雜,如果沒(méi)有很好的進(jìn)行特征工程齐邦,那么在訓(xùn)練集上模型的表現(xiàn)就很差了椎侠。
比較決策樹(shù)和隨機(jī)森林:
決策樹(shù)做分支的時(shí)候,考慮的是所有的屬性措拇。而隨機(jī)森林分支的時(shí)候是對(duì)隨機(jī)選出的屬性做分類我纪。
決策樹(shù)的構(gòu)建方式: 從原始K個(gè)特征中,每一個(gè)特征都找到當(dāng)前特征的最優(yōu)分割點(diǎn)。然后基于最優(yōu)分割點(diǎn)浅悉,找到最優(yōu)的分割屬性趟据。
隨機(jī)森林的構(gòu)建方式: 抽取K個(gè)特征,找到每個(gè)特征的最優(yōu)分割點(diǎn)术健,再選擇最優(yōu)的分割屬性汹碱。
隨機(jī)森林算法:
1、隨機(jī)有放回抽樣荞估,選取S個(gè)數(shù)據(jù)集咳促,建立S個(gè)模型。
2勘伺、在每一個(gè)基模型構(gòu)建過(guò)程中跪腹,對(duì)于劃分決策樹(shù)時(shí),隨機(jī)選擇K個(gè)特征進(jìn)行劃分飞醉。
隨機(jī)森林算法本身(bagging方法)冲茸,不會(huì)對(duì)原有數(shù)據(jù)集中的數(shù)據(jù)內(nèi)容進(jìn)行改變,只是對(duì)數(shù)據(jù)集進(jìn)行隨機(jī)抽樣缅帘。
四轴术、袋外錯(cuò)誤率 - 隨機(jī)森林的評(píng)價(jià)指標(biāo)
袋外: out of bag,error rate
隨機(jī)森林有一個(gè)重要的有點(diǎn)是:沒(méi)有必要對(duì)它進(jìn)行交叉驗(yàn)證或用一個(gè)獨(dú)立的測(cè)試集來(lái)獲得誤差的一個(gè)無(wú)偏估計(jì)股毫。它可以在內(nèi)部進(jìn)行評(píng)估膳音,即在生成過(guò)程中就對(duì)誤差建立了一個(gè)無(wú)偏估計(jì)召衔。
在構(gòu)建每個(gè)樹(shù)時(shí)铃诬,我們對(duì)訓(xùn)練集使用了不同的bootstrap sample(隨機(jī)且有放回地抽取)。所以對(duì)每棵樹(shù)而言苍凛,假設(shè)對(duì)第k棵樹(shù)趣席,大約有1/3的示例沒(méi)有參與第k課樹(shù)的生成,它們稱為第k棵樹(shù)的oob樣本醇蝴。
袋外錯(cuò)誤率的計(jì)算方式:
根據(jù)采樣的特點(diǎn)我們可以進(jìn)行oob估計(jì)宣肚,計(jì)算方式如下:
1、對(duì)每個(gè)樣本悠栓,計(jì)算它作為oob樣本的樹(shù)霉涨,對(duì)它的分類情況(約1/3的樹(shù))。
解釋:設(shè)有S個(gè)樹(shù)惭适,如上我們所知笙瑟,任意一個(gè)樣本大約會(huì)出現(xiàn)在2/3S個(gè)樹(shù)上,同時(shí)也約有1/3S棵樹(shù)上沒(méi)有出現(xiàn)這個(gè)樣本癞志。這個(gè)樣本是這1/3S棵樹(shù)上的oob往枷。這也意味著,這個(gè)樣本可以作為1/3S棵樹(shù)上的測(cè)試樣本。
2错洁、然后以簡(jiǎn)單多數(shù)投票作為該樣本的分類結(jié)果秉宿。
解釋:將某個(gè)樣本放入1/3S棵樹(shù)上,每個(gè)樹(shù)都會(huì)得出一個(gè)預(yù)測(cè)結(jié)果屯碴,對(duì)這1/3S個(gè)數(shù)據(jù)進(jìn)行投票描睦。
3、最后用誤分個(gè)數(shù)占樣本總數(shù)的比率导而,作為隨機(jī)森林oob的誤分率酌摇。
解釋: 將每個(gè)預(yù)測(cè)結(jié)果和真實(shí)值進(jìn)行比較,即ym^ 和 ym 是否相等嗡载。找出錯(cuò)誤預(yù)測(cè)的個(gè)數(shù)占總數(shù)m的比率窑多,即隨機(jī)森林oob的誤分率。
oob誤分率是隨機(jī)森林泛化誤差的一個(gè)無(wú)偏估計(jì)洼滚,它的結(jié)果近似于需要大量計(jì)算的k折交叉驗(yàn)證埂息。
泛化誤差: 測(cè)試集上表現(xiàn)好,說(shuō)明泛化能力強(qiáng)遥巴。反之說(shuō)明泛化能力弱千康。
袋外錯(cuò)誤率 = 測(cè)試集的錯(cuò)誤率