ML——集成學(xué)習(xí)
個體與集成
集成學(xué)習(xí):構(gòu)建并結(jié)合多個學(xué)習(xí)器來完成學(xué)習(xí)任務(wù)担神。
同質(zhì):集成中只包含同種類型的個體學(xué)習(xí)器(基學(xué)習(xí)器);
異質(zhì):集成中的個體學(xué)習(xí)器(組件學(xué)習(xí)器)由不同學(xué)習(xí)算法生成蚕冬。
個體學(xué)習(xí)器的“準(zhǔn)確性”和“多樣性”很重要,且相互沖突。
分類:個體學(xué)習(xí)器間存在強(qiáng)依賴關(guān)系诡宗,必須串行生成的序列化方法两波,eg瞳步,Boosting;個體學(xué)習(xí)器間不存在強(qiáng)依賴關(guān)系腰奋,可同時(shí)生成的并行化方法单起,eg,Bagging和隨機(jī)森林劣坊。
Boosting
工作機(jī)制:先從初始訓(xùn)練集訓(xùn)練出一個基學(xué)習(xí)器1嘀倒,根據(jù)基學(xué)習(xí)器誤差率表現(xiàn)更新訓(xùn)練樣本權(quán)重,使弱學(xué)習(xí)器1學(xué)習(xí)誤差率高的訓(xùn)練樣本權(quán)重變高局冰,讓這些點(diǎn)在弱學(xué)習(xí)器2中得到更多的重視测蘑,然后基于調(diào)整權(quán)重后的訓(xùn)練集訓(xùn)練學(xué)習(xí)器2,...重復(fù)進(jìn)行,直至弱學(xué)習(xí)器數(shù)目達(dá)到指定的值T康二,最終將這T個基學(xué)習(xí)器進(jìn)行加權(quán)結(jié)合帮寻。
AdaBoost
Boosting族算法最著名的代表是AdaBoost,是“Adaptive Boosting(自適應(yīng)增強(qiáng))”的縮寫赠摇。它的自適應(yīng)在于:前一個基本分類器分錯的樣本會得到加強(qiáng)固逗,加權(quán)后的全體樣本再次被用來訓(xùn)練下一個基本分類器。同時(shí)藕帜,在每一輪中加入一個新的弱分類器烫罩,直到達(dá)到某個預(yù)定的足夠小的錯誤率或達(dá)到預(yù)先指定的最大迭代次數(shù)。
算法過程
優(yōu)點(diǎn):作為分類器時(shí)精度很高洽故;在AdaBoost框架下贝攒,可使用各種回歸分類模型來構(gòu)建學(xué)習(xí)器;不易發(fā)生過擬合(會加入正則化項(xiàng))时甚。
缺點(diǎn):對異常樣本點(diǎn)敏感隘弊,異常樣本在迭代中可能會獲得較高的權(quán)重,影響最終的強(qiáng)學(xué)習(xí)器的預(yù)測準(zhǔn)確性荒适。
AdaBoost vs Logistic Regression
兩者均是0/1誤差的平滑近似:
GB梨熙、GBDT、xgboost
Gradient Boosting(GB)
梯度提升算法首先給定一個目標(biāo)損失函數(shù)刀诬,它的定義域是所有可行的基函數(shù)集合咽扇,提升算法通過迭代的選擇一個負(fù)梯度方向上的基函數(shù)來逐漸逼近局部最小值。
GB每一次建立模型是在之前建立模型
損失函數(shù)的梯度下降方向。一般認(rèn)為損失函數(shù)越小质欲,性能越好树埠,因此最好是使損失函數(shù)沿著梯度方向下降,模型得以不斷改進(jìn)提升性能嘶伟。
GBDT梯度提升決策樹算法
GBDT是GB和DT的結(jié)合怎憋,是以決策樹為基學(xué)習(xí)器的gb算法,此處的決策樹是回歸樹九昧。GBDT中的決策樹深度一般不超過5绊袋,葉子結(jié)點(diǎn)數(shù)不超過10。GBDT核心在于:每一棵樹學(xué)得是之前所有樹結(jié)論和的殘差耽装,這個殘差就是一個加預(yù)測值后能得真實(shí)值的累加量愤炸。比如A的真實(shí)年齡是18歲,但第一棵樹的預(yù)測年齡是12歲掉奄,差了6歲规个,即殘差為6歲。那么在第二棵樹里我們把A的年齡設(shè)為6歲去學(xué)習(xí)姓建,如果第二棵樹真的能把A分到6歲的葉子節(jié)點(diǎn)诞仓,那累加兩棵樹的結(jié)論就是A的真實(shí)年齡;如果第二棵樹的結(jié)論是5歲速兔,則A仍然存在1歲的殘差墅拭,第三棵樹里A的年齡就變成1歲,繼續(xù)學(xué)習(xí)涣狗。
xgboost
xgboost是在GBDT基本思路上改善而來谍婉,主要改變有
1)在損失函數(shù)中加入防止過擬合的懲罰函數(shù)
T是葉子的個數(shù),w是預(yù)測函數(shù)的參數(shù)镀钓,也就是決策樹算法下葉子節(jié)點(diǎn)的權(quán)重值穗熬。可以控制γ和λ這兩個超參數(shù)來調(diào)整正則化的懲罰力度丁溅。其實(shí)這里的懲罰函數(shù)也就定義了模型復(fù)雜度唤蔗,比如γ越大,λ越大窟赏,復(fù)雜度越小越不易過擬合妓柜。
2)用二階泰勒展式將損失函數(shù)展開,同時(shí)用到了一階和二階導(dǎo)數(shù)
第t次的loss:
對上式做二階泰勒展開:g為一階導(dǎo)數(shù)涯穷,h為二階導(dǎo)數(shù)
3)CART回歸樹中尋找最佳分割點(diǎn)的衡量標(biāo)準(zhǔn)是最小化均方差棍掐,xgboost尋找分割點(diǎn)的標(biāo)準(zhǔn)是最大化,lamda求豫,gama與正則化項(xiàng)相關(guān)
xgboost算法的步驟和GB基本相同塌衰,都是首先初始化為一個常數(shù)诉稍,gb是根據(jù)一階導(dǎo)數(shù)ri蝠嘉,xgboost是根據(jù)一階導(dǎo)數(shù)gi和二階導(dǎo)數(shù)hi最疆,迭代生成基學(xué)習(xí)器,相加更新學(xué)習(xí)器蚤告。
https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/
Bagging與隨機(jī)森林
為得到泛化性能強(qiáng)的集成努酸,集成中的個體學(xué)習(xí)器應(yīng)盡可能相互獨(dú)立,考慮使用相互有交疊的采樣子集杜恰。
Bagging
并行式集成學(xué)習(xí)的最著名代表获诈,基于自助采樣法,算法流程如下:
優(yōu)點(diǎn):訓(xùn)練一個Bagging集成與直接使用基學(xué)習(xí)算法訓(xùn)練一個學(xué)習(xí)器的復(fù)雜度同階心褐;與標(biāo)準(zhǔn)AdaBoost只適用于二分類任務(wù)不同舔涎,Bagging能不經(jīng)修改的用于多分類、回歸任務(wù)逗爹;初始訓(xùn)練集63.2%用于訓(xùn)練亡嫌,36.8%用作驗(yàn)證集對泛化性能做“包外估計(jì)”。
但從偏差-方差分解角度看掘而,Bagging主要關(guān)注降低方差挟冠。
隨機(jī)森林(RF)
隨機(jī)森林是Bagging的一個擴(kuò)展變體,在以決策樹為基學(xué)習(xí)器構(gòu)建Bagging集成的基礎(chǔ)上袍睡,在決策樹訓(xùn)練過程中引入了隨機(jī)屬性選擇知染。即對基決策樹的每個結(jié)點(diǎn),先從該結(jié)點(diǎn)的屬性集合中隨機(jī)選擇一個包含k(k<d斑胜,d為所有屬性個數(shù))個屬性的子集控淡,然后從中選一個最優(yōu)屬性用于劃分。若k=d止潘,則為傳統(tǒng)決策樹掺炭;k=1,則隨機(jī)選擇一個屬性劃分覆山。一般推薦竹伸。
https://blog.csdn.net/qq547276542/article/details/78304454
RF起始性能相對較差,但隨著學(xué)習(xí)器數(shù)目的增加簇宽,會收斂到更低的泛化誤差勋篓。另外RF的訓(xùn)練效率常優(yōu)于Bagging,因?yàn)锽agging使用“確定型”決策樹魏割,選擇劃分屬性時(shí)要對結(jié)點(diǎn)所有屬性進(jìn)行考察譬嚣,而RF使用“隨機(jī)型”決策樹,只需考慮一個屬性子集钞它。
結(jié)合策略
學(xué)習(xí)器結(jié)合可能會從三個方面帶來好處:
1)統(tǒng)計(jì)方面:當(dāng)多個假設(shè)達(dá)到同等性能時(shí)拜银,可減小因誤選單學(xué)習(xí)器導(dǎo)致泛化性能不佳的風(fēng)險(xiǎn)殊鞭;
2)計(jì)算方面:降低陷入糟糕局部極小點(diǎn)的風(fēng)險(xiǎn);
3)表示方面:擴(kuò)大相應(yīng)假設(shè)空間尼桶,學(xué)習(xí)更好的近似操灿。
平均法
對數(shù)值型輸出,最常見的結(jié)合策略是平均法泵督。
簡單平均:? ? ? ? ? ? ? ? ? ?
(特殊的加權(quán)平均法趾盐,宜在個體學(xué)習(xí)器性能相近時(shí)使用)
加權(quán)平均法:? ? ? ? ? ? ? ?
其中是個體學(xué)習(xí)器
的權(quán)重,一般從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)而得小腊,通常要求
救鲤,宜在個體學(xué)習(xí)器相差較大時(shí)使用。
投票法
對分類任務(wù)秩冈,學(xué)習(xí)器從類別標(biāo)記集合中預(yù)測出一個標(biāo)記本缠,最常見的結(jié)合策略是投票法。
絕大多數(shù)投票法:
相對多數(shù)投票法:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
預(yù)測為得票最多的標(biāo)記丹锹,若同時(shí)有多個標(biāo)記獲得最高票,則從中隨機(jī)選取一個队他。
加權(quán)投票法:
? ? ? ? ? ? ? ? ? ? ? ? ?
與加權(quán)平均法類似卷仑,是
的權(quán)重,通常
麸折。
個體學(xué)習(xí)器的輸出類型:
類標(biāo)記:硬投票锡凝。,若
將樣本x預(yù)測為類別
則取值為1垢啼,否則為0窜锯。
類概率:軟投票。芭析,相當(dāng)于對后驗(yàn)概率
的一個估計(jì)锚扎。
不同類型的值不能混用;對一些能在預(yù)測出類別標(biāo)記的同時(shí)產(chǎn)生分類置信度的學(xué)習(xí)器馁启,其分類置信度可轉(zhuǎn)化為類概率使用驾孔;分類置信度應(yīng)規(guī)范化后使用;基于類概率進(jìn)行結(jié)合優(yōu)于直接基于類標(biāo)記進(jìn)行結(jié)合惯疙;若基學(xué)習(xí)器類型不同翠勉,不能直接比較類概率值,應(yīng)先將其轉(zhuǎn)化為類標(biāo)記輸出(eg類概率輸出最大的設(shè)為1霉颠,其他為0)再投票对碌。
學(xué)習(xí)法
當(dāng)訓(xùn)練數(shù)據(jù)很多時(shí),常使用通過另一個學(xué)習(xí)器來進(jìn)行結(jié)合的“學(xué)習(xí)法”蒿偎,代表算法Stacking
第一階段獲得各個模型對樣本x1的預(yù)測標(biāo)簽值朽们;第二階段將各個模型的預(yù)測標(biāo)簽值作為一個新的特征(x1的真實(shí)標(biāo)簽值還是標(biāo)簽值)怀读,再用某個算法進(jìn)行訓(xùn)練,獲得一個融合模型骑脱,用這個融合模型進(jìn)行測試集的預(yù)測菜枷。
周志華《機(jī)器學(xué)習(xí)》
https://www.cnblogs.com/pinard/p/6131423.html
http://www.reibang.com/p/470556a108e2
https://www.cnblogs.com/wxquare/p/5541414.html
https://zhuanlan.zhihu.com/p/34325706