【问题标题】:Validating AUC values in R's GLMNET package验证 R 的 GLMNET 包中的 AUC 值
【发布时间】:2026-01-26 17:55:01
【问题描述】:

我正在使用 R 中 glmnet 库中的 cv.glmnet 函数。我运行以下函数:

model = cv.glmnet(x = data, y = label, family = 'binomial', alpha = 0.1,type.measure = "auc")

从以下plot 我希望获得介于 0.62 和 0.64 之间的 AUC

但是,当我将相同的数据(即训练数据)传递给预测函数时,即

pred = predict(fit, newx = data, type = 'class',s ="lambda.min")
auc(label,pred)

我只得到 0.56 的 AUC。

我了解交叉验证的随机性 - 但直观地说,我希望得到交叉验证建议的范围内的东西。

我在这里错过了什么?提前致谢

【问题讨论】:

  • 测试用例样本量是多少?
  • 样本大小为10565

标签: r glmnet auc


【解决方案1】:

我不确定 auc() 是如何工作的(它似乎是 glmnet 的内部函数),但您应该尝试将预测作为链接或响应而不是类传递:

pred = predict(fit, newx = data, type = 'response',s ="lambda.min") auc(label,pred)

class 为您提供单个响应阈值(例如 0.5)的预测类别,而 response 为您提供可用于计算整个响应函数的 auc 的概率。

【讨论】: