需要集成的原因:普通弱分類器具有較高的偏差(過于簡單,算法本身的擬合能力較差)或較大的方差(過于復(fù)雜,穩(wěn)定性、魯棒性不強)。
集成算法分類
Bagging:該方法通常考慮的是同質(zhì)弱學(xué)習(xí)器,相互獨立地并行學(xué)習(xí)這些弱學(xué)習(xí)器,重點在于獲得一個方差小的集成模型。代表模型——隨機森林。
Boosting:該方法通??紤]的也是同質(zhì)弱學(xué)習(xí)器。順序地學(xué)習(xí)這些弱學(xué)習(xí)器(每個基礎(chǔ)模型都依賴于前面的模型),并按照某種確定性的策略將它們組合起來。將主要生成偏差小的強模型(即使方差也可以被減?。?。代表模型——Adaboost、GBDT、XGBOOST。
Stacking:該方法通??紤]的是異質(zhì)弱學(xué)習(xí)器,并行學(xué)習(xí),并通過訓(xùn)練一個「元模型」將它們組合起來,根據(jù)不同弱模型的預(yù)測結(jié)果輸出一個最終的預(yù)測結(jié)果。將主要生成偏差小的強模型(即使方差也可以被減?。?/p>
隨機森林
總述:集成決策樹模型,輸出結(jié)果集成了所有的分類投票結(jié)果,將投票次數(shù)最多的類別指定為最終的輸出,這就是一種最簡單的Bagging 思想。假設(shè)訓(xùn)練集大小N,每棵樹都“隨機&有放回”地抽取N個訓(xùn)練樣本(即Bootstrap取樣方法)作為訓(xùn)練集進行訓(xùn)練。
算法:
訓(xùn)練集大小N,特征數(shù)M
1. 輸入特征數(shù)目m,用于確定決策樹上一個節(jié)點的決策結(jié)果(m<<M),從N個訓(xùn)練用例(樣本)中以有放回抽樣的方式,取樣N次,形成一個訓(xùn)練集(即bootstrap取樣),未抽到的樣本作預(yù)測,評估其誤差。
2. 對于每一個節(jié)點,隨機選擇m個特征,決策樹上每個節(jié)點的決定都是基于這些特征確定的。根據(jù)這m個特征,計算其最佳的分裂方式。
3. 每棵樹都不需要剪枝。
特點:
1)基學(xué)習(xí)器是CART決策樹;
2)隨機的從原始數(shù)據(jù)集中隨機的抽取m個子樣本;而且在訓(xùn)練每個基學(xué)習(xí)器的時候,也是隨機的選取k個特征,從這k個特征中選擇最優(yōu)特征來切分節(jié)點,從而更進一步的降低了模型的方差。
優(yōu)點:
1)準(zhǔn)確度高;
2)高度并行化,可處理大量的輸入變量,訓(xùn)練速度快,適用于大數(shù)據(jù);
3)隨機劃分特征,在樣本特征維度很高的時候,仍然能高效的訓(xùn)練模型;
4)可以給出各個特征對于輸出的重要性(sklearn中feature_importances_可以輸出特征的重要性);
5)RF實現(xiàn)比較簡單;
6)對部分特征缺失不敏感;
7)隨機采樣,訓(xùn)練出的模型的方差小,泛化能力強;
8)無偏估計:沒有必要對它進行交叉驗證或者用一個獨立的測試集來獲得誤差的一個無偏估計。它可以在內(nèi)部進行評估,也就是說在生成的過程中就可以對誤差建立一個無偏估計。
缺點:
1)在噪聲大的回歸&分類問題上容易過擬合;
2)取值劃分較多的屬性會對隨機森林產(chǎn)生更大的影響,所以隨機森林在這種數(shù)據(jù)上產(chǎn)出的屬性權(quán)值是不可信的。
AdaBoost
算法:
輸入:訓(xùn)練集T={(x1,y1),……,(xn,yn)},y:{-1,1}
輸出:終分類器Gm(x)
初始化:訓(xùn)練數(shù)據(jù)權(quán)值 D1=(w11,w12,w13……,w1n),w=1/n
循環(huán):m=1……M
? ? a)使用Dm訓(xùn)練數(shù)據(jù)集學(xué)習(xí),得到Gm
? ? b)計算Gm(x)的分類誤差率em=P(Gm(xi)!=yi)
? ? c)計算Gm(x)的系數(shù)(即分類器em<0.5時,話語權(quán)才>0),此時分類器
? ? d)更新訓(xùn)練集權(quán)值
循環(huán)結(jié)束條件:em小于某個閾值(一般是0.5),或是達到最大迭代次數(shù)(注:AdaBoost 方法中使用的分類器可能很弱(比如出現(xiàn)很大錯誤率),但只要它的分類效果比隨機好一點(比如兩類問題分類錯誤率略小于0.5),就能夠改善最終得到的模型。)
組合分類器:
最終分類器:
特點:
1)集中關(guān)注分類器錯分的那些數(shù)據(jù)來獲得新的分類器;
2)boosting中分類器的權(quán)值并不相等,錯誤率低的分類器“話語權(quán)”高。
優(yōu)點:
1)精度很高的分類器;
2)提供的是框架,可以使用各種方法構(gòu)建弱分類器;
3)弱分類器構(gòu)造極其簡單,不需要做特征篩選;
4)不會過擬合。
缺點:
1)易受噪聲干擾;
2)順序訓(xùn)練,時間長;
3)執(zhí)行效果依賴于弱分類器的選擇;
4)迭代次數(shù)(即弱分類器個數(shù))需要交叉驗證得到;
5)數(shù)據(jù)不平衡時準(zhǔn)確率下降。
GBDT 梯度提升樹
綜述:效果確實挺不錯;可以用于分類&回歸;可以篩選特征。GBDT的迭代,使用了前向分布算法,但是弱學(xué)習(xí)器使用CART回歸樹模型。每輪迭代要求找到一個CART回歸樹模型的弱學(xué)習(xí)器,讓本輪的損失函數(shù)最小。
總體思路:
假設(shè)t-1輪迭代得到的強分類器,對應(yīng)損失函數(shù)
,本輪想要找到一個CART回歸樹模型的弱學(xué)習(xí)器
,讓本輪損失函數(shù)
最小。也就是說,本輪迭代找到?jīng)Q策樹,要讓樣本的損失盡量變得更小,即
比較GBDT和AdaBoost:

負梯度擬合:
第t輪的第i個樣本的損失函數(shù)的負梯度表示為
利用可以擬合一顆CART回歸樹,得到第t棵回歸樹,對應(yīng)的葉節(jié)點區(qū)域
(J為葉節(jié)點個數(shù))。針對每個葉節(jié)點里的樣本,求使孫叔函數(shù)最小的輸出值
綜上得到本輪決策樹擬合函數(shù)
t輪后的強學(xué)習(xí)器表達式為
GBDT回歸算法
GBDT二分類
GBDT多分類
GBDT常用損失函數(shù)
GBDT正則化
優(yōu)點:
1) 靈活處理各種類型數(shù)據(jù)(連續(xù)值&離散值);
2) 調(diào)參時間相對少,準(zhǔn)確率較高。
3)使用一些健壯的損失函數(shù),對異常值的魯棒性非常強,e.g.:Huber和Quantile損失函數(shù)。
缺點:
1)由于弱學(xué)習(xí)器之間存在依賴關(guān)系,難以并行訓(xùn)練數(shù)據(jù)。(注:但是可以通過自采樣的SGBT來達到部分并行。)
XGBoost
總述:能夠自動利用 CPU 的多線程進行并行,同時在算法上加以改進提高了精度。