01 集成學習 - 概述、Bagging - 隨機森林、袋外錯誤率

這幾章我們聊聊集成學習,集成學習算法是目前為止我們在相同特征條件下做特征工程時,建立模型評分和效果最好的算法。比之前講過的線性回歸、Logist回歸、KNN、決策樹的評分效果都好。

集成學習的講解分三個部分:Bagging-自舉匯聚、Boosting-提升算法Stacking-模型融合。注意:Stacking模型是一個很有趣的算法,在比賽中用到有時候效果會出奇得好,但有時候會出現(xiàn)畫蛇添足的效果,需要大家在比賽中自己體會一番,這個后續(xù)我們會講到。

Bagging算法:隨機森林,隨機森林的思想就是Bagging算法的核心思想。
Boosting算法:集成學習中最重點的內(nèi)容,GBDT-迭代決策樹/梯度提升決策樹、Adaboost-自適應(yīng)提升、XGBoost、LightGBM。

在比賽中XGBoost算法用得比較多,模型效果相當不錯。

此外需要進一步研究學習的一個重要算法是LightGBM,這是微軟算法研究團隊推出的一套,以直方圖為標準的提升算法。其運算效率在集成學習算法中是最快的。

一、為什么要進行集成學習

集成學習的思想是將若干個學習器(分類器、回歸器)組合之后產(chǎn)生一個新的學習器。

弱分類器(weak learner): 指那些分類準確率值只稍好于隨機猜測的分類器(error<0.5);

集成算法的成功在于保證弱分類器的多樣性。而且集成不穩(wěn)定的算法也能夠得到一個比較明顯的性能提升。

選擇集成學習主要原因:
1、弱分類器間存在一定的差異性,這會導致分類的邊界不同,也就是說可能存在錯誤。那么將多個若分類器合并后,就可以得到更加合理的邊界,減少整體的錯誤率,實現(xiàn)更好的效果。

2、對于數(shù)據(jù)集過大或者過小,可以分別進行劃分和有放回的操作,產(chǎn)生不同的數(shù)據(jù)子集,然后使用數(shù)據(jù)子集訓練不同的分類器,最終再合并成一個大分類器。

3、如果數(shù)據(jù)的劃分邊界過于復雜,使用線性模型很難描述情況,那么可以訓練多個模型,然后再進行模型的融合。

4、對于多個異構(gòu)的特征集,很難進行融合。那么可以考慮為每個數(shù)據(jù)集構(gòu)建一個分類模型,然后將多個模型融合。


- 在實際工作中很可能拿到如下的數(shù)據(jù)類型,如何將ABC三個數(shù)據(jù)集合并?
A數(shù)據(jù)集:x1-物品大類,x2-金額 | Y-點擊次數(shù)
①:電腦、10000 | 點了
②:日用品、50 | 沒點
B數(shù)據(jù)集(電腦):x1-CPU型號,x2-顯卡 | Y-電腦的類型
①:I7、1080 | 蘋果
②:I5、1070 | IBM
C數(shù)據(jù)集(日用品):.....

方法:構(gòu)建多個分類模型,最終將模型進行融合。
A數(shù)據(jù)集中,將電腦和日用品進行分類,分成兩個大類。
A-電腦和B結(jié)合,生成一個模型進行預(yù)測。
A-日用品和C結(jié)合,生成一個模型進行預(yù)測。
最后得到的模型進行融合。


二、Bagging方法

Bagging方法又稱自舉匯聚法,思想是:在原始數(shù)據(jù)集上,通過有放回的抽樣的方法,重新選擇出S個新數(shù)據(jù)集來分別訓練S個分類器的集成技術(shù)。即:這些模型訓練的數(shù)據(jù)中允許存在重復的數(shù)據(jù)。

樣本沒有被抽到的概率

之前講過,這里回顧一下:從m個樣本中,抽取出m個新的觀測值,此時任意一個樣本沒有被抽到的概率為36.8%。

解析:某個樣本一次被抽到的概率是1/m ,那么一次沒有被抽到的概率就是 1-1/m,m次都沒有抽取到的聯(lián)合概率是 (1-1/m)m 即樣本沒有出現(xiàn)在新的數(shù)據(jù)集中的概率。假如樣本的數(shù)據(jù)集足夠的大,即當m趨向于無窮大的時候求出的極限為1/e,約等于36.8%。


Bagging方法訓練出的模型在預(yù)測新樣本分類時,會使用多數(shù)投票、求均值的方式來統(tǒng)計最終分類結(jié)果。

Bagging方法的弱學習器可以是基本的算法模型:Linear、Ridge、Lasso、Logistic、Softmax、ID3、C4.5、CART、SVM、KNN等。

總結(jié): Bagging是有放回的抽樣,并且每個自己的樣本數(shù)量必須和原樣本數(shù)量一致,允許子集存在重復數(shù)據(jù)。

訓練過程
預(yù)測過程

三、隨機森林(Random Forest)

在Bagging策略的基礎(chǔ)上進行修改后的一種算法
1、從原始樣本集m個中用Bootstrap采樣-有放回重采樣,選出m個樣本。
2、從所有屬性中隨機選出k個屬性,選擇最佳分割屬性作為節(jié)點創(chuàng)建決策樹。
3、重復以上兩步s次,即建立s個決策樹。
4、這s個決策樹形成隨機森林,通過投票表決結(jié)果,決定數(shù)據(jù)屬于哪一類。

隨機森林包含兩個隨機的層面:樣本隨機,選擇特征隨機。

PS:隨機森林在傳統(tǒng)行業(yè),比如金融行業(yè)用的比較多。一般金融行業(yè)用到的算法:Logistic回歸、決策樹、隨機森林。但在比賽中隨機森林用到的概率比較低,原因在于比賽數(shù)據(jù)比較復雜,如果沒有很好的進行特征工程,那么在訓練集上模型的表現(xiàn)就很差了。

比較決策樹和隨機森林:
決策樹做分支的時候,考慮的是所有的屬性。而隨機森林分支的時候是對隨機選出的屬性做分類。

決策樹的構(gòu)建方式: 從原始K個特征中,每一個特征都找到當前特征的最優(yōu)分割點。然后基于最優(yōu)分割點,找到最優(yōu)的分割屬性。

傳統(tǒng)決策樹

隨機森林的構(gòu)建方式: 抽取K個特征,找到每個特征的最優(yōu)分割點,再選擇最優(yōu)的分割屬性。

隨機森林

隨機森林算法:
1、隨機有放回抽樣,選取S個數(shù)據(jù)集,建立S個模型。
2、在每一個基模型構(gòu)建過程中,對于劃分決策樹時,隨機選擇K個特征進行劃分。

隨機森林算法本身(bagging方法),不會對原有數(shù)據(jù)集中的數(shù)據(jù)內(nèi)容進行改變,只是對數(shù)據(jù)集進行隨機抽樣。

四、袋外錯誤率 - 隨機森林的評價指標

袋外: out of bag,error rate

隨機森林有一個重要的有點是:沒有必要對它進行交叉驗證或用一個獨立的測試集來獲得誤差的一個無偏估計。它可以在內(nèi)部進行評估,即在生成過程中就對誤差建立了一個無偏估計。

在構(gòu)建每個樹時,我們對訓練集使用了不同的bootstrap sample(隨機且有放回地抽取)。所以對每棵樹而言,假設(shè)對第k棵樹,大約有1/3的示例沒有參與第k課樹的生成,它們稱為第k棵樹的oob樣本。

袋外錯誤率的計算方式:
根據(jù)采樣的特點我們可以進行oob估計,計算方式如下:
1、對每個樣本,計算它作為oob樣本的樹,對它的分類情況(約1/3的樹)。
解釋:設(shè)有S個樹,如上我們所知,任意一個樣本大約會出現(xiàn)在2/3S個樹上,同時也約有1/3S棵樹上沒有出現(xiàn)這個樣本。這個樣本是這1/3S棵樹上的oob。這也意味著,這個樣本可以作為1/3S棵樹上的測試樣本。

2、然后以簡單多數(shù)投票作為該樣本的分類結(jié)果。
解釋:將某個樣本放入1/3S棵樹上,每個樹都會得出一個預(yù)測結(jié)果,對這1/3S個數(shù)據(jù)進行投票。

3、最后用誤分個數(shù)占樣本總數(shù)的比率,作為隨機森林oob的誤分率。
解釋: 將每個預(yù)測結(jié)果和真實值進行比較,即ym^ 和 ym 是否相等。找出錯誤預(yù)測的個數(shù)占總數(shù)m的比率,即隨機森林oob的誤分率。

誤分率示例

oob誤分率是隨機森林泛化誤差的一個無偏估計,它的結(jié)果近似于需要大量計算的k折交叉驗證

泛化誤差: 測試集上表現(xiàn)好,說明泛化能力強。反之說明泛化能力弱。

袋外錯誤率 = 測試集的錯誤率

02 集成學習 - Bagging - 特征重要度、隨機森林推廣算法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容