《機器學習技法》---隨機森林


1 隨機森林

bagging的好處是降低各個子分類器的variance,而決策樹又是對數據敏感的算法,variance比較大。因此我們很自然地就把bagging用到了決策樹。也就是基本的隨機森林算法:

隨機森林的好處是:

(1)每棵樹並行化學習,非常有效率

(2)繼承了CART的好處

(3)彌補了決策樹variance大的缺點。

 

擴展的隨機森林(這部分沒怎么聽懂):

 

2 OOB錯誤

在做bagging時,每一輪bootstrap都會有一些數據沒有被抽到,這些數據沒有參與到當前這個小g的訓練,稱為out-of-bag(OOB)數據:

其中紅星就是OOB數據。

 所謂OOB錯誤,就是類似於留一交叉驗證。以每個數據作為單樣本驗證集,所有以這個數據為OOB的小g作一個平均,稱為G-,計算G-在這個驗證數據上的error。OOB錯誤就是對所有這些G-錯誤的平均:

 

 

因此,我們可以不用划分訓練集和驗證集,通過計算OOB錯誤,就能選擇不同參數的隨機森林:

實際中,OOB錯誤對於衡量大G的表現相當的准確。

 

3 特征選擇

做特征選擇的好處是:1使后續的訓練更有效率;2去掉了很多噪聲特征,提高了模型的泛化能力;3可解釋性。

 

特征選擇的方式一般是求解特征的重要性。然后選出重要性最高的前K個特征來。

對於線性模型,可直接根據學出的權重來判斷該特征是否重要:

 

隨機森林也可以做特征選擇。特征i的重要性如下計算:

其中紅色部分,是把驗證數據的特征i加入噪聲,這里是把所有對於當前的小g OOB的數據的特征i進行重新排列,然后計算打亂后的驗證集的OOB。這種重排列方式的優點是,可以大致維持原來特征i的分布,也被稱為permutation test 。之所以可以用這個方式來計算特征i的重要性是因為,若給特征i加上噪聲后,G的OOB驗證誤差有很大改變,則說明該特征對於樣本的分類結果影響很大,也就是重要性越大。

 

這邊遺留一個問題,其他的模型,通過划分訓練集和驗證集,做permutation test,不也是能做特征選擇嗎?

 

這邊給一個圖,左邊是單個決策樹,右邊是隨機森林。可以看出,在有噪聲的情況下,隨機森林這種使用多顆樹投票的機制,可以抵消掉一些噪聲,防止過擬合:

最后一個問題是,隨機森林一般取多少顆樹?

理論上是越多越好。實際上,要看當前G的效果是否會由於多加或少加一顆樹穩定,如果不穩定,就要繼續增加樹的數量。不然就夠了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM