验证 R 的 GLMNET 包中的 AUC 值

Validating AUC values in R's GLMNET package

我正在使用 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。

我理解交叉验证的随机性 - 但直觉上我希望得到交叉验证建议的范围内的结果。

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

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

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

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