Я использую классификатор, который возвращает вероятности. Для расчета AUC я использую pROC R-пакет. Вероятности выхода из классификатора:
probs=c(0.9865780,
0.9996340,
0.9516880,
0.9337157,
0.9778576,
0.8140116,
0.8971550,
0.8967585,
0.6322902,
0.7497237)
probs
показывает вероятность быть в классе «1». Как показано, классификатор классифицировал все образцы в классе «1».
Истинный вектор метки:
truel=c(1, 1, 1, 1, 1, 0, 0, 0, 0, 0)
Как показано, классификатор ошибочно классифицировал 5 выборок. Но АУК это:
pROC::auc(truel, probs)
Area under the curve: 1
Не могли бы вы объяснить мне, почему это происходит?
machine-learning
auc
user4704857
источник
источник
Ответы:
AUC - это мера способности ранжировать примеры в соответствии с вероятностью членства в классе. Таким образом, если все вероятности выше 0,5, у вас все еще может быть AUC, равный единице, если все положительные закономерности имеют более высокие вероятности, чем все отрицательные. В этом случае будет порог принятия решения, который выше, чем 0,5, что даст нулевую частоту ошибок. Обратите внимание, что, поскольку AUC измеряет только ранжирование вероятностей, он не сообщает, хорошо ли откалиброваны вероятности (например, нет систематического смещения), если калибровка вероятностей важна, посмотрите на метрику кросс-энтропии.
источник
Другие ответы объясняют, что происходит, но я подумал, что картина может быть хорошей.
Вы можете видеть, что классы идеально разделены, поэтому AUC равен 1, но пороговое значение в 1/2 приведет к ошибочной классификации 50%.
источник
Образцы не были "неправильно классифицированы" вообще. Эти
0
примеры ранжируются строго ниже1
примеров. AUROC делает именно то, для чего он определен, то есть измеряет вероятность того, что случайно выбранный1
рейтинг выше, чем случайно выбранный0
. В этом примере это всегда так, поэтому это событие с вероятностью 1.У Тома Фосетта есть отличная пояснительная статья о кривых ROC. Я бы предложил начать там.
Том Фосетт «Введение в анализ РПЦ». Письма Распознавания Образца. 2005.
источник