[問題] RandomForest的VarImportance

作者: wheado (principal component QQ)   2018-02-08 18:28:13
[問題類型]:
Variable Importance
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
RandomForest的fit出來的model有一個importance
裡面的MeanDecreasingGini是用來判斷變數的重要性的指標
這個指標是一個平均值的結果
我想問的是
對於第i棵樹
要怎麼算出DecreasingGini值
在網路上參考了一篇文章 連結如下
https://goo.gl/6WSuoi
但這篇主要說明是Mean Decrease in Accuracy
不過概念上是很像
第一個step說: 隨機挑一些data與variable => 產生一棵樹
第二個step說: 將樹的模型用來預測沒有被挑到的data => 產生一個OOB-accuracy
第三個我就看不懂了
甚麼是permute variable i
有使用RandomForest的使用者能夠指導一下嗎?
不想似懂非懂認為這是重要指標
但不曉得如何而來
謝謝大家
[環境敘述]:
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
[關鍵字]:
Measures of variable importance in random forests
謝謝大家指導
作者: x88776544pc (龍飛五丈原)   2018-02-09 00:16:00
說成不看也可以,但在預測時你總是要給這個"不看"的變數一個值,通常就是透過上述方法把它變成一個沒有價值的變數,也就是 noise variable而 MDI 只是將每個變數在所有樹中有使用到它的節點造成的 gini 值下降量加起來,再以所有樹的數目平均
作者: wheado (principal component QQ)   2018-02-09 00:02:00
不懂加入雜訊是什麼意思我的感覺是不看i變數接著計算正確率下降多少然後每個被sample到的變數都不看一次就可以得到該棵樹所有的decreasing accuracy
作者: x88776544pc (龍飛五丈原)   2018-02-08 22:22:00
它的概念簡單來說就是對每個變數一一加入雜訊如果某變數很重要,那加入雜訊後的錯誤率就會大幅 UP第三步:將OOB樣本中的第 i 個變數加入雜訊以取得該變數雜訊化後的預測結果去計算OOB error rate i常見的方式有將該變數 bootstrap, sample 或遞移
作者: a78998042a (Benjimine)   2018-02-20 12:34:00
在不同tree套件中,相同指標的算法也不一定一樣,可能會對於可能發生的結點,或現在模行發生的結點,產生不一樣的加權。印象中他的算法是,對單一顆樹,在拿掉一個變數之後,模型的評估值(這裡是gini)效果是否下降(decrease),下降越多,表示該變數是雜訊變數的可能性越高,重要性越低,而如果一變數在加入之後,模型的正確率反而出現混淆、干擾,評估值會趨近0然後Mean就是把所有樹的平均,所以是Meandecrease gini,如果是MDA(accuracy),數值也可能小於0。希望以上回答有協助到您,對回答有疑義可以來信給我。
作者: x88776544pc (龍飛五丈原)   2018-02-21 23:33:00
樓上你講的permutation-based的算法只適用於 MDA 吧?你講 gini 的概念是對的但不能那樣算 MDgini如果覺得我有理解錯誤的地方麻煩指正一下

Links booklink

Contact Us: admin [ a t ] ucptt.com