隨機森林不需要交叉驗證!
隨機森林屬於bagging集成算法,采用Bootstrap,理論和實踐可以發現Bootstrap每次約有1/3的樣本不會出現在Bootstrap所采集的樣本集合中。故沒有參加決策樹的建立,這些數據稱為袋外數據oob,歪點子來了,這些袋外數據可以用於取代測試集誤差估計方法,可用於模型的驗證。
袋外數據(oob)誤差的計算方法如下:
- 對於已經生成的隨機森林,用袋外數據測試其性能,假設袋外數據總數為O,用這O個袋外數據作為輸入,帶進之前已經生成的隨機森林分類器,分類器會給出O個數據相應的分類
- 因為這O條數據的類型是已知的,則用正確的分類與隨機森林分類器的結果進行比較,統計隨機森林分類器分類錯誤的數目,設為X,則袋外數據誤差大小=X/O
隨機森林樹模型的特征重要性排序常見有兩種方法
1、基於OOB的評估指標
先用訓練好的模型對OOB數據進行打分,計算出AUC或其他業務定義的評估指標;接着對OOB數據中的每個特征:(1) 隨機shuffle當前特征的取值(即依次對每個特征賦予一個隨機數,觀察算法性能的變化);(2) 重新對當前數據進行打分,計算評估指標;(3)計算指標變化率。按照上面方式,對每個特征都會得到一個變化率,最后按照變化率排序來量化特征重要性。
2、基於gini指數
就是看看每個特征在隨機森林中的每顆樹上做了多大的貢獻,然后取個平均值,最后比一比特征之間的貢獻大小。對於生成的每棵樹,計算每個分裂節點的Gini指數,計算公式如下:
其中,K表示K個類別, 表示第
個分裂點中k類別所占的比例。特征
在節點m的重要性可以通過分裂前后的特征
的差值來表示,可以表示為
最后,把所有求得的重要性評分做一個歸一化處理即可
具體計算例子可以參考【3】
Reference:
【1】https://zhuanlan.zhihu.com/p/77473961
【2】https://zhuanlan.zhihu.com/p/77480254
【3】https://www.jianshu.com/p/cfd7e2d385da