Кривые в машинном обучении

Этот пост продолжает тему оценки качества алгоритмов машинного обучения для решения задач классификации. Рассмотрим кривые «полнота-точность», Gain, Lift, K-S (machine learning curves) и таблицу для анализа доходности. Самое главное — мы определим все кривые через уже знакомые нам понятия, часто используемые в ML (а не как обычно: для каждой кривой придумывается своя терминология).

ML_curves

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

Мы уже описывали ROC-кривую и рассматривали площадь под ней (AUC ROC). Сейчас опишем другие популярные кривые, которые строят для оценки качества классификации. Будем предполагать, что решается задача классификации с двумя классами: положительным (1) и отрицательным (0). Алгоритм выдаёт оценку принадлежности к классу 1, при выборе порога все объекты, оценки которых не ниже порога, мы относим к классу 1, соответственно, сразу становятся определены все метрики качества рассмотренные здесь: точность, полнота и т.п. Все кривые будем иллюстрировать на модельной задачи из этого поста с линейными плотностями.

Кривая «полнота-точность». Как следует из названия, эта кривая строится в координатах полнота (R = recall) и точность (P = precision). На рис. 1-2 показаны PR-кривые в модельной задаче: синим – теоретическая кривая, красными тонкими линиями – кривые, построенные по выборкам с соответствующими плотностями. Рис. 1 – для выборок из 300 объектов, рис. 2 – для выборок из 3000 объектов. Заметим, что в общем случае PR-кривая не выпуклая. Площадь под ней часто используют в качестве метрики качества алгоритма. В нашей теоретической задаче PR-площадь равна 5/6=0.8(3) (попробуйте доказать), для выборок из 300 объектов после 100 экспериментов (генераций выборок) её оценка равна 0.839 ± 0.024 (std),  для выборок из 3000 – 0.833 ± 0.012 (std).

pic_err31
Рис. 1. PR-кривые в модельной задаче: теоретическая (синяя) и эмпирические (красная) для выборки из 300 объектов.
pic_err32
Рис. 2. PR-кривые в модельной задаче: теоретическая (синяя) и эмпирические (красная) для выборки из 3000 объектов.

Ниже представлен код для вычисления площади под PR-кривой.

code

На рис. 3 показано, как эмпирическая оценка площади PR-кривой зависит от объёма выборки при разной пропорции классов: когда классы равновероятны и когда есть дисбаланс классов. Более светлым коридором показаны стандартные отклонения от среднего. Видно, что для задачи с дисбалансом классов они больше.

pic_err33_
Рис. 3. Оценка AUC_PR для разного объёма выборки и баланса классов.

Площадь под PR-кривой (AUC_PR) рекомендуют использовать как раз в задачах с дисбалансом классов, аргументируя это тем, что эта кривая точнее описывает правильность классификации объектов с большими оценками, тогда как ROC-кривая — различие распределений объектов разных классов по оценкам. Подумайте, корректна ли такая аргументация? Как быть с увеличением погрешности при оценке площади под PR-кривой в задачах с дисбалансом? Отдельно обращаем внимание, что при изменении баланса классов значение AUC_PR меняется, например, если мы случайную половину одного из классов удалим из выборки (AUC_ROC при этом практически не меняется), см. рис. 4.

pic_err42.png
Рис. 4. Оценка AUC_PR для разного баланса классов.

Gain Curve (Chart) – это кривая в координатах «доля, отнесённых алгоритмом к классу 1», т.е. Positive Rate:

ff1

m — число объектов в выборке, и «какой процент класса 1 алгоритм отнес к позитивному», т.е. полнота для класса 1 или True Positive Rate:

ff2

Естественно, PR и TPR зависят от порога бинаризации, а сама кривая строится, когда порог пробегает всевозможные значения. Здесь есть несколько сюрпризов. Первый – из определения мы узнаём в этой кривой кривую Лоренца из машинного обучения, которую чаще называют Lift Curve (подробности можно почитать в этом замечательном посте). Кстати, здесь такой же график с небольшим изменением (по Y вместо TPR – TP) также назван «Lift-кривой», а здесь – CAP (Cumulative Accuracy Profile). Второй сюрприз в том, что дальше именем Lift Curve мы назовём другую кривую (а иногда называют и третью, но мы выбрали названия, которые согласовываются с наибольшим числом источников).

На рис. 5-7 показаны Gain-кривые в нашей модельной задаче: теоретические и (тонкими красными линиями) эмпирические, вычисленные по выборкам разных мощностей и при разном балансе классов.

pic_err34_1
Рис. 5. Gain-кривая в модельной задаче: синяя — теоретическая, красные — эмпирические по выборке из 300 объектов.
pic_err35_1
Рис. 6. Gain-кривая в модельной задаче: синяя — теоретическая, красные — эмпирические по выборке из 3000 объектов.
pic_err38_1
Рис. 7. Gain-кривая в модельной задаче с дисбалансом классов: синяя — теоретическая, красные — эмпирические по выборке из 300 объектов.

На рис. 5-7 чёрной диагональю показана Gain-кривая для случайного алгоритма: понятно, что если алгоритм случайную долю PR всех объектов посчитал положительным классом, то мы ожидаем, что доля объектов класса 1, которых алгоритм посчитал положительными также будет TPR=PR. Чем выше расположена наша кривая относительно диагонали, тем лучше. Отношение высот Gain-кривой и диагонали часто изображают в виде кривой Lift Curve (Chart): она строится в координатах PR и TPR/PR. На рис. 8-10 показаны Lift-кривые, соответствующие нарисованным выше Gain-кривым.

pic_err36_1
Рис. 8. Lift-кривая в модельной задаче: синяя — теоретическая, красные — эмпирические по выборке из 300 объектов.
pic_err37_1
Рис. 9. Lift-кривая в модельной задаче: синяя — теоретическая, красные — эмпирические по выборке из 300 объектов.
pic_err39_1
Рис. 10. Lift-кривая в модельной задаче с дисбалансом классов: синяя — теоретическая, красные — эмпирические по выборке из 300 объектов.

В банковской среде приняты термины типа Gain-Top-10% или Lift-Top-10%, это просто значения TPR или TPR/PR, когда 10% объектов с наивысшими оценками алгоритма мы относим к классу 1 (т.е. при PR=0.1). Также почему-то принято строить эти кривые лишь по точкам PR = 0.1 (10%), 0.2 (20%), … 1.0 (100%), мы дальше покажем это в таблице.

Попробуйте вычислить площадь под Gain-кривой через AUC_ROC. По смыслу эта площадь — вероятность, что у случайного объекта из класса 1 оценка выше, чем у случайного объекта.

Построение Gain и LIft кривых логично в «задаче о предложении услуги»: мы контактируем с клиентами (обзваниваем или показываем баннеры и т.п.), выборка состоит из описаний клиентов, а целевой признак – отклик на предложение, тогда Gain-кривая показывает, как зависит покрытие целевой аудитории от масштаба контакта.

Kolomogorov-Smirnov (K-S) chart используется для сравнения распределений объектов класса 1 и 0 в пространстве PR (важно: а не оценок, которые выдаёт алгоритм). Строится две кривые: TPR(PR) и FPR(PR). Первая, кстати, знакомая нам Gain-кривая: доля объектов класса 1, которую алгоритм отнёс к классу 1 (в зависимости от процента объектов, которых алгоритм отнёс к классу 1). Смысл второй – доля объектов класса 0, которую алгоритм отнёс к классу 1. На рис. 11 показаны соответствующие кривые для модельной задачи в случае баланса и дисбаланса классов. Максимальная разница между кривыми часто называется KS-расстоянием. Интересно, что в модельной задаче TPR(θ), FPR(θ)  не зависят от баланса классов, а вот K-S chart зависит… почему? Доказать, что при p1 = 0.1 на KSC максимальная разница TPR — FPR достигается в точке 0.3.

pic_err40
Рис. 11. K-S chart для модельной задачи
pic_err41
Рис. 12. K-S chart для модельной задачи с дисбалансом классов.

На рис. 13 видно, что K-S-расстояние может вычисляться с ошибкой, особенно на малых выборках. Подумайте, какому порогу бинаризации (каким свойствами он обладает) соответствует максимум TPR – FPR?

pic_err43+44.png
Рис. 13. Эмпирические (красные) и теоретические (синие) графики TPR – FPR в задаче с 300 объектами (слева) и 3000 объектами (справа).

При анализе доходности (Profit Analysis) обычно используют такую таблицу: The Gains Table, для её построения объекты упорядочиваются по убыванию оценки принадлежности к классу 1, которую выдал алгоритм, потом разбиваются на 10 равных частей – децилей, каждому децилю соответствует строка таблицы.

table

  • N – число объектов в дециле,
  • % – процент объектов в дециле,
  • cum_… – кумулятивное значение, например cum_% – сколько процентов объектов до этого дециля включительно,
  • Prob – процент объектов из класса 1 в дециле,
  • N_t – число объектов из класса t,
  • %_t – какой процент объектов класса t попал в дециль,
  • K-S – разница распределений по Колмогорову-Смирнову: cum_%1 – cum%_0,
  • Lift – отношение cum_%1 / %.

По таблице можно посчитать экономику, связанную с задачей. Например, если таблица соответствует описанной выше задаче предложения услуги, стоимость контакта равна 1$, а доход с отклика равен 5$, тогда если проконтактировать с 10% клиентов, то траты = 11 238$, доход = 2572*5 = 12 860$, а прибыль = 1 622$.

Ссылки

Реализации функций отрисовки некоторых кривых можно найти здесь:

 

 

Кривые в машинном обучении: 5 комментариев

  1. Добрый день Александр Геннадьевич! Спасибо за статью, очень интересная тема.
    В европейских публикациях на тему банковского скоринга преобладает оценка качества моделей методом Колмогорова-Смирнова, а в Российских, Американских, Китайских, в основном AUC_ROC.
    Какая метрика на ваш взгляд больше подходит для таких задач?
    Связан ли выбор между этими двумя метриками с балансов классов?

  2. Здравствуйте! Я думаю, что на практике K-S и AUC_ROC очень похожи, поэтому не имеет значение, что выбрать. Сам баланс не влияет на них. Проблема в другом: они измеряют различие распределений объектов разных классов на ответах алгоритма, а скоринге интересно другое… Банк может дать ограниченное число кредитов и на этом числе ему интересен риск. То, что исторически закрепились совсем нерелевантные метрики связано с тем, что они как раз не завязаны на объёмы кредитования и на риски, на которые конкретный банк может пойти. Поэтому вопрос «какой у вашей модели AUC_ROC/gini» вполне понятен.

  3. Здравствуйте
    А можете сказать ответ на вопрос в статье?
    «Подумайте, корректна ли такая аргументация? Как быть с увеличением погрешности при оценке площади под PR-кривой в задачах с дисбалансом?»
    Или дать какую-то подсказку?
    Спасибо!

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