可以將sklearn
的RandomForestClassifier
的屬性feature_importance_
給出的可變重要性值解釋爲百分比?我知道當在分割點使用特定特徵時,其所有樹木的雜質指數降低的平均值。feature_importance_
值的範圍是什麼?對於具有1000個特徵的數據集,如果feature_importance_
的取值範圍爲0〜0.05,大部分特徵爲0,只有少數表現出輕微增加,這是否表明數據是嘈雜的?隨機森林sklearn變量重要性
回答
據我所知,其平均減少雜質指數比所有的樹木當一個特定的功能用於分割點。
這是正確的。讓我們來看看如何詳細計算單個樹的特徵重要性[1]。雜質減少是分裂前節點的雜質減去分裂後兩個子節點雜質的總和。這是針對每個特徵在樹中的所有分割中取平均值的。然後,重要性被標準化:每個特徵重要性除以重要性的總和。
因此,在某種意義上說一棵樹的特徵重要度是百分比。它們總結爲一,描述單個特徵對樹總雜質減少量的貢獻。
隨機森林的功能重要度計算的平均重要性有關的對所有樹木。它們仍然可以被看作單個特徵的分數減少。你可以(也應該)驗證他們是否一對一。
什麼是feature_importance_值的範圍是多少?
在理論上,範圍是0到1,由於方式是重要度歸一化。但是,實際上這個範圍會大大降低。隨機森林隨機挑選數據的特徵和子集,因此很有可能所有特徵都用於分割。即使它們不是非常重要,它們也只佔整個重要性的一小部分。由於重要性應該是一比一,所以重要性會越低越好。
feature_importance_ values的取值範圍爲0〜0.05,大部分特徵爲0,只有少數表現出輕微的增加,這是否表明數據是嘈雜的?
沒有,這很可能意味着你有幾件樣品和/或幾棵樹(估計)。 0的重要性最有可能意味着該特徵在森林中根本不被使用。由於這個分類器的隨機性,至少應該使用所有的特徵。所以這表示沒有執行多次分割。
我假設你沒有很多樹,因爲n_estimators=10
的默認值非常低。大多數文獻建議使用100或1000棵樹。你不能有太多,它只會降低性能。
最後,警告
的字不要依賴於功能重要性也不爲過。如果一個特徵具有比另一個更高的重要性,它可能意味着它是更重要的,但你不能確定:
例如,假設你拷貝一個功能,並增加一條,作爲一個新的功能,將數據。原始功能和新功能應該同等重要。但是,每次執行拆分時只能選擇其中的一個,因此原始功能將在一半時間內隨機選擇。這也將原始功能的重要性減半了!如果另一個不在,它們的重要性只有它們的一半。
如果數據中的某些特徵是相關的(實際上是統計相關的),它們的重要性會低於同樣重要的不相關特徵。
這是否顯示的數據是吵?
你的問題是非常籠統的,如果不查看數據就不可能回答問題。
但是,一個簡單的方法,你可以看看feature_importance_
值百分比是歸他們的價值觀:
importance_sum = sum(rf.feature_importance_)
feature_importance_as_percent = [100*(x/sum) for x in rf.feature_importance_]
- 1. R-隨機森林 - 重要性/ varImPlot
- 2. 將重量用於隨機森林的sklearn
- 3. 如何sklearn隨機森林指數feature_importances_
- 4. 順序擬合隨機森林sklearn
- 5. R無規森林變量重要性
- 6. 多變量隨機森林與opencv
- 7. 隨機森林變量選擇
- 8. 將列名稱映射到隨機森林要素重要性
- 9. 隨機森林時間序列在R中的變量重要性
- 10. 使用python sklearn的隨機森林模型的增量訓練
- 11. ROC隨機森林
- 12. 導出功能重要性csv從隨機森林
- 13. 隨機森林OOB的重要性和錯誤估計
- 14. 隨機森林可變長度不同
- 15. 漸變增強vs隨機森林
- 16. python中的隨機森林
- 17. 隨機森林中的R
- 18. Spark隨機森林錯誤
- 19. 隨機森林,使用R
- 20. P值爲隨機森林
- 21. 隨機森林分析
- 22. 隨機森林分類器
- 23. OpenCV - 隨機森林示例
- 24. 時間序列數據缺失值Sklearn隨機森林
- 25. 使用sklearn在隨機森林中自動超參數調整?
- 26. 更新裝配sklearn隨機森林模型
- 27. 可以sklearn隨機森林直接處理分類特徵?
- 28. AdaBoostClassifier與隨機森林的多標籤分類(sklearn)
- 29. sklearn隨機森林準確性分數相同的訓練和測試數據
- 30. 我是否需要將名義變量轉換爲sklearn隨機森林的不同字段?
非常感謝您的詳細解答。我在每個分割中使用700個'n_estimators'和sqrt(p)個特徵。但我認爲我的樣本數量太少(2789),因爲我用來定義我的數據的數量是1024.我不確定。我會研究這個。再次感謝您抽出時間。 – Kanmani
@chilvandu我大致期望在森林中分裂700 * log2(1024)= 7000'。如果它是純粹隨機的,每個特徵應該被使用〜7次,但分類器不是純粹隨機的 - 它從一些候選者中選擇最好的特徵。我猜可能很容易發生,如果有更好的功能可供選擇,某些功能從未被選中。 2789聽起來像數量很少,但我確信。隨機森林應該能夠處理「無限」維特徵空間。我想這取決於數據中有多少結構/噪音。請詳細調查此問題。 – kazemakase