首页 文章

Caret包 - glmnet变量重要性

提问于
浏览
1

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

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 回答

  • 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
    }
    

相关问题