【发布时间】: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,我会改问题的!
标签: r linear-regression r-caret gbm lasso-regression