R tidy建模框架内可变重要性图的集成

R tidy建模框架内可变重要性图的集成,r,tidymodels,tidyverts,R,Tidymodels,Tidyverts,有人能告诉我如何在tidy建模框架内生成基于置换的变量内插吗?目前,我有: library(tidymodels) # variable importance final_fit_train %>% pull_workflow_fit() %>% vip(geom = "point", aesthetics = list(color = cbPalette[4], fill = cbPalett

有人能告诉我如何在tidy建模框架内生成基于置换的变量内插吗?目前,我有:

library(tidymodels)

# variable importance
final_fit_train %>%
  pull_workflow_fit() %>%
  vip(geom = "point",
      aesthetics = list(color = cbPalette[4],
                        fill = cbPalette[4])) +
  THEME +
  ggtitle("Elastic Net")
这就产生了:

然而,我想要这样的东西

我不清楚新的tidy建模框架如何与当前的VIP包集成。任何能帮忙的人。谢谢


(VIP软件包的API)。

要使用排列计算变量重要性,与使用模型因变量重要性相比,只需要多放几块就可以了

让我们看一个SVM模型的例子,它没有模型因变量重要性得分

库(tidymodels)
#> ── 附加包──────────────────────── tidymodels 0.1.1──
#> ✓ 扫帚0.7.0✓ 配方0.1.13
#> ✓ 刻度盘0.0.8✓ rsample 0.0.7
#> ✓ dplyr 1.0.0✓ tibble3.0.3
#> ✓ GG2.3.2✓ tidyr 1.1.0
#> ✓ 推断0.5.3✓ 调谐0.1.1
#> ✓ modeldata 0.0.2✓ 工作流0.1.2
#> ✓ 欧防风0.1.2✓ 尺度0.0.7
#> ✓ purrr 0.3.4
#> ── 冲突─────────────────────────── tidymodels_冲突()──
#>x purrr::discard()遮罩比例::discard()
#>x dplyr::filter()屏蔽stats::filter()
#>x dplyr::lag()屏蔽stats::lag()
#>x配方::步骤()遮罩统计::步骤()
数据(“hpc_数据”)
svm_规格%
设置引擎(“内核实验室”)%%>%
设置_模式(“回归”)
svm_拟合%
添加_模型(svm_规范)%>%
添加_公式(化合物~.)%%>%
拟合(hpc_数据)
支持向量机拟合
#> ══ 工作流程[培训]════════════════════════════════════════════
#>预处理器:公式
#>模型:svm_poly()
#> 
#> ── 预处理器──────────────────────────────────────────────────
#>化合物~。
#> 
#> ── 模型─────────────────────────────────────────────────────────
#>“ksvm”类的支持向量机对象
#> 
#>SV类型:eps svr(回归)
#>参数:ε=0.1成本C=0.25
#> 
#>多项式核函数。
#>超参数:度=1比例=1偏移=1
#> 
#>支持向量数:2827
#> 
#>目标函数值:-284.7255
#>训练错误:0.835421
我们的模型现在经过了训练,可以计算变量的重要性了。请注意以下几个步骤:

  • 将安装的模型对象从工作流中拉出
  • 您必须指定目标/结果变量,
    components
  • 在这种情况下,我们需要传递原始训练数据(此处使用训练数据,而不是测试数据)和正确的预测底层函数(在某些情况下,这可能很难理解,但对于大多数软件包来说,这只是
    predict()
库(vip)
#> 
#>附上包裹:“vip”
#>以下对象已从“package:utils”屏蔽:
#> 
#>六
svm_拟合%>%
pull_workflow_fit()%>%
vip(method=“permute”,
target=“components”,metric=“rsquared”,
pred_包装器=kernlab::predict,train=hpc_数据)

由(v0.3.0)于2020年7月17日创建


您可以在此处增加
nsim
多次执行此操作。

Hi这可能适用于kernlab(svm),但似乎不适用于glmnet对象。我得到以下错误:predict.glmnet(object,newdata=train_x)中的错误:您需要为glmnet的'newx'@Pieter JanInghelbrecht提供一个值。我建议您使用特定于模型的变量重要性。@JuliaSilge您能给我一个来源,或者请解释“重要性”数字的实际含义吗?这些是每个变量的系数估计值吗?@Shai,这取决于模型的具体情况。查看变量重要性是什么的透视图,以及一些示例