2015-07-28 3 views
0

Я новичок в R, и я стараюсь сделать все возможное, чтобы создать свою первую модель. Я работаю в случайном лесном проекте 2- классов и до сих пор я запрограммировал модель следующим образом:Случайная оценка леса в R

library(randomForest) 

set.seed(2015) 

randomforest <- randomForest(as.factor(goodkit) ~ ., data=training1, importance=TRUE,ntree=2000) 

varImpPlot(randomforest) 

prediction <- predict(randomforest, test,type='prob') 

print(prediction) 

Я не знаю, почему я не получаю общий прогноз на мой model.I должны отсутствовать что-то в моем коде. Я получаю OOB и предсказание в каждом случае в тестовом наборе, но не в общем предсказании модели.

library(pROC) 

auc <-roc(test$goodkit,prediction) 

print(auc) 

Это не работает вообще.

Я прошел через руководство pROC, но я не могу понять все. Было бы очень полезно, если бы кто-нибудь мог помочь с кодом или опубликовать ссылку на хороший практический образец.

+2

Что такое «общее предсказание» для модели? Запросы на ссылки на учебные материалы считаются вне темы для этого сайта. Лучше спросить ясный вопрос программирования. – MrFlick

+0

В общем прогнозе я имею в виду оценку предсказания для моей модели. Любая помощь/подсказка с кодом для AUC? – WillieM

ответ

0

Ваша проблема заключается в том, что predict на randomForest объекта с type='prob' возвращает два предсказания: каждый столбец содержит вероятность принадлежать каждому class (для двоичного предсказания).

Вы должны решить, какое из этих прогнозов использовать для построения кривой ROC. К счастью для двоичной классификации они идентичны (только наоборот):

auc1 <-roc(test$goodkit, prediction[,1]) 
print(auc1) 
auc2 <-roc(test$goodkit, prediction[,2]) 
print(auc2) 
+0

Большое спасибо за сообщение. то, что имеет смысл в случае mmy, использует auc2, как было предложено Моррисом. – WillieM

+0

@WillieM, пожалуйста, не забывайте принимать ответ, если он отвечает на ваш вопрос, и ответы, которые вы нашли полезными. – Calimo

1

Используя ROCR пакет, следующий код должен работать для вычисления ППК:

library(ROCR) 
predictedROC <- prediction(prediction[,2], as.factor(test$goodkit)) 
as.numeric(performance(predictedROC, "auc")@y.values)) 
+0

Я пробовал свой код, и я получаю несколько ошибок. Кроме того, я этого не понимаю. Я думаю, что все нормально, пока не предсказаноROC <- прогнозирование (прогнозирование, as.factor (test $ goodkit)) – WillieM

+0

Я думаю, нам не нужно было указывать «as.numeric», потому что я использовал type = «prob» для предсказания. Кроме того, я не понимаю «производительность (предсказанный ORC,« auc »)», почему вы включили предсказанный ORC в оператор, когда вы пытаетесь его вычислить. Последняя часть кода «@ y.values» кажется для использования для того же типа cv ?? В определении «y.values» указано: список, в котором каждая запись содержит значения y кривой этого конкретного кросс-теста . – WillieM

+0

Извините, я забыл небольшую, но важную часть этого кода! Однако вам показалось, что вы смутили это. Ключевой продвинутой частью R является возможность создавать собственные специальные структуры данных для конкретных проблем. Многие пакеты, включая ROCR, используют это. Объектами S4 являются эти специальные типы объектов. Итак, мы сначала создаем объект прогнозирования с использованием функции прогнозирования ROCR, а затем используем этот объект прогнозирования при создании объекта производительности. Вот почему я использовал as.numeric() в коде. –

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