我现在的问题:我用caret
包生成分类预测模型和我的意思来验证我的模型与具体的指标(AUC ROC)。 AUC度量可用于训练集(内部验证)训练模型,但不能预测(外部验证)。曲线下面的pROC区域是否不正确?
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
结论:
结果:AUC(internal validation) != AUC(external validation)
而我用相同的数据(训练集)来检查我的依靠外部验证标准。在最好的情况下,我应该能够获得0.83的最大值。然而,这似乎很奇怪,我认为AUC(internal validation) < AUC(external validation).
我也没办法解决这个谜(8 /怀疑)。欢迎所有协助。
我建议建立一些数据表格摘要,获得一对夫妇的说明你的问题地块,再不敢在这里发布了这个问题,但在堆栈交换称为“交叉验证”。那些人专门研究这类问题。虽然也有很多人在这里闲逛,但你还没有给我们太多的东西继续下去。 –
到底有多不同?由于训练集中的AUC将比“高概率”测试集高,但这并不意味着它不会发生。现在,如果它的实际情况不同,那么可能会出现一些时髦的事情。 – mbiron
差值= 0.08(〜10%)。我试过'pROC','ROCR'和'puSummary'(这里介绍的功能(https://github.com/benmack/oneClass/blob/master/R/puSummary.R))。所有给我相同的结果(AUC = 0.9057) –