回归模型在变量重要性方面的比较

Posted

技术标签:

【中文标题】回归模型在变量重要性方面的比较【英文标题】:Comparison of regression models in terms of the importance of variables 【发布时间】:2020-04-25 10:14:41 【问题描述】:

我想根据变量的重要性来比较模型(多元回归、LASSO、Ridge、GBM)。但是我不确定程序是否正确,因为得到的值不在同一个尺度上。

使用 caret 包中的 varImp 在多元回归和 GBM 值范围为 0 - 100。该统计量的计算在每种方法中都是不同的。

线性模型:使用每个模型参数的 t 统计量的绝对值。

Boosted Trees:此方法使用与单棵树相同的方法,但将每个 boosting 迭代的重要性相加。

而 LASSO 和 Ridge 的值在 0.00 - 0.99 之间,使用函数计算:

varImp <- function (object, lambda = NULL, ...) 
  beta <- predict (object, s = lambda, type = "coef")
  if (is.list (beta)) 
    out <- do.call ("cbind", lapply (beta, function (x)
      x [, 1])))
    out <- as.data.frame (out)
   else
    out <- data.frame (Overall = beta [, 1])
  out <- abs (out [rownames (out)! = "(Intercept)",, drop = FALSE])
  out

从这里获得:Caret package - glmnet variable importance

我被论坛上的其他问题引导,但不明白为什么会有比例之间的差异。如何使这些测量值具有可比性?

【问题讨论】:

这可能是一个关于比较统计模型的更一般的问题,最好在Cross Validated 提出。否则,至少包括一个最小的reproducible example,带有样本输入和您的特定建模功能,以便可以测试和验证可能的解决方案。但一般来说,直接比较完全不同的模型类型的结果通常是不可取的。 谢谢 MrFlick,我会改问题的! 【参考方案1】:

如果目标只是将它们并排比较,那么重要的是创建一个它们可以共同居住的尺度,并对它们进行分类。

您可以通过创建一个标准化的尺度来实现这一点,并将所有 VarImp 强制为新的一致尺度,在本例中为 0 到 100。


importance_data <- c(-23,12, 32, 18, 45, 1, 77, 18, 22)

new_scale <- function(x)
    y =((100-0)/(max(x) -min(x))*(x-max(x))+100)
    sort(y)
    

new_scale(importance_data)


#results
[1]   0  24  35  41  41  45  55  68 100

这会给你一个统一的比例。这并不意味着一个尺度中的 22 与另一个尺度中的 22 完全相同。但为了相对比较,任何规模都可以。

这将使您对每个变量在其自己的模型中的重要性之间的分离有一个标准化的感觉,并且您可以根据缩放重要性的相关性更轻松地并排评估它们。

【讨论】:

知道了,谢谢您的回复。我认为这是进行可能比较的唯一方法。谢谢 他们的模型类型不同,我认为你是对的。请注意使用绝对数字对它们进行“评分”。

以上是关于回归模型在变量重要性方面的比较的主要内容,如果未能解决你的问题,请参考以下文章

R语言评估回归模型预测因素(变量特征)的相对重要性(Relative importance)将回归模型的预测变量标准化(scale)之后构建模型获得标准化回归系数来评估预测变量的相对重要性

R语言 | randomForest包的随机森林回归模型以及对重要变量的选择

回归模型比较

回归模型几个度量参数概念比较

R语言构建多元线性回归模型

R语言编写自定义函数评估回归模型预测变量的相对重要性(Relative importance)通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加评估预测变量的重要度并通过点图可视化