隨機森林具有準確率高、魯棒性好、易於使用等優點,這使得它成為了目前最流行的機器學習演算法之一。隨機森林提供了兩種特徵選擇的方法:
mean decrease impurity
和mean decrease accuracy。
隨機森林由多個決策樹構成。決策樹中的每乙個節點都是關於某個特徵的條件,為的是將資料集按照不同的響應變數一分為二。利用不純度可以確定節點(最優條件),對於分類問題,通常採用
基尼不純度
或者資訊增益
,對於回歸問題,通常採用的是
方差或者最小二乘擬合。當訓練決策樹的時候,可以計算出每個特徵減少了多少
樹的不純度
。對於乙個決策樹森林來說,可以算出每個特徵
平均減少了多少不純度,並把它平均減少的不純度作為特徵選擇的值。
使用基於不純度的方法的時候,要記住:
1、這種方法存在
偏向,對具有更多類別的變數會更有利(id3);
2、對於存在關聯的多個特徵,其中任意乙個都可以作為指示器(優秀的特徵),並且一旦某個特徵被選擇之後,其他特徵的重要度就會急劇下降,因為不純度已經被選中的那個特徵降下來了,其他的特徵就很難再降低那麼多不純度了,這樣一來,只有先被選中的那個特徵重要度很高,其他的關聯特徵重要度往往較低。在理解資料時,這就會造成誤解,導致錯誤的認為先被選中的特徵是很重要的,而其餘的特徵是不重要的,但實際上這些特徵對響應變數的作用確實非常接近的(這跟
lasso
是很像的)。
特徵隨機選擇
方法稍微緩解了這個問題,但總的來說並沒有完全解決。
另一種常用的特徵選擇方法就是直接度量每個特徵對模型精確率的影響。主要思路是打亂每個特徵的特徵值順序,並且度量順序變動對模型的精確率的影響。很明顯,對於不重要的變數來說,打亂順序對模型的精確率影響不會太大,但是對於重要的變數來說,打亂順序就會降低模型的精確率。
隨機森林特徵篩選
剛看到一篇介紹特徵篩選的文章,裡面介紹基於模型的特徵排名,附加了乙個隨機森林的python程式,感覺挺好,趕緊mark下來。程式使用了skliearn機器學習庫,資料集為boston房屋 資料,源程式如下所示 fromsklearn.cross validationimportcross val s...
隨機森林之特徵選擇
摘要 在隨機森林介紹 中提到了隨機森林乙個重要特徵 能夠計算單個特徵變數的重要性。並且這一特徵在很多方面能夠得到應用,例如在銀行貸款業務中能否正確的評估乙個企業的信用度,關係到是否能夠有效地 貸款。但是信用評估模型的資料特徵有很多,其中不乏有很多噪音,所以需要計算出每乙個特徵的重要性並對這些特徵進行...
xgboost和隨機森林特徵重要性計算方法
隨機森林中特徵重要性和xgboost不同 隨機森林中的特徵重要性主要是基於不純度 也可以叫做gini importance 計算某乙個節點不純度為 其中,k omega k k le ft omega left ri ght omega right 分別為節點k以及其左右子節點中訓練樣本個數與總訓練...