【问题标题】:R tidymodels / VIP variable importance determinationR tidymodels / VIP变量重要性确定
【发布时间】:2021-08-22 07:13:15
【问题描述】:

通过 tidymodels 和 R 中的 vip 包,我计算了变量重要性。代码明智的看起来像这样:

rf_vi_fit %>%
pull_workflow_fit() %>%
vip(geom = "point") + 
labs(title = "Random forest variable importance") 

在视觉上它看起来像这样:

但是,变量重要性实际上意味着什么?变量重要性可以基于多个指标,例如 R 平方的增益或基尼损失,但我不确定 vip 的变量重要性基于何处。我的其他预测具有 3 到 4 左右的可变重要性,而不是在这个模型中的 0.005。

我在 vip() 文档中也找不到变量重要性的依据。

【问题讨论】:

  • 当您使用默认设置时,它应该是:“平均减少杂质(或基尼重要性)机制:在每棵树的每次拆分时,拆分标准的改进是归因于分裂变量的重要性度量,并针对每个变量分别在森林中的所有树木上累积。”资料来源:blog.hwr-berlin.de/codeandstats/… 奇怪的是 Tidymodels 没有具体说明。但我认为这是真的。

标签: r random-forest tidymodels vip


【解决方案1】:

vip文档https://cran.r-project.org/web/packages/vip/vip.pdf中的各个部分都为您解答。

vip() 函数是 vi() 的包装器,用于绘制变量重要性分数。在vip() 文档中,... 参数是“要传递给vi() 的其他可选参数”。

vi() 函数中,有一个名为method 的参数。

method = c("model", "firm", "permute", "shap")
字符串,指定要计算的变量重要性 (VI) 的类型。当前选项有:
"model"(默认值),用于特定于模型的 VI 分数(有关详细信息,请参阅vi_model())。
“公司”,用于基于方差的 VI 分数(请参阅vi_firm() 详情)。
“permute”,用于基于排列的 VI 分数(有关详细信息,请参阅 vi_permute)。
“shap”,用于基于 Shapley 的 VI 分数。
有关基于方差的方法的更多详细信息,请参阅 Greenwell 等人。 (2018 年)和 Scholbeck 等人。 (2019 年)。

然后,如果您查看vi_models() 的文档,它会详细描述每种模型的模型特定 VI 分数。以下是描述 RandomForest 模型特定重要性的摘录。

随机森林通常提供两种不同重要性的度量。
第一个度量是根据置换袋外 (OOB) 数据计算得出的:对于每棵树,记录数据的 OOB 部分的预测误差(分类的错误率和回归的 MSE)。然后在排列每个预测变量后进行相同的操作。然后将两者之间的差异对森林中的所有树木进行平均,并通过差异的标准偏差进行归一化。如果变量的差异标准差等于 0,则不进行除法(但在这种情况下,平均值几乎总是等于 0)。有关详细信息,请参阅重要性,包括可以通过 ... 参数传递的其他参数。
第二个衡量标准是在变量上拆分节点杂质的总减少量,对所有树进行平均。对于分类,节点杂质通过基尼指数来衡量。对于回归,它通过残差平方和来衡量。有关详细信息,请参阅重要性。

【讨论】:

    猜你喜欢
    • 2021-01-04
    • 2021-02-14
    • 2021-03-18
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    相关资源
    最近更新 更多