通过tidymodel和R中的vip包,我计算了变量的重要性。代码方面,它看起来像这样:
rf_vi_fit %>%
pull_workflow_fit() %>%
vip(geom = "point") +
labs(title = "Random forest variable importance")
从视觉上看,它看起来像这样:
然而,变量即兴实际上包含了什么?变量重要性可以基于多个指标,例如R平方的增益或基尼损失,但我不确定vip中的变量重要性是基于哪里的。我的其他预测的变量重要性值在3到4之间,而不是这个模型中的0.005。
我在vip()文档中也找不到变量重要性是基于什么的。
发布于 2021-06-05 14:35:10
您的问题的答案在vip文档https://cran.r-project.org/web/packages/vip/vip.pdf中的各个部分。
vip()
函数是vi()
的包装器,用于绘制变量重要性得分。在vip()
文档中,...
参数是“要传递给vi()
的其他可选参数”。
在vi()
函数中,有一个名为method
的参数。
方法=c(“模型”,“固定”,“置换”,“形状”)
指定要计算的变量重要性(VI)类型的字符串。当前选项包括:
"model“(默认值),用于特定型号的VI分数(有关详细信息,请参阅vi_model()
)。
"firm",表示基于方差的VI分数(详情请参见vi_firm()
)。
"permute",用于基于排列的VI分数(详情请参见vi_permute
)。
"shap",表示基于Shapley的VI分数。
有关基于方差的方法的更多详细信息,请参阅Greenwell等人。(2018)和肖尔贝克等人。(2019)。
然后,如果您查看vi_models()
的文档,它会详细描述每种型号特定于型号的VI分数。下面是描述RandomForest模型特定重要性的摘录。
随机森林通常提供两种不同重要性的度量。
第一个度量是根据排列的OOB (OOB)数据计算的:对于每个树,记录数据的OOB部分的预测误差(分类的错误率和回归的MSE )。然后,在排列每个预测变量之后执行相同的操作。然后,在森林中的所有树上对两者之间的差异进行平均,并通过差异的标准差进行归一化。如果变量的标准差等于0,则不进行除法(但在这种情况下,平均值几乎总是等于0)。有关详细信息,请参阅重要性,包括可以通过...论点。
第二个度量是通过对变量进行拆分而导致的节点杂质的总减少,在所有树上取平均值。对于分类,节点杂质通过基尼指数来衡量。对于回归,它是通过残差平方和来衡量的。有关详细信息,请参阅重要性。
https://stackoverflow.com/questions/67833723
复制相似问题