#r #plot #roc #auc
Вопрос:
Я строю несколько кривых ROC в R, чтобы сравнить различные модели. В частности, я проверяю ЛАССО, Логистику и Случайные Леса. Однако, в то время как ЛАССО имеет специальную функцию для этого, а именно:
plot(roc.glmnet(lasso.fit_SUM, newx = x.train.loop, newy=y.train.loop)[[10]])
Логистика и РФ не имеют таких функций.
Теперь проблема в том, что я должен представить довольно кривые ROC как кривые ЛАССО. Кривая ROC ЛАССО выглядит следующим образом:
в то время как Случайный лес (и логистика) , как это:
Это кодекс, который я принимаю:
df_train_logit_rf_class=df_train_logit_rf
df_test_rf_class=df_test_rf
df_train_logit_rf_class$export_future=as.factor(df_train_logit_rf_class$export_future)
df_test_rf_class$export_future=as.factor(df_test_rf$export_future)
rf.fit_SUM_classification <- randomForest(formula = export_future ~ ., data = df_train_logit_rf_class, ntree = 500, maxnodes= 100, norm.votes = F)
rf.pred_SUM_db <- as.data.frame(predict(rf.fit_SUM_classification, df_test_rf_class, type = "prob"))
rf.pred_SUM_db$predict <- names(rf.pred_SUM_db)[1:2][apply(rf.pred_SUM_db[,1:2], 1, which.max)]
rf.pred_SUM_db$observed <- df_test_rf_class$export_future
#head(rf.pred_SUM_db)
# 1 ROC curve
roc.curve <- roc(ifelse(rf.pred_SUM_db$observed==1, 1, 0), as.numeric(rf.pred_SUM_db$predict))
plot(roc.curve, col = "gray60")
но в результате получается уродливая кривая ROC, которую я вам показывал раньше.
export_future
является факторной переменной, принимающей либо 0, либо 1. Существует много ковариат (в основном термин взаимодействия, манекены).
Моя цель состоит в том, чтобы построить кривую ROC для случайных лесов (и, возможно, логистики), которая похожа на кривую ЛАССО.
Похоже, что логистика просто принимает значение в качестве порогового значения (-Inf), а затем интерполирует остальную часть кривой, в то время как для этого должно потребоваться больше пороговых значений.
Заранее спасибо,
Federico
Комментарии:
1. Вы вызываете функцию
roc
, которая не из базы R, не изglmnet
и не изrandomForest
. В вашем примере кода отсутствует загрузка некоторых пакетов. В любом случае, вы можете использоватьpROC
пакет для этого (передавая дополнительные аргументы для построения графика). Однако также может быть так, что ваша модель предсказывает только 3 уникальных значения.2. на самом деле,
roc
это команда из pROC: страница 69 из cran.r-project.org/web/packages/pROC/pROC.pdf