曲线下的 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。我认为下图应该清楚:
我当前的问题:我使用 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。我认为下图应该清楚: