Я никогда не заходил так далеко, чтобы получить оценки ROC-AUC. Я просто использую это как должное. Но недавно я взялся за пересмотр метрик и нашел, что эта метрика сбивает с толку.
Предполагая случай бинарной классификации и цитируя документацию:
y_score : подобная массиву форма (n_samples) или (n_samples, n_classes)
Целевые баллы. В бинарном и мультиметочном случаях это может быть либо оценки вероятности или непороговые значения решения (как возвращаются по
decision_function
на некоторых классификаторах).
Я обнаружил, что у этой метрики может быть два «определения»… Здесь фиктивный пример говорит, что наш положительный класс равен 1, отрицательный — 0.
y_true
: Наземные метки правды 6 входов.
y_preds
: Вероятность предсказания (сигмоид/softmax) входных данных положительна (класс 1).
y_preds_labels
: Предполагая, что порог $T=0,5$, мы можем применить прогнозы np.argmax
сигмоид/softmax в y_preds
, чтобы получить его.
Я был потрясен, обнаружив, что roc_1
дает 0,3888888888888889, а roc_2
дает 0,5. Можно было бы подумать, что 0,5 — это правильный ответ, не так ли, поскольку модель имеет максимальное количество истинных срабатываний и ложных срабатываний... Теперь, какой из них мне следует использовать...?
y_true = [0,0,1,1,0,1]
y_preds = [0.3, 0.3, 0.1, 0.3, 0.1, 0.2]
y_pred_labels = [0,0,0,0,0,0]
roc_1 = roc_auc_score(y_true, y_preds)
roc_2 = roc_auc_score(y_true, y_pred_labels)
Обновлено: с объяснением я понимаю, что roc_2
неверно. Однако, когда я попробовал следующее, оценка дает другое значение, хотя технически «прогнозы» одинаковы. Итак, теперь я понимаю, что ROC — это показатель ранжирования, но я понял, что в Интернете мало производных/симуляций для этого (большинство статей объясняют идею точности/отзыва/чувствительности и связывают ее с TPR, FPR. Я хотел бы иметь более подробное объяснение того, почему y_preds_3
дает мне совершенно другую оценку ROC-AUC, чем y_preds
.
y_true = [0,0,1,1,0,1]
y_preds_3 = [0.3,0.4,0.2,0.4,0.1,0.3]
roc_3 = roc_auc_score(y_true, y_preds_3)
Этот пост здесь дает мне некоторую интуицию, но я надеюсь, что кто-то может связать/объяснить мне более детальный пример.
@MaximeKan Спасибо, с тех пор я отредактировал свой заголовок. Я думаю, что это действительно заблуждение. Я также включил еще одну путаницу после вашего ответа. Дайте мне знать, если вы можете помочь с этим, или направьте меня к отличному источнику, чтобы я мог лучше понять эту метрику. Спасибо
Обратите внимание, что расширение и обновление вопросов после предоставления ответа - это не то, как работает SO; предпочитаю вместо этого открыть новый вопрос (ссылка здесь, если необходимо). Кроме того, это не вопрос программирования, поэтому здесь он, возможно, не по теме — обратите внимание на вступление и ПРИМЕЧАНИЕ в информации тега machine-learning
.
@desertnaut Отмечено, будет ли этот вопрос более подходящим для перекрестной проверки или статистики?
Это тот же SE ;) Официально называется Cross Validated, неофициально (и в URL) называется Stats SE (я вижу, у вас уже есть недавний соответствующий вопрос). ИМХО самое подходящее место.
Я голосую за то, чтобы закрыть этот вопрос, потому что речь идет не о программировании, как это определено в справочном центре , а о теории и/или методологии машинного обучения — см. вступление и ПРИМЕЧАНИЕ в информации тега machine-learning
.
Чтобы рассчитать показатель ROC AUC, вам нужны оценки вероятности (как указано в документации, которую вы цитируете). Вас может смутить термин «непороговые значения решения», но он не описывает прогнозируемые метки (скорее функции принятия решений, подобные тем, которые вы можете найти в классификации опорных векторов (SVC
, где прогнозируемые вероятности недоступны).
Итак, в вашем примере roc_1
правильно, а roc_2
нет.
добавив здесь комментарий относительно вашего редактирования: я считаю, что причина, по которой некоторые пользователи проголосовали за ваш вопрос, заключается в заголовке вашего вопроса и паре предложений в вашем описании. Это довольно сильное заявление, чтобы написать, что вы сделали «шокирующее открытие» о такой признанной библиотеке ML, как scikitlearn. Однако я считаю, что ваш вопрос, лишенный этого «эмоционального» компонента, имеет отношение к пониманию roc auc. Короче говоря, отрицательные голоса, вероятно, касаются стиля вашего вопроса, а не содержания самого поста. Лучший