2016-01-22 38 views
1

我現在的問題:我用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 /懷疑)。歡迎所有協助。

+1

我建議建立一些數據表格摘要,獲得一對夫婦的說明你的問題地塊,再不敢在這裏發佈了這個問題,但在堆棧交換稱爲「交叉驗證」。那些人專門研究這類問題。雖然也有很多人在這裏閒逛,但你還沒有給我們太多的東西繼續下去。 –

+1

到底有多不同?由於訓練集中的AUC將比「高概率」測試集高,但這並不意味着它不會發生。現在,如果它的實際情況不同,那麼可能會出現一些時髦的事情。 – mbiron

+0

差值= 0.08(〜10%)。我試過'pROC','ROCR'和'puSummary'(這裏介紹的功能(https://github.com/benmack/oneClass/blob/master/R/puSummary.R))。所有給我相同的結果(AUC = 0.9057) –

回答

0

所以你的結果是可以預料的。在一般的「內部驗證」的AUC是通過使用來自訓練的情況下分開,而在你的「外部驗證」你與你的訓練相同的情況下(這是一種欺騙行爲,當然)測試的測試用例生成。因此,內部驗證的AUC預計將小於外部驗證的AUC。我想下面的圖應該予以澄清:

enter image description here

+0

是的,我明白了。很明顯,非常感謝Mike。 –