Как исправить кривую ROC с точками ниже диагонали?

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

Fixing the ROC

Третья точка (0,3, 0,2) идет ниже диагонали. Чтобы вычислить AUC, я хочу исправить такие непокорные моменты.

Стандартный способ сделать это для точки (fp, tp) на кривой - заменить ее точкой (1-fp, 1-tp), что эквивалентно замене предсказаний классификатора. Например, в нашем примере наша неприятная точка A (0,3, 0,2) становится точкой B (0,7, 0,8), которую я указал красным на изображении, связанном с выше.

Это касается моих ссылок. Проблема заключается в том, что если вы добавите новую точку в новый ROC (и удалите плохую точку), вы получите немонотонную кривую ROC, как показано (красный - новая кривая ROC, а синяя линия с пунктиром - старая):

New ROC

И вот я застрял. Как я могу исправить эту кривую ROC?

Нужно ли повторно запускать мой классификатор с данными или классами, каким-то образом преобразованным, чтобы учесть это странное поведение? Я просмотрел соответствующую статью, но если я не ошибаюсь, похоже, это касается немного другой проблемы, чем это.

В терминах некоторых деталей: у меня все еще есть все исходные пороговые значения, значения fp и значения tp (и вывод исходного классификатора для каждой точки данных, выход - это просто скаляр от 0 до 1, который равен оценка вероятности членства класса). Я делаю это в Matlab, начиная с функции perfcurve.


Ответ 1

Примечание, основанная на некоторых очень полезных сообщениях об этом от людей, которые написали статьи, приведенные выше, и обсуждение выше, правильный ответ кажется: не пытайтесь "фиксировать" отдельные точки в кривой ROC, если вы не строите совершенно новый классификатор, а затем обязательно оставите некоторые тестовые данные, чтобы убедиться, что это разумно.

Получение точек под линией идентификации - это то, что просто происходит. Это похоже на получение индивидуального классификатора, который набирает 45%, даже если оптимальный теоретический минимум составляет 50%. Это просто часть изменчивости с реальными наборами данных, и, если она не будет значительно меньше ожидаемой, основанной на случайности, вы не должны слишком беспокоиться. Например, если ваш классификатор получает 20% прав, то ясно, что что-то не так, и вы можете изучить конкретные причины и исправить свой классификатор.

Ответ 2

Да, замена точки для (1-fp, 1-tp) теоретически эффективна, но увеличение размера выборки также является безопасной.

Кажется, что ваша система имеет немонотонную характеристику ответа, поэтому будьте осторожны, чтобы не слишком сильно сгибать правила ROC или повлиять на надежность AUC.

Тем не менее, вы можете попытаться использовать Pareto Frontier Curve (Pareto Front). Если это соответствует требованиям "Восстановление вогнутости", вы в основном сортируете точки, чтобы кривая ROC становилась монотонной.