You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求:在tidymodels Workflow中获取类%IncMSE的变量重要性结构化数据

获取tidymodels Workflow的变量重要性(类%IncMSE格式)

如果你需要从训练好的tidymodels Workflow中提取结构化的变量重要性结果(类似随机森林中的%IncMSE),而不是仅用VIP包生成可视化图表,可以用下面的函数实现——它基于排列重要性逻辑,返回包含变量名和对应重要性数值的tibble:

函数实现

get_perm_importance <- function(trained_workflow, eval_data, metric = "rmse", permutations = 5) {
  # 从Workflow中提取拟合好的模型
  fitted_model <- extract_fit_parsnip(trained_workflow)
  
  # 自动提取目标变量名
  target_var <- trained_workflow$pre$actions$recipe$var_info %>% 
    dplyr::filter(role == "outcome") %>% 
    dplyr::pull(variable)
  
  # 计算排列重要性
  vi_output <- vip::vi_permute(
    object = fitted_model,
    train = eval_data,
    target = target_var,
    metric = metric,
    nsim = permutations,
    keep = FALSE,
    pred_wrapper = function(model, new_data) {
      predict(model, new_data = new_data)$.pred
    }
  )
  
  # 整理成易读的结构化格式
  vi_output %>%
    dplyr::select(variable = Variable, inc_mse = Importance) %>%
    dplyr::arrange(dplyr::desc(inc_mse))
}

参数说明

  • trained_workflow: 已经完成训练的tidymodels Workflow对象
  • eval_data: 用于计算重要性的数据集(推荐用训练集,避免数据泄露)
  • metric: 模型性能评估指标,回归任务默认rmse,分类任务可改为accuracy/roc_auc等
  • permutations: 每个变量的排列次数,次数越高结果越稳定

使用示例

# 加载依赖包
library(tidymodels)
library(vip)
library(dplyr)

# 用mtcars数据集演示回归任务
data(mtcars)

# 构建并训练Workflow
car_recipe <- recipe(mpg ~ ., data = mtcars) %>% step_normalize(all_predictors())
car_model <- linear_reg() %>% set_engine("lm")
car_workflow <- workflow() %>% add_recipe(car_recipe) %>% add_model(car_model)
trained_wf <- fit(car_workflow, data = mtcars)

# 获取变量重要性
var_importance_df <- get_perm_importance(trained_wf, eval_data = mtcars)
print(var_importance_df)

输出示例

# A tibble: 10 × 2
   variable inc_mse
   <chr>      <dbl>
 1 wt         12.4 
 2 cyl         7.91
 3 hp          5.32
 4 disp        4.60
 5 drat        1.23
 6 qsec        0.93
 7 vs          0.79
 8 am          0.52
 9 gear        0.36
10 carb        0.23

这里的inc_mse值对应类似%IncMSE的逻辑:数值越大,代表该变量被打乱后模型性能下降越多,即变量对模型的重要性越高。

内容的提问来源于stack exchange,提问作者Igor Coelho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:09:32