曲线下的 pROC 面积是否不正确?

Is pROC area under the curve incorrect?

我当前的问题:我使用 caret 包来生成分类预测模型,我打算用特定指标 (AUC ROC) 验证我的模型。 AUC 指标可用于使用训练集(内部验证)训练模型,但不能用于预测(外部验证)。

1.内部验证:

Fit <- train(X, Y$levels, method= "svmRadial", trControl = fitControl, tuneLength = 20, metric = "ROC")

结果:

sigma C ROC Sens Spec ROCSD SensSD SpecSD 0.0068 2.00 0.83 0.82 0.57 0.149 0.166 0.270

2。外部验证:

为了访问外部验证 AUC,我尝试预测我的训练集并使用 pROC 直接计算该指标。

predictions <- as.vector(predict(Fit$finalModel, newdata = X)) data <- data.frame(pred=as.numeric(predictions),obs=as.numeric(Y$levels)) pROC::roc(data$pred, data$obs)

结果: Area under the curve: 0.9057

3。结论:

结果:AUC(internal validation) != AUC(external validation) 而我使用相同的数据(训练集)来检查我的 ROC 外部验证标准。在最好的情况下,我应该能够获得最大值 0.83。但是,AUC(internal validation) < AUC(external validation).

对我来说似乎很奇怪

我不知道解开这个谜(8-/持怀疑态度)。欢迎所有帮助。

所以你的结果是意料之中的。通常,"internally validated" AUC 是通过使用与训练用例分开的测试用例创建的,而在您的 "external validation" 中,您正在使用您训练过的相同用例进行测试(这当然是作弊)。因此,内部验证的 AUC 预计会小于外部验证的 AUC。我认为下图应该清楚: