Площадь pROC под кривой неверна?

Моя текущая проблема: я использовал пакет caret для создания моделей прогнозирования классификации и хотел проверить свои модели с помощью определенной метрики (AUC ROC). Метрика AUC доступна для обучения модели с обучающим набором (внутренняя проверка), но НЕ для прогнозирования (внешняя проверка).

<сильный>1. Внутренняя проверка:

Fit <- train(X, Y$levels, method= "svmRadial", trControl = fitControl, tuneLength = 20, metric = "ROC")

Полученные результаты :

sigma C ROC Sens Spec ROCSD SensSD SpecSD 0.0068 2.00 0.83 0.82 0.57 0.149 0.166 0.270

<сильный>2. Внешняя проверка:

Чтобы получить доступ к AUC внешней проверки, я попытался предсказать свой тренировочный набор и рассчитать эту метрику напрямую с помощью pROC.

predictions <- as.vector(predict(Fit$finalModel, newdata = X)) data <- data.frame(pred=as.numeric(predictions),obs=as.numeric(Y$levels)) pROC::roc(data$pred, data$obs)

Результаты: Area under the curve: 0.9057

<сильный>3. Вывод:

Результаты: AUC(internal validation) != AUC(external validation) тогда как я использовал те же данные (обучающий набор), чтобы проверить мой критерий внешней проверки ROC. В лучшем случае я смогу получить максимальное значение 0,83. Однако мне показалось бы очень странным, что AUC(internal validation) < AUC(external validation).

Я понятия не имею, как решить эту загадку (8-/ скептически). Любая помощь приветствуется.


person B.Gees    schedule 22.01.2016    source источник
comment
Я бы предложил создать несколько сводных таблиц данных, получить пару графиков, иллюстрирующих вашу проблему, а затем опубликовать этот вопрос не здесь, а на Stack Exchange под названием Cross Validated. Эти люди специализируются на подобных проблемах. Хотя многие из этих людей тоже тусуются здесь, вы не дали нам многого для продолжения.   -  person Mike Wise    schedule 22.01.2016
comment
Насколько точно отличается? Потому что AUC на обучающей выборке с большой вероятностью будет выше, чем на тестовой, но это не значит, что этого не может быть. Теперь, если это действительно отличается, то может происходить что-то странное.   -  person mbiron    schedule 22.01.2016
comment
Разница = 0,08 (~ 10%). Я пробовал pROC, ROCR и puSummary (функция представлена ​​здесь (github.com/ benmack/oneClass/blob/master/R/puSummary.R)). Все дают одинаковые результаты (AUC = 0,9057).   -  person B.Gees    schedule 22.01.2016
comment
Если вы попытались предсказать свой тренировочный набор, вам следует ожидать нереально высоких значений AUC. Внутренняя проверка, вероятно, представляет собой среднее значение нескольких n-кратных итераций обучения/тестирования перекрестной проверки, при этом AUC всегда выполняется для частей данных, на которых этот шаг не обучался, т. е. тестового подмножества для шаг.   -  person Mike Wise    schedule 22.01.2016
comment
Да, мне кажется, вы получаете ожидаемые результаты. Попробуйте оставить 10-20 процентов ваших данных вне обучения и спрогнозируйте их. Бьюсь об заклад, вы приблизились к результату внутренней проверки (на самом деле не знакомы с этим термином).   -  person Mike Wise    schedule 22.01.2016
comment
Было бы хорошо включить вашу переменную fitControl и немного ваших данных.   -  person Mike Wise    schedule 22.01.2016
comment
Я думаю, что AUC для LOO также относится к его оценке на тестовом наборе, то есть к данным, на которых он не обучался.   -  person Mike Wise    schedule 22.01.2016
comment
Я не думал о среднем значении n-кратной перекрестной проверки. Но я использовал кросс-валидацию Leave One Out (LOO). Прогнозирование тренировочного набора предназначено только для контроля критерия производительности: снижение FPR, FNR, точности, чувствительности и специфичности, за исключением ROC для внешней проверки на моем тренировочном наборе. Я хотел бы убедиться, что caret AUC сопоставимо с pROC AUC. Боюсь, что ответ на этот вопрос: НЕТ.   -  person B.Gees    schedule 22.01.2016
comment
Я почти уверен, что AUC каретки — это среднее значение различных тренировочных прогонов. У вас не средний. Так что ответ, очевидно, будет НЕТ. И каретка AUC предназначена для модели по сравнению с тестовыми наборами, тогда как ваша — для модели по сравнению с обучающими наборами. Так что у вас будет выше.   -  person Mike Wise    schedule 22.01.2016
comment
ХОРОШО. Я тестирую различные условия с внешним набором. Результаты являются окончательными (тест AUC 0.73 ‹ поезд AUC 0.75). Разница не очень существенна, но правильно ли мы можем сравнивать поезд и тест с этой метрикой?   -  person B.Gees    schedule 22.01.2016
comment
Я представил ответ с диаграммой. Надеюсь, вам понравится :). В целом эти вопросы относятся к Cross Validated, а не сюда.   -  person Mike Wise    schedule 22.01.2016


Ответы (1)


Так что ваши результаты ожидаемы. Как правило, «внутренне проверенные» AUC создаются с использованием тестовых случаев, которые были отделены от учебных случаев, тогда как при «внешней проверке» вы тестируете те же случаи, на которых вы обучались (что, конечно, является мошенничеством). Таким образом, ожидается, что внутренне подтвержденный AUC будет меньше, чем внешне подтвержденный AUC. Я думаю, что следующая диаграмма должна прояснить это:

введите здесь описание изображения

person Mike Wise    schedule 22.01.2016