我想就变量的重要性比较模型(多元回归,LASSO,Ridge,GBM)。但是我不确定过程是否正确,因为获得的值不在同一范围内。
使用插入符号包中的varImp在多重回归中,GBM值的范围为0-100。在每种方法中,此统计信息的计算方式都是不同的。
线性模型:使用每个模型参数的t统计量的绝对值。
Boosted Trees:此方法使用与单棵树相同的方法,但将每次增强迭代的重要性相加。
同时使用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完全相同。但是为了进行相对比较,任何规模都可以。
这将使您对自己模型中每个变量的重要性之间的分离有一个标准化的认识,并且您可以根据已缩放重要性的相关性更轻松地并行评估它们。