首页 文章

曲线下的pROC区域是否不正确?

提问于
浏览
1

我当前的问题:我使用 caret 包生成分类预测模型,我的意思是用特定的度量(AUC ROC)验证我的模型 . AUC度量标准可用于训练具有训练集(内部验证)的模型,但不用于预测(外部验证) .

1. Internal validation :

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. External Validation :

为了访问外部验证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. Conclusion :

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

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

1 回答

  • 0

    所以你的结果是可以预期的 . 一般来说,“内部验证的”AUC是通过使用与训练案例分开的测试用例创建的,而在“外部验证”中,您正在使用您训练过的相同案例进行测试(当然是作弊) . 因此,内部验证的AUC预计将小于外部验证的AUC . 我认为下面的图表应该清楚地表明:

    enter image description here

相关问题