验证 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 的概率。
我正在使用 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 的概率。