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

时间:2016-01-22 10:46:54

标签: r r-caret cross-validation

我当前的问题:我使用 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- /持怀疑态度)。欢迎所有的帮助。

1 个答案:

答案 0 :(得分:0)

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

enter image description here