Вы действительно можете хранить предсказания , если они все в том же масштабе (особенно тщательно об этом, как вы выполнять выбор функции ... некоторые методы могут производить оценки, которые зависят от количества функций) и использовать их для построения кривой ROC. Вот код, который я использовал для a recent paper:
library(pROC)
data(aSAH)
k <- 10
n <- dim(aSAH)[1]
indices <- sample(rep(1:k, ceiling(n/k))[1:n])
all.response <- all.predictor <- aucs <- c()
for (i in 1:k) {
test = aSAH[indices==i,]
learn = aSAH[indices!=i,]
model <- glm(as.numeric(outcome)-1 ~ s100b + ndka + as.numeric(wfns), data = learn, family=binomial(link = "logit"))
model.pred <- predict(model, newdata=test)
aucs <- c(aucs, roc(test$outcome, model.pred)$auc)
all.response <- c(all.response, test$outcome)
all.predictor <- c(all.predictor, model.pred)
}
roc(all.response, all.predictor)
mean(aucs)
Кривая ROC построена из all.response
и all.predictor
, которые обновляются при каждом шаге. Этот код также сохраняет AUC на каждом этапе в auc
для сравнения. Оба результата должны быть очень похожи, когда размер выборки достаточно велик, однако небольшие образцы в рамках перекрестной проверки могут привести к недооценке AUC по кривой ROC, при этом все данные будут более плавными и менее заниженными трапециевидным правилом.
есть серверные учебники: http://rocr.bioinf.mpi-sb.mpg.de/ http://www.r-bloggers.com/roc-curves-and-classification/ –
Или у вас есть общая проблема с кривыми ROC? –
Нет, но я хочу сделать из этого 10 разных моделей только 1 ROC-кривую, которая представляет производительность по этому методу выбора объектов – Silke