Интерпретация значений AUC NaN в сводке прогнозов перекрестной проверки воды - PullRequest
0 голосов
/ 15 февраля 2019

Я заметил, что для некоторых прогонов:

train=as.h2o(u)
mod = h2o.glm(family= "binomial", x= c(1:15), y="dc",  
       training_frame=train, missing_values_handling = "Skip",
       lambda = 0, compute_p_values = TRUE, nfolds = 10,
       keep_cross_validation_predictions= TRUE)

в сводке метрик перекрестной проверки AUC есть NaN для некоторых cv итераций модели.

Например:

print(mod@model$cross_validation_metrics_summary["auc",])

Сводка метрик перекрестной проверки:

          mean         sd cv_1_valid cv_2_valid cv_3_valid cv_4_valid cv_5_valid cv_6_valid cv_7_valid cv_8_valid cv_9_valid cv_10_valid

auc 0.63244045 0.24962118       0.25  0.6666667  0.8095238        1.0  0.6666667 0.46666667        NaN        NaN        1.0         0.2

Кажется, что NaN в резюме появляется реже, когда я устанавливаю меньшие nfolds = 7.

Как эти значения NaN должныбыть интерпретированным, и когда кросс-проверка h2o выводит их?

Я полагаю, это происходит, когда AUC не может быть правильно оценен в итерации.В моем тренировочном наборе 70 полных строк.

Можно ли считать такие результаты перекрестной проверки AUC (содержащие NaN) достоверными?

1 Ответ

0 голосов
/ 20 февраля 2019

Существуют конкретные случаи, которые могут привести к делению на ноль при расчете кривой ROC, что может привести к тому, что AUC будет NaN.Вероятно, из-за небольших данных у вас есть некоторые сгибы, которые не имеют истинных положительных результатов и вызывают эту проблему.

Мы можем проверить это, сохранив столбец сгиба и затем посчитав значения dc в каждом сгибе:

...

train <- as.h2o(u)
mod <- h2o.glm(family = "binomial"
              , x = c(1:15)
              , y = "dc"
              , training_frame = train
              , missing_values_handling = "Skip"
              , lambda = 0
              , compute_p_values = TRUE
              , nfolds = 10
              , keep_cross_validation_fold_assignment = TRUE
              , seed = 1234)

fold <- as.data.frame(h2o.cross_validation_fold_assignment(mod))
df <- cbind(u,fold)

table(df[c("dc","fold_assignment")])

   fold_assignment
dc  0 1 2 3 4 5 6 7 8 9
  0 4 6 6 2 9 6 6 4 4 6
  1 2 2 3 4 0 2 0 0 1 2

mod@model$cross_validation_metrics_summary["auc",]

Cross-Validation Metrics Summary: 
          mean         sd cv_1_valid cv_2_valid cv_3_valid cv_4_valid cv_5_valid cv_6_valid cv_7_valid
auc 0.70238096 0.19357596      0.875  0.6666667        0.5      0.375        NaN  0.5833333        NaN
    cv_8_valid cv_9_valid cv_10_valid
auc        NaN        1.0   0.9166667

Мы видим, что сгибы с NaN - это те же сгибы, которые имеют только dc= 0.

Не считая NaN, большое разнообразие AUC для ваших складок (от 0,2 до 1) говорит нам о том, что это не надежная модель, и она, вероятно, переоснащена.Можете ли вы добавить больше данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...