看板 R_Language 關於我們 聯絡資訊
[問題類型]: 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
x88776544pc: 它的概念簡單來說就是對每個變數一一加入雜訊 02/08 22:22
x88776544pc: 如果某變數很重要,那加入雜訊後的錯誤率就會大幅 UP 02/08 22:24
x88776544pc: 第三步:將OOB樣本中的第 i 個變數加入雜訊以取得 02/08 22:27
x88776544pc: 該變數雜訊化後的預測結果去計算OOB error rate i 02/08 22:28
x88776544pc: 常見的方式有將該變數 bootstrap, sample 或遞移 02/08 22:30
wheado: 不懂加入雜訊是什麼意思 02/09 00:02
wheado: 我的感覺是不看i變數接著計算正確率下降多少 02/09 00:02
wheado: 然後每個被sample到的變數都不看一次 02/09 00:02
wheado: 就可以得到該棵樹所有的decreasing accuracy 02/09 00:02
x88776544pc: 說成不看也可以,但在預測時你總是要給這個"不看" 02/09 00:16
x88776544pc: 的變數一個值,通常就是透過上述方法把它變成一個沒 02/09 00:17
x88776544pc: 有價值的變數,也就是 noise variable 02/09 00:18
x88776544pc: 而 MDI 只是將每個變數在所有樹中有使用到它的節點 02/09 00:21
x88776544pc: 造成的 gini 值下降量加起來,再以所有樹的數目平均 02/09 00:24
a78998042a: 在不同tree套件中,相同指標的算法也不一定一樣 02/20 12:34
a78998042a: ,可能會對於可能發生的結點,或現在模行發生的 02/20 12:35
a78998042a: 結點,產生不一樣的加權。 02/20 12:35
a78998042a: 印象中他的算法是,對單一顆樹,在拿掉一個變數 02/20 12:35
a78998042a: 之後,模型的評估值(這裡是gini)效果是否下降 02/20 12:35
a78998042a: (decrease),下降越多,表示該變數是雜訊變數的 02/20 12:35
a78998042a: 可能性越高,重要性越低,而如果一變數在加入之 02/20 12:36
a78998042a: 後,模型的正確率反而出現混淆、干擾,評估值會趨近0 02/20 12:36
a78998042a: 然後Mean就是把所有樹的平均,所以是Mean 02/20 12:36
a78998042a: decrease gini,如果是MDA(accuracy),數值也 02/20 12:36
a78998042a: 可能小於0。 02/20 12:37
a78998042a: 希望以上回答有協助到您,對回答有疑義可以來信給我。 02/20 12:46
x88776544pc: 樓上你講的permutation-based的算法只適用於 MDA 吧? 02/21 23:33
x88776544pc: 你講 gini 的概念是對的但不能那樣算 MDgini 02/21 23:38
x88776544pc: 如果覺得我有理解錯誤的地方麻煩指正一下 02/21 23:45