RandomForest中的feature_importance


隨機森林算法(RandomForest)的輸出有一個變量是 feature_importances_ ,翻譯過來是 特征重要性,具體含義是什么,這里試着解釋一下。

參考官網和其他資料可以發現,RF可以輸出兩種 feature_importance,分別是Variable importance和Gini importance,兩者都是feature_importance,只是計算方法不同。

Variable importance

選定一個feature M,在所有OOB樣本的feature M上人為添加噪聲,再測試模型在OOB上的判斷精確率,精確率相比沒有噪聲時下降了多少,就表示該特征有多重要。

假如一個feature對數據分類很重要,那么一旦這個特征的數據不再准確,對測試結果會造成較大的影響,而那些不重要的feature,即使受到噪聲干擾,對測試結果也沒什么影響。這就是 Variable importance 方法的朴素思想。

[添加噪聲:這里官網給出的說法是 randomly permute the values of variable m in the oob cases,permute的含義我還不是很確定,有的說法是打亂順序,有的說法是在數據上加入白噪聲。]

Gini importance

選定一個feature M,統計RF的每一棵樹中,由M形成的分支節點的Gini指數下降程度(或不純度下降程度)之和,這就是M的importance。

 

兩者對比來看,前者比后者計算量更大,后者只需要一邊構建DT,一邊做統計就可以。從sklearn的官方文檔對feature_importances_參數的描述來看,sklearn應當是使用了Gini importance對feature進行排序,同時sklearn把所有的Gini importance以sum的方式做了歸一化,得到了最終的feature_importances_輸出參數。

 

參考文獻:

RandomForest 官網  https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm

 


免責聲明!

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



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