這裏有一些令人困惑的事情。我認爲你所描述的更多的是標準的訓練/測試分割,交叉驗證通常用於不同的方面。所以你已經拿出了30%的數據進行測試,這是很好的,你可以用它來找出你的訓練集估計的AUC是多麼樂觀。但是,當然,估算取決於你如何進行火車/測試分割,並且知道這個測試性能有多大變化是一件好事。您可以使用多次交叉驗證來實現此目的。
交叉驗證從只使用一個不滲透性組稍微 - 5次交叉驗證,例如,包括以下步驟操作:
隨機
- 分裂完整數據集分爲五個相等大小的部分。
- 對於i = 1到5,將模型擬合到除第i部分之外的所有數據。
- 從適合度評估AUC。
- 平均五個AUC結果。
該過程可以重複多次以估計超出樣本估計的均值和方差。
R軟件包cvTools允許您執行此操作。例如,
library(ROCR)
library(cvTools)
calc_AUC <- function(pred, act) {
u<-prediction(pred, act)
return(performance(u, "auc")@y.values[[1]])
}
cvFit(m, data = train, y = train$response,
cost = calc_AUC, predictArgs = "response")
將使用AUC作爲性能指標執行模型m的5倍交叉驗證。 cvFit
也需要參數K
(交叉驗證摺疊的次數)和R
(用不同隨機分割執行交叉驗證的次數)。
有關交叉驗證的更多信息,請參閱http://en.wikipedia.org/wiki/Cross-validation_(statistics)。
對於我自己,我問這個問題和你一樣多,但難道你不能只是平均AUCs? (作爲一個問題而不僅僅是一個答案) – Vincent
所以你會隨機分裂你的數據兩次,並想知道爲什麼你會得到不同的結果? – rawr