根据变量的重要性比较回归模型

Comparison of regression models in terms of the importance of variables

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

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

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

提升树:此方法使用与单树相同的方法,但对每次提升迭代的重要性求和。

而 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

我在论坛上的其他问题上得到了指导,但无法理解为什么天平之间存在差异。我怎样才能使这些测量具有可比性?

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

您可以通过创建标准化比例并将所有 VarImps 强制为新的一致比例(在本例中为 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 完全相同。但是为了相对比较,任何规模都可以。

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