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

白爾摩斯發表於2018-11-10

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

整合學習的講解分三個部分:__Bagging-自舉匯聚__、__Boosting-提升演算法__、__Stacking-模型融合__。注意:Stacking模型是一個很有趣的演算法,在比賽中用到有時候效果會出奇得好,但有時候會出現畫蛇添足的效果,需要大家在比賽中自己體會一番,這個後續我們會講到。

Bagging演算法:__隨機森林__,隨機森林的思想就是Bagging演算法的核心思想。
Boosting演算法:整合學習中最重點的內容,__GBDT-迭代決策樹/梯度提升決策樹__、__Adaboost-自適應提升__、__XGBoost__、__LightGBM__。

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

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

一、為什麼要進行整合學習

整合學習的思想是將若干個學習器(分類器、迴歸器)組合之後產生一個新的學習器。

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

整合演算法的成功在於保證弱分類器的多樣性。而且整合不穩定的演算法也能夠得到一個比較明顯的效能提升。

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


2、對於資料集過大或者過小,可以分別進行劃分和有放回的操作,產生不同的資料子集,然後使用資料子集訓練不同的分類器,最終再合併成一個大分類器。

3、如果資料的劃分邊界過於複雜,使用線性模型很難描述情況,那麼可以訓練多個模型,然後再進行模型的融合。

4、對於多個異構的特徵集,很難進行融合。那麼可以考慮為每個資料集構建一個分類模型,然後將多個模型融合。


– 在實際工作中很可能拿到如下的資料型別,如何將ABC三個資料集合並?
__A資料集__:x1-物品大類,x2-金額 | Y-點選次數
①:電腦、10000 | 點了
②:日用品、50 | 沒點
__B資料集(電腦)__:x1-CPU型號,x2-顯示卡 | Y-電腦的型別
①:I7、1080 | 蘋果
②:I5、1070 | IBM
__C資料集(日用品)__:…..

__方法:__構建多個分類模型,最終將模型進行融合。
A資料集中,將電腦和日用品進行分類,分成兩個大類。
A-電腦和B結合,生成一個模型進行預測。
A-日用品和C結合,生成一個模型進行預測。
最後得到的模型進行融合。


二、Bagging方法

Bagging方法又稱自舉匯聚法,思想是:在原始資料集上,通過__有放回的抽樣__的方法,重新選擇出S個新資料集來分別訓練S個分類器的整合技術。即:這些模型訓練的資料中允許存在重複的資料。

樣本沒有被抽到的概率

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

解析:某個樣本一次被抽到的概率是1/m ,那麼一次沒有被抽到的概率就是 1-1/m,m次都沒有抽取到的聯合概率是 (1-1/m)m 即樣本沒有出現在新的資料集中的概率。假如樣本的資料集足夠的大,即當m趨向於無窮大的時候求出的極限為1/e,約等於36.8%。


Bagging方法訓練出的模型在預測新樣本分類時,會使用__多數投票__、__求均值__的方式來統計最終分類結果。

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

總結: Bagging是有放回的抽樣,並且每個自己的樣本數量必須和原樣本數量一致,允許子集存在重複資料。

訓練過程

預測過程

三、隨機森林(Random Forest)

在Bagging策略的基礎上進行修改後的一種演算法
1、從原始樣本集m箇中用Bootstrap取樣-有放回重取樣,選出m個樣本。
2、從所有屬性中隨機選出k個屬性,選擇最佳分割屬性作為節點建立決策樹。
3、重複以上兩步s次,即建立s個決策樹。
4、這s個決策樹形成隨機森林,通過投票表決結果,決定資料屬於哪一類。

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

PS:隨機森林在傳統行業,比如金融行業用的比較多。一般金融行業用到的演算法:Logistic迴歸、決策樹、隨機森林。但在比賽中隨機森林用到的概率比較低,原因在於比賽資料比較複雜,如果沒有很好的進行特徵工程,那麼在訓練集上模型的表現就很差了。

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

決策樹的構建方式: 從原始K個特徵中,每一個特徵都找到當前特徵的最優分割點。然後基於最優分割點,找到最優的分割屬性。

傳統決策樹

隨機森林的構建方式: 抽取K個特徵,找到每個特徵的最優分割點,再選擇最優的分割屬性。
隨機森林

隨機森林演算法:
1、隨機有放回抽樣,選取S個資料集,建立S個模型。
2、在每一個基模型構建過程中,對於劃分決策樹時,隨機選擇K個特徵進行劃分。

隨機森林演算法本身(bagging方法),不會對原有資料集中的資料內容進行改變,只是對資料集進行隨機抽樣。

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

袋外: out of bag,error rate

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

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

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

2、然後以簡單多數投票作為該樣本的分類結果。
__解釋:__將某個樣本放入1/3S棵樹上,每個樹都會得出一個預測結果,對這1/3S個資料進行投票。

3、最後用誤分個數佔樣本總數的比率,作為隨機森林oob的誤分率。
解釋: 將每個預測結果和真實值進行比較,即ym^ 和 ym 是否相等。找出錯誤預測的個數佔總數m的比率,即隨機森林oob的誤分率。
誤分率示例

__oob誤分率__是隨機森林泛化誤差的一個無偏估計,它的結果近似於需要大量計算的__k折交叉驗證__。

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

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

02 整合學習 – Bagging – 特徵重要度、隨機森林推廣演算法


相關文章