[問題] RandomForest的VarImportance

看板R_Language作者 (principal component QQ)時間7年前 (2018/02/08 18:28), 編輯推噓3(3026)
留言29則, 3人參與, 7年前最新討論串1/1
[問題類型]: 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 謝謝大家指導 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.71.94.20 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1518085696.A.B42.html

02/08 22:22, 7年前 , 1F
它的概念簡單來說就是對每個變數一一加入雜訊
02/08 22:22, 1F

02/08 22:24, 7年前 , 2F
如果某變數很重要,那加入雜訊後的錯誤率就會大幅 UP
02/08 22:24, 2F

02/08 22:27, 7年前 , 3F
第三步:將OOB樣本中的第 i 個變數加入雜訊以取得
02/08 22:27, 3F

02/08 22:28, 7年前 , 4F
該變數雜訊化後的預測結果去計算OOB error rate i
02/08 22:28, 4F

02/08 22:30, 7年前 , 5F
常見的方式有將該變數 bootstrap, sample 或遞移
02/08 22:30, 5F

02/09 00:02, 7年前 , 6F
不懂加入雜訊是什麼意思
02/09 00:02, 6F

02/09 00:02, 7年前 , 7F
我的感覺是不看i變數接著計算正確率下降多少
02/09 00:02, 7F

02/09 00:02, 7年前 , 8F
然後每個被sample到的變數都不看一次
02/09 00:02, 8F

02/09 00:02, 7年前 , 9F
就可以得到該棵樹所有的decreasing accuracy
02/09 00:02, 9F

02/09 00:16, 7年前 , 10F
說成不看也可以,但在預測時你總是要給這個"不看"
02/09 00:16, 10F

02/09 00:17, 7年前 , 11F
的變數一個值,通常就是透過上述方法把它變成一個沒
02/09 00:17, 11F

02/09 00:18, 7年前 , 12F
有價值的變數,也就是 noise variable
02/09 00:18, 12F

02/09 00:21, 7年前 , 13F
而 MDI 只是將每個變數在所有樹中有使用到它的節點
02/09 00:21, 13F

02/09 00:24, 7年前 , 14F
造成的 gini 值下降量加起來,再以所有樹的數目平均
02/09 00:24, 14F

02/20 12:34, 7年前 , 15F
在不同tree套件中,相同指標的算法也不一定一樣
02/20 12:34, 15F

02/20 12:35, 7年前 , 16F
,可能會對於可能發生的結點,或現在模行發生的
02/20 12:35, 16F

02/20 12:35, 7年前 , 17F
結點,產生不一樣的加權。
02/20 12:35, 17F

02/20 12:35, 7年前 , 18F
印象中他的算法是,對單一顆樹,在拿掉一個變數
02/20 12:35, 18F

02/20 12:35, 7年前 , 19F
之後,模型的評估值(這裡是gini)效果是否下降
02/20 12:35, 19F

02/20 12:35, 7年前 , 20F
(decrease),下降越多,表示該變數是雜訊變數的
02/20 12:35, 20F

02/20 12:36, 7年前 , 21F
可能性越高,重要性越低,而如果一變數在加入之
02/20 12:36, 21F

02/20 12:36, 7年前 , 22F
後,模型的正確率反而出現混淆、干擾,評估值會趨近0
02/20 12:36, 22F

02/20 12:36, 7年前 , 23F
然後Mean就是把所有樹的平均,所以是Mean
02/20 12:36, 23F

02/20 12:36, 7年前 , 24F
decrease gini,如果是MDA(accuracy),數值也
02/20 12:36, 24F

02/20 12:37, 7年前 , 25F
可能小於0。
02/20 12:37, 25F

02/20 12:46, 7年前 , 26F
希望以上回答有協助到您,對回答有疑義可以來信給我。
02/20 12:46, 26F

02/21 23:33, 7年前 , 27F
樓上你講的permutation-based的算法只適用於 MDA 吧?
02/21 23:33, 27F

02/21 23:38, 7年前 , 28F
你講 gini 的概念是對的但不能那樣算 MDgini
02/21 23:38, 28F

02/21 23:45, 7年前 , 29F
如果覺得我有理解錯誤的地方麻煩指正一下
02/21 23:45, 29F
文章代碼(AID): #1QV2P0j2 (R_Language)
文章代碼(AID): #1QV2P0j2 (R_Language)