Caret包 - glmnet变量重要性

时间:2016-05-31 08:40:32

标签: r machine-learning r-caret glmnet

我正在使用glmnet包执行LASSO回归。我现在正在使用插入符号包来处理功能重要性。我不明白的是重要性的价值。谁能开导我?是否有任何公式来计算这些值,或者这是否意味着这些值是基于β值?

ROC curve variable importance
  only 7 most important variables shown (out of 25)
                                            Importance
feature1                             0.8974
feature2                             0.8962
feature3                              0.8957
feature4                              0.8744
feature5                              0.8701
feature6                              0.8658
feature7                             0.8253

1 个答案:

答案 0 :(得分:1)

caret实际上查看拟合的最终系数,然后取绝对值来对系数进行排名。然后将排序的系数存储为变量重要性。

要查看源代码,您可以输入

getModelInfo("glmnet")$glmnet$varImp

总结一下,这些是计算它的线:

function(object, lambda = NULL, ...) {

  ## skipping a few lines

  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
}