Скоринговые ошибки (Proper Scoring Rules)

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

Рассмотрим задачу бинарной классификации с классами {0, 1}, в случае, когда алгоритм выдаёт некоторую оценку a принадлежности к классу 1. Можно считать, что оценка лежит на отрезке [0, 1], в идеале её можно было бы интерпретировать как оценку вероятности принадлежности к классу 1, но на практике такое не всегда возможно, именно об этом мы и поговорим…

Для оценки качества решения и настройки нашего алгоритма используем функцию ошибки L(y,a). Функция ошибки называется скоринговой (proper scoring rules), если

т.е. оптимальный ответ на каждом объекте – вероятность его принадлежности классу 1. Мы уже видели, что логистическая функция ошибки является скоринговой, сейчас покажем, что не только она.

Замечание. Формально переводя с английского, корректнее называть описанную функцию ошибки «правильно / подходящей скоринговой», но мы упростим терминологию. Есть также понятие «strictly proper scoring rule» – которое формализует класс функций, при использовании которых выдавать вероятность не просто оптимальное решение, но и единственное оптимальное (все рассмотренные в данной заметке функции будут такими). Отметим, что термин не связан с задачей банковского скоринга! Сама теория скоринговых функций является самостоятельным направлением в теории вероятности и математической статистике. Вспомним также, что проблему «заставить алгоритм выдавать вероятности» мы уже рассматривали в заметке про калибровку.

Рассмотрим ошибку MSE (её привычно применять в регрессии, но сейчас мы её применим в задаче классификации), ошибка на одном объекте равна квадрату отклонения от истинной метки: SE = (ya)2. Если объект с вероятностью p принадлежит классу 1, то матожидание ошибки

при её минимизации получаем (берём производную и приравниваем к нулю):  a = p, т.е. SE – тоже скоринговая функция ошибки. Интересно, что минимум матождания при этом:

С точностью до мультипликативной константы 2 он совпадает с функцией, которую оптимизируют при построении решающих деревьев в критерии Джини. Функцию ошибки MSE в задачах классификации называют «ошибкой Браера» (Brier score), именно под таким названием она реализована в scikit-learn:

from sklearn.metrics import brier_score_loss
brier_score_loss(y_true, y_prob)

Если вспомнить аналогичный вывод для логистической функции ошибки, то там матожидание функции ошибки являлось энтропией, а соответствующий критерий – энтропийный. Таким образом, выбирая критерий расщепления среди двух стандартных (энтропийного и Джини), Вы выбираете между целевыми функциями для оптимизации. В различных форумах часто мелькают мнения, что MSE-ошибку нельзя использовать в задачах классификации, оказывается, что можно, более того, иногда она даже предпочтительнее logloss-a (здесь не будем аргументировать, по каким параметрам, детали можно найти, например, в этой статье Селтена). Хотя, логистическая ошибка единственная скоринговая в классе локальных ошибок (используют локальную информацию о распределении в общем случае). Вообще, если разбираться в этой теме, то легко, глядя на GAN, додуматься до LS-GAN-а (это одна из первых модификаций, которые напрашиваются для более эффективного обучения). Как раз для этого и следует копаться в смежных с ML фундаментальных областях математики — при замене энтропии / дивергенции (см. ниже) их аналогами можно получать более эффективные решения.

В общем случае, в теории скоринговых функций в задаче с классами L={1,2,…,l}, когда есть какое-то истинное распределение Q на L и ответ алгоритма – распределение P, рассматривается функция

которую максимизируют по первому аргументу. Функция

(здесь аргументы не просто так поменялись местами) называется информационной мерой (information measure) или обобщённой энтропией (generalized entropy function). Например, для Brier score обобщённая энтропия с точностью до аддитивной константы равна квадратичной энтропии (Quadratic Entropy) p12+…+pl2. А выражение

называется дивергенцией. Для логистической ошибки это выражение превращается в дивергенцию Кульбака-Лейблера, для Brier score – в евклидово расстояние.

Приведём пример нетривиальной скоринговой функции. Давайте в логистической функции заменим отрицание логарифма –log(a)  на очень похожую (см. рис) функцию

Рис. Несколько похожих функций.

Получим такое выражение:

Проделаем нашу стандартную процедуру: минимизируем матожидание ошибки для объекта, который с вероятностью p принадлежит классу 1:

Взяв производную и приравняв к нулю получаем a = p, т.е. получили ещё одну скоринговую функция ошибки. Минимальное матожидание

(т.е. корень из минимума матожидания при использовании ME).

Обоснуем странное обозначение exploss, дело в том, что такая функция ошибки называется экспоненциальной, что пока странно, т.к. нигде не видно экспоненты. На самом деле, функция очень логична по следующей причине. Рассмотрим задачу классификации на два класса {–1, +1} и алгоритм для её решения, который выдаёт некоторые оценки принадлежности к классу 1 из интервала (–inf, +inf). Очень логичной кажется такая функция ошибки: exp(–a), которая применялась в первых вариантах бустинга. Её матожидание на объекте pexp(–a)+(1–p)exp(+a), если взять производную и приравнять к нулю, то получим

Если подставить это выражение в исходную функцию ошибки, то получим как раз выражение exploss (только вместо ответов алгоритма там стоит вероятность). Таким образом, это «естественная поправка» экспоненты, если мы хотим ответы нашего алгоритма интерпретировать как вероятности.

Замечание. Такой приём – когда мы получаем ответ какого-то алгоритма через вероятность, а потом считаем, что наш (уже новый) алгоритм должен как раз эту вероятность и выдавать, называется переводом ответов в вероятностную шкалу (probability scale).

Далеко не все функции ошибки являются скоринговыми, тут я сошлюсь на свою старенькую лекцию, но вообще, есть критерий скоринговости (см. в литературе из списка). Скоринговые функции ошибки могут быть и довольно экзотическими, например т.н. Vince’s crazy proper scoring rule: (1+ya)exp(a).

Задания для самостоятельных раздумий

1. На рис. приведены две функции, похожие на отрицание логарифма. Одна из них также соответствует скоринговой ошибке exploss. Соответствует ли другая скоринговой ошибке?

2. Рассмотрим в задаче бинарной классификации информационную меру max(p, 1 – p). Каким функциям ошибки она соответствует (есть несколько ответов)? Являются ли они скоринговыми?

3. Рассмотрите задачу регрессии, в которой алгоритм должен выдать оценку «истинного распределения на вещественной оси. Как здесь построить теорию скоринговой оценки? Можно ли каким-то искусственным приёмом строить скоринговые оценки в регрессии (подсказка: специальным сведением к задачам классификации)?

Ссылки

Материал поста был прочитан в этом году в рамках авторского курса на летней школе «Управление, информация и оптимизация», кроме того, является частью курса ПЗАД, видеолекции которого скоро будут выложены на ютуб-канале автора (в блоге будет анонс).

Предыдущие посты по теме «Функции ошибки и функционалы качества»

Скоринговые ошибки (Proper Scoring Rules): 8 комментариев

  1. В формуле для S(P, Q) написано, что её максимизируют по первому аргументу. Это не опечатка? Не минимизируют?

  2. Если обучать линейную модель на одной выборке, но с разными скоринговыми функциями, получим ли мы одинаковые модели (одинаковые веса) или разные?

    • Хороший вопрос… если логистическую регрессию, то вроде как мы должны получать одинаковые веса, только доказать сходу у меня это не получилось. Но интуитивно, там выпуклые задачи оптимизации с оптимумом в одной точке.

  3. Я верно понимаю, что brier_score_loss пользуются редко, потому что для отнесения к классам с хорошим качеством — лучше сделать максимально качественную модель, а потом заниматься её калибровкой, вместо того, чтобы сразу делать откалиброванную модель с средним качеством?! 🙂

    • Не совсем, просто logloss лучше подходит под классические модели типа логрегрессии и модельные задачи типа разделения нормальных смесей (в данном случае имеет чёткое теоретическое обоснование).

Оставьте комментарий