【问题标题】:How to compute importance from a LM using Tidymodels in R?如何使用 R 中的 Tidymodels 从 LM 计算重要性?
【发布时间】:2021-03-21 20:48:29
【问题描述】:

我正在尝试使用tidymodels 计算线性模型上的变量重要性。据我所知,vip 包用于提取使用tidymodels 时的重要性。例如,如果我想从随机森林tidymodels 模型中提取重要性,我会执行以下操作:

library(tidymodels)

aq <- na.omit(airquality)

model_rf <-
  rand_forest(
    mode = "regression"
  ) %>%
  set_engine("ranger",
             importance = "permutation"
  ) %>%
  fit(Ozone ~ ., data = aq)

# variable importance
vip:::vi(model_rf)

这将返回重要性。但是,如果我尝试使用线性模型进行类似的操作,则会引发错误。例如:

# create model fit
lm_aq_model <- linear_reg() %>%
  set_engine("lm")

lm_fit <- lm_aq_model %>%
  fit(Ozone ~ ., data = aq)


vip:::vi(lm_aq_model, method = "permute", target = "Ozone",
    metric = "rsquared",  pred_wrapper = predict)
> Error in match.call(f, call = mcall) : invalid 'call' argument

我在这里做错了什么?如果我尝试:

aqLM <- lm(Ozone~., data = aq)
vip::vi(aqLM, method = "permute", target = "Ozone",
    metric = "rsquared",  pred_wrapper = predict)

这行得通...为什么我不能让它与tidymodels一起工作?

另外,这是在使用tidymodels 时实际提取重要性的首选方法吗?是否有一个通用的 tidy 模型函数可以用来代替 vip::vi(model_fit)

谢谢

【问题讨论】:

    标签: r tidymodels


    【解决方案1】:

    看起来你给了它错误的东西,为什么不给它合适的呢?这就是 RF 示例的作用。

    vip:::vi(lm_fit, method = "permute", target = "Ozone",
    metric = "rsquared",  pred_wrapper = predict)
    

    【讨论】:

    • 不知道我是怎么错过的。这解决了问题。谢谢!
    猜你喜欢
    • 2021-03-18
    • 2021-08-22
    • 2015-07-04
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2017-10-25
    • 2021-01-07
    相关资源
    最近更新 更多