2013-12-03 3 views
1

Я застрял в следующей проблеме. Я делю свои данные в 10 раз. Каждый раз я использую 1 раз в качестве тестового набора, а другой 9 как набор тренировок (я делаю это десять раз). На каждом тренировочном наборе у меня есть выбор функции (filter method with chi.squared), а затем я создаю SVMмодель с моим набором тренировок и выбранными функциями.
Итак, в конце я стал 10 различными моделями (из-за выбора функции). Но теперь я хочу сделать ROC-кривую в R из этого фильтра-метода в целом. Как я могу это сделать?Выбор функции + перекрестная проверка, но как сделать ROC-кривые в R

Silke

+0

есть серверные учебники: http://rocr.bioinf.mpi-sb.mpg.de/ http://www.r-bloggers.com/roc-curves-and-classification/ –

+0

Или у вас есть общая проблема с кривыми ROC? –

+0

Нет, но я хочу сделать из этого 10 разных моделей только 1 ROC-кривую, которая представляет производительность по этому методу выбора объектов – Silke

ответ

2

Вы действительно можете хранить предсказания , если они все в том же масштабе (особенно тщательно об этом, как вы выполнять выбор функции ... некоторые методы могут производить оценки, которые зависят от количества функций) и использовать их для построения кривой 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, при этом все данные будут более плавными и менее заниженными трапециевидным правилом.

+0

, является ли этот код действительным для 10 перекрестной проверки? – user2380782

Смежные вопросы