Функционалы качества бинарной классификации

Этот пост продолжает серию про функции ошибки и функционалы качества в машинном обучении. Сейчас разберёмся с самой простой подтемой — как измерять качество чёткого ответа в задачах бинарной классификации. Уровень для чтения — начальный;)

а1

Предыдущие посты в блоге на эту тему:

Рассматриваем задачу классификации на два класса (с метками 0 и 1), на рис. 1 показано её графическое представление.

pic_err12_
Рис. 1.  Иллюстрация задачи с двумя классами и возможного решения.

Пусть классификатор выдаёт метку класса. Используем принятые в этом блоге обозначения: yi – метка i-го объекта, ai – ответ на этом объекте нашего алгоритма, m – число объектов в выборке.

Естественным, простым и распространённым функционалом качества является точность (Accuracy или Mean Consequential Error):

f1

т.е. просто доля (процент) объектов, на которых алгоритм выдал правильные ответы. Недостаток такого функционала очевиден: он плох в случае дисбаланса классов, когда представителей одного из класса существенно больше, чем другого. В этом случае, с точки зрения точности, выгодно почти всегда выдавать метку самого популярного класса. Это может не согласовываться с логикой использования решения задачи. Например, в задаче детектирования очень редкой болезни алгоритм, который всех относит к классу «здоровые», на практике не нужен.

Рассмотрим т.н. матрицу несоответствий / ошибок (confusion matrix) – матрицу размера 2×2, ij-я позиция которой равна числу объектов i-го класса, которым алгоритм присвоил метку j-го класса.

tab1.png
Рис. 2. Матрица несоответствий.

На рис. 2 показана такая матрица для решения рис. 1, также показаны названия элементов матрицы. Два класса делятся на положительный (обычно метка 1) и отрицательный (обычно метка 0 или –1). Объекты, которые алгоритм относит к положительному классу, называются положительными (Positive), те из них, которые на самом деле принадлежат к этому классу – истинно положительными (True Positive), остальные – ложно положительными (False Positive). Аналогичная терминология есть для отрицательного (Negative) класса. Дальше используем естественные сокращения:

  • TP = True Positive,
  • TN = True Negative,
  • FP = False Positive,
  • FN = False Negative.

Замечание. Иногда матрицу ошибок изображают по-другому: в транспонированном виде (ответы алгоритма соответствуют строкам, а правильные метки – столбцам).

Замечание. Стандартная терминология немного нелогична: естественно называть положительными объектами объекты положительного класса, но здесь – объекты, отнесённые алгоритмом к положительному классу (т.е. это даже не свойство объектов, а алгоритма). Но в контексте употребления терминов «истинно положительный» и «ложно положительный» это уже кажется логичным.

f8.png

f9.png

Для точности (Accuracy) справедлива формула:

f2.png

Ошибки классификатора делятся на две группы: первого и второго рода. В идеале (когда точность равна 100%) матрица несоответствий диагональная, ошибки вызывают отличие от нуля двух недиагональных элементов:

ошибка 1 рода (Type I Error) случается, когда объект ошибочно относится к положительному классу (= FP/m).

ошибка 2 рода (Type II Error) случается, когда объект ошибочно относится к отрицательному классу (= FN/m).

На заглавном рис. поста показаны известные шуточные иллюстрации ошибок 1 и 2 рода: ошибка 1 рода (слева) и ошибка 2 рода (справа). Когда я объясняю студентам, всегда привожу такой пример, который позволяет запомнить отличие ошибок 1 и 2 рода. Пусть студент приходит на экзамен. Если он учил и знает, то принадлежит классу с меткой 1, иначе — имеет метку 2 (вполне логично называть знающего студента «положительным»). Пусть экзаменатор выполняет роль классификатора: ставит зачёт (т.е. метку 1) или отправляет на пересдачу (метку 0). Самое желаемое для студента «не учил, но сдал» соответствует ошибке 1 рода, вторая возможная ошибка «учил, но не сдал» – 2 рода.

Через введённые выше обозначения выражаются следующие функции:

Полнота (Sensitivity, True Positive Rate, Recall, Hit Rate) отражает какой процент объектов положительного класса мы правильно классифицировали:

f3

Здесь и далее показан числитель формулы (тёмно синим) и знаменатель (тёмно и светло синим). Слева это сделано для матрицы несоответствий, справа – для множеств: круглое – объекты положительного класса, квадратное – положительные объекты по мнению классификатора.

Точность (Precision, Positive Predictive Value) отражает какой процент положительных объектов (т.е. тех, что мы считаем положительными) правильно классифицирован:

f4.png

Точность и полноту можно неформально называть «ортогональными критериями качества». Легко построить алгоритм со 100%-й полнотой: он все объекты относит к классу 1, но при этом точность может быть очень низкой. Нетрудно построить алгоритм с близкой к 100% точностью: он относит к классу 1 только те объекты, в которых уверен, при этом полнота может быть низкая.

Замечание. Отличайте «Accuracy» и «Precision». К сожалению, по-русски их называют одинаково «точность».

F1-мера (F1 score) является средним гармоническим точности и полноты, максимизация этого функционала приводит к одновременной максимизации этих двух «ортогональных критериев»:

f5.png

Также рассматривают весовое среднее гармоническое точности (P) и полноты (R) – Fβ-меру (Fβ score):

f6

Обратите внимание, что β  здесь не вес в среднем гармоническом:

f7.png

Почему используется среднее гармоническое понятно из рис. 4, на которых показаны линии уровня различных функций усреднения.

f10
Рис. 4. Линии уровня некоторых функций от двух переменных (в первом квадранте).

Видно, что линии уровня среднего гармонического сильно похожи на «уголки», т.е. на линии функции min, что вынуждает при максимизации функционала сильнее «тянуть вверх» меньшее значение. Если, например,  точность очень мала, то увеличение полноты, пусть и в два раза, не сильно меняет значение функционала. Нагляднее это показано на рис. 5: при точности 10% F1-мера не может быть больше 20%.

pic_err2_35
Рис. 5. Зависимость F1-меры от полноты при фиксированной точности.

При использовании Fβ-меры линии уровня «перекашиваются», один из критериев (точность или полнота) становится важнее при оптимизации, см. рис. 6.

f11.png
Рис. 6 Линии уровня F-меры и  F1/3-меры.

Из функционалов качества, которые получаются из матрицы несоответствий, можно также отметить специфичность (Specificity) или TNR – True Negative Rate:

 

f19.png

т.е. процент правильно классифицированных объектов негативного класса. Полноту иногда называют чувствительностью (Sensitivity) и используют в паре со специфичностью для оценки качества, также часто их усредняют (об этом поговорим дальше). Оба функционала имеют смысл «процент правильно классифицируемых объектов одного из класса». Можно ввести понятие полноты Rk для k-го класса: это полнота, если считать класс k положительным, тогда

f20.png

Также запомним False Positive Rate (FPR, fall-out, false alarm rate):

f14.png

– доля объектов негативного класса, которых мы ошибочно отнесли к положительному (это нужно для понимания функционала AUC ROC).

Коэффициент Мэттьюса (MCC – Matthews correlation coefficient) равен

f16.png

его рекомендуют применять для несбалансированных выборок. Давайте разберёмся, что означает эта «сложная формула». Рассмотрим среднее геометрическое точности и полноты:

f21.png

Теперь возьмём среднее геометрическое точности и полноты класса 0 (т.е. считая это класс положительным), перемножив эти средние геометрические, получим

f22

Логично полученное выражение максимизировать, по аналогии можно выписать выражение для минимизации. Если теперь внимательно посмотреть на формулу MCC, то становится понятным, что она означает и почему её значение лежит на отрезке [–1, +1] (оставляем это как задание читателю).

Каппа Коэна (Cohen’s Kappa)

В задачах классификации часто используют функционал качества Каппа Коэна (Cohen’s Kappa). Его идея довольно простая: поскольку использование точности (Accuracy) вызывает сомнение в задачах с сильном дисбалансом классов, надо её значения немного перенормировать. Делается это с помощью статистики chance adjusted index: мы точность нашего решения (Accuracy) пронормируем с помощью точности, которую можно было получить случайно (Accuracychance). Под случайной здесь понимаем точность решения, которое получено из нашего случайной перестановкой ответов.

f18.png

здесь красным выделена вероятность угадать класс 0, а синим – класс 1. Действительно, класс k угадывается, если алгоритм выдаёт метку k и объект действительно принадлежит этому классу. Предполагаем, что это независимые события (мы же хотим вычислить случайную точность). Вероятность принадлежности к классу k можно оценить по матрице несоответствий как долю объектов класса k. Аналогично, вероятность выдать метку оцениваем как долю таких меток в ответах построенного алгоритма.

Сбалансированная точность (Balanced Accuracy)

В случае дисбаланса классов есть специальный аналог точности – сбалансированная точность:

f17.png

Для простоты запоминания – это среднее полноты всех классов (мы ещё вернёмся к этому определению), ну или в других терминах: среднее чувствительности (Sensitivity) и специфичности (Specificity). Отметим, что чувствительность и специфичность тоже, неформально говоря, «ортогональные критерии». Легко сделать специфичность 100%-й, отнеся все объекты к классу 0, при этом будет 0%-я чувствительность, и наоборот, если отнести все объекты к классу 1, то будет 0%-я специфичность и 100%-я чувствительность.

Если в бинарной задаче классификации представителей двух классов примерно поровну, то TP + FN ≈ TN + FP ≈ m/2 и сбалансированная точность примерно равна точности обычной (Accuracy).

Все указанные функционалы реализованы в библиотеке scikit-learn:

f25

Сравнение функционалов

Рассмотрим модельную задачу, в которой плотности распределения классов на оценках, порождённых алгоритмом, линейные, см. рис. 7 (алгоритм выдаёт оценки принадлежности к классу 1 из отрезка [0, 1], именно на этом отрезке они линейные). На рис. 7 показана конечная небольшая выборка, которая соответствует изображённым плотностям, мы же будем считать, что выборка бесконечная, поскольку плотности простые и позволяют в явном виде вычислить функционалы качества даже в случае такой бесконечной выборки. Будем считать, что классы равновероятны, т.е. наша бесконечная выборка сбалансирована. Выбранная задача очень удобна для исследования и уже использовалась при анализе функционала AUC ROC.

pic_err19.png
Рис. 7. Плотности распределения классов в модельной задаче классификации.

Заметим, что подобные распределения возникают в задаче, показанной на рис. 8 (объекты лежат внутри квадрата [0, 1]×[0, 1], два класса разделяются диагональю квадрата), если алгоритм в качестве оценки выдаст значения первого признака.

pic_err20.png
Рис. 8. Представление модельной задачи в признаковом пространстве.

Изобразив плотности немного по-другому, мы в явном виде можем вычислить элементы матрицы несоответствий при конкретном пороге бинаризации, см. рис. 9. Все они пропорциональны площадям выделенных зон (обратите внимание на масштаб осей):

f23

pic_err21
Рис. 9. Удобное изображение плотностей: пересекая рисунок прямой a = θ, мы получаем значения плотностей в виде длин отрезков, которые попали на соответствующие цветные зоны: синюю — для класса 1, розовую — для класса 0.

Теперь можно вывести формулы для рассмотренных функционалов качества как функции от порога бинаризации:

f24.png

Попробуйте вывести эти формулы сами, кроме того, попробуйте определить пороги бинаризации при которых указанные функционалы максимальны (здесь будет один сюрприз).

Возникает естественный вопрос: на практике у нас нет бесконечных выборок, что изменится, если мы вычислим значения функционалов на конечной, объекты которой сгенерированы в соответствии с указанными распределениями? Частично ответ на этот вопрос показан на рис. 10. Как видно, кривые довольно близки к теоретическим при m=300, при увеличении выборки в 10 раз практически совпадают.

pic_err22.png
Рис.10. Теоретические значения полноты, точности, F1-меры и значения, вычисленные по выборке из 300 объектов.

Рассмотрим теперь графики наших функционалов качества как функций от порога бинаризации, см. рис. 11. Заметим, что кроме F1-меры все они симметричны относительно порога 0.5, но это вполне логично. Теперь рассмотрим ситуацию неравновероятных классов, т.е. когда выборка несбалансированна. На рис. 12 показаны графики функционалов в случае, когда класс 1 в два раза чаще встречается в выборке, чем класс 0. Обратите внимание, что все графики стали несимметричными, кроме графика сбалансированной точности – эта функция не зависит от пропорций классов!

pic_err28.png
Рис. 11. Функционалы качества как функции от порога бинаризации.
pic_err27.png
Рис. 11. Функционалы качества как функции от порога бинаризации при дисбалансе классов (класс 1 в два раза вероятнее класса 0).

Вопросы для самопроверки

В конце серия вопросов с подвохом… если Вы хотите кого-нибудь «завалить» по простой теме «оценка качества в задачах бинарной классификации», то непременно задайте их:

  • у какого функционала качества самый маленький оптимальный порог бинаризации в общем случае, почему? Для справки: ответ «у F1-меры» в общем случае неверный (можно даже простой пример привести).
  • какой функционал качества действительно имеет смысл использовать в задачах с сильным дисбалансом классов (заметим, что стандартные советы: BA, MCC, κ, F1 обладают совершенно разными свойствами)?
  • какой «самый неустойчивый» из перечисленных функционалов (его значения на небольших выборках сильнее отличаются от вычисленных на достаточно больших)?
  • что изменится в примерах выше, если от линейных плотностей перейти к нормальным? Как это сделать корректно (и в чём некорректность описанной модельной задачи)?
  • верно ли, что максимальное значение точности (т.е. значение точности при оптимальном выборе порога) всегда не меньше максимального значения сбалансированной точности?

Что дальше…

По задачам классификации осталось рассказать про все скоринговые функции оценки качества в задачах бинарной классификации, про AUC ROC и LogLoss уже было. А потом — как все рассмотренные функционалы обобщаются на случай многих классов. Соответствующие посты скоро будут.

Традиционное в последнее время видео к материалу поста я залью чуть позже.

На правах рекламы

С сентября чему-то научиться у автора блога можно в этом замечательном проекте: Ozon Masters. Кроме курса по машинному обучению, будет много других с потрясающими преподавателями: Андрей Соболевский, Иван Оселедец, Павел Клеменков, Юрий Дорн, Александр Дайняк.

Функционалы качества бинарной классификации: 2 комментария

  1. Недавно было соревнование по ML с бинарной классификацией и метрикой f1 macro. С ROC AUC более-менее понятно, а вот как правильно минимизировать f1? Я минимизировал logloss, а потом искал порог для предсказанной для тренировочного набора данных вероятности, чтобы f1 было минимально.

    • Можно делать, как делали Вы. Правильно только сделать отдельный валидационный набор данных, и на нём подобрать порог. Можно это совместить с ансамблированием: строить разные модели, потом их ответы rank-нормировать, брать линейную комбинацию и определять порог бинаризации. Тут уже параметров больше: коэффициенты и порог. Есть также разные работы, где показано, как оптимизировать F-меру напрямую:
      http://proceedings.mlr.press/v54/eban17a/eban17a.pdf
      https://arxiv.org/ftp/arxiv/papers/1206/1206.4625.pdf
      Можно ещё сделать такую хитрость: перебирать разные loss-функции и посмотреть, при использовании какой получается максимальная F-мера.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s