0

通过 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() 文档中也找不到变量重要性的依据。

4

1 回答 1

2

您查询的答案在于 vip 文档https://cran.r-project.org/web/packages/vip/vip.pdf的各个部分。

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

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

method = c("model", "firm", "permute", "shap")
指定要计算的变量重要性 (VI) 类型的字符串。当前选项有:
“模型”(默认),用于特定模型的 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-06-05T06:35:10.007 回答