RandomForest中的feature_importance

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

參考官網和其餘資料能夠發現,RF能夠輸出兩種 feature_importance,分別是Variable importance和Gini importance,二者都是feature_importance,只是計算方法不一樣。dom

Variable importance

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

假如一個feature對數據分類很重要,那麼一旦這個特徵的數據再也不準確,對測試結果會形成較大的影響,而那些不重要的feature,即便受到噪聲干擾,對測試結果也沒什麼影響。這就是 Variable importance 方法的樸素思想。翻譯

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

Gini importance

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

 

二者對比來看,前者比後者計算量更大,後者只須要一邊構建DT,一邊作統計就能夠。從sklearn的官方文檔對feature_importances_參數的描述來看,sklearn應當是使用了Gini importance對feature進行排序,同時sklearn把全部的Gini importance以sum的方式作了歸一化,獲得了最終的feature_importances_輸出參數。排序

 

參考文獻:文檔

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

相關文章
相關標籤/搜索