Я строю кривые рабочей характеристики приемника (ROC) для оценки классификаторов с использованием области под кривой (AUC) (подробнее об этом в конце сообщения). К сожалению, точки на кривой часто идут ниже диагонали. Например, я заканчиваю графами, которые выглядят как здесь (кривая 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, а синяя линия с пунктиром - старая):
И вот я застрял. Как я могу исправить эту кривую ROC?
Нужно ли повторно запускать мой классификатор с данными или классами, каким-то образом преобразованным, чтобы учесть это странное поведение? Я просмотрел соответствующую статью, но если я не ошибаюсь, похоже, это касается немного другой проблемы, чем это.
В терминах некоторых деталей: у меня все еще есть все исходные пороговые значения, значения fp и значения tp (и вывод исходного классификатора для каждой точки данных, выход - это просто скаляр от 0 до 1, который равен оценка вероятности членства класса). Я делаю это в Matlab, начиная с функции perfcurve.