Модели машинного обучения играют решающую роль во многих аспектах современного бизнеса. Использование прогнозной модели может улучшить прибыль бизнеса, а слегка улучшенная модель может привести к увеличению на миллионы долларов. Хотя вы можете не знать всех популярных алгоритмов (и более мощных алгоритмов в будущем), гораздо важнее знать, как выбрать лучшую модель. Есть ли какие-то общие показатели для сравнения предсказуемости конкурирующих моделей? В чем разница между этими показателями? В этом посте рассматриваются таблица / диаграмма прироста, кривые подъема, матрица Колмогорова-Смирнова (K-S), матрица путаницы, ROC, AUC, индекс Джини, диаграмма двойного подъема, а затем обсуждаются различия этих показателей. В конце я также предоставляю код Python, который генерирует таблицу Gains.

Я написал статьи по различным темам в области науки о данных. Для простоты использования вы можете добавить в закладки мой сводный пост Пути обучения Dataman - развивайте свои навыки, продвигайте свою карьеру », в котором перечислены ссылки на все статьи.

Позвольте мне использовать два случая, чтобы объяснить бизнес-приложения моделей машинного обучения.

Вариант использования 1: (маркетинг)

Предположим, у специализированной компании 1 миллион клиентов, и она проводит рекламную кампанию в определенный месяц. Предположим, 10% клиентов, или 100 000, ответят и купят новый продукт. Компания может выбрать рынок для всех клиентов, но это не оптимальное использование маркетинговых долларов. Лучше ориентироваться на тех клиентов, которые с большей вероятностью откликнутся на кампанию. Эта таргетированная кампания не только сэкономит деньги на маркетинге, но и не побеспокоит тех клиентов, которые не заинтересованы в новом продукте. Если у нас есть исторические данные о реакции клиентов на прошлые кампании, мы можем использовать эти данные для построения модели, чтобы предсказать, какой клиент, скорее всего, купит или не купит. Модель присваивает каждому покупателю вероятность от 0 до 1,0. Затем модель сортирует клиентов на десять равных подгрупп, или децилей, в соответствии с вероятностями.

Хорошая прогностическая модель может помочь компании лучше ориентироваться, тем самым увеличивая выручку и сокращая расходы на маркетинг. На рисунке (1) показаны результаты трех гипотетических моделей. Если компания примет Модель 1, она сможет получить 75 000 респондентов (= 75% * 100 000), если охватит только 40% из 1 миллиона клиентов. Предположим, средний заказ респондентов составляет 100 долларов. Прибыль составит 100 * 75 000 = 7,5 млн. Долларов. Напротив, Модель 2 получает только 50 000 (= 50% * 100 000) респондентов. Доход составляет 100 * 50 000 = 5,0 млн. Долларов. Выбор лучшей модели приводит к увеличению на 2,0 миллиона долларов. Модель 3 на самом деле проста. Это показывает, что модель работает не лучше, чем просто случайный маркетинг для клиентов.

Вариант использования 2: (риск невыполнения обязательств по ссуде)

Банки и другие финансовые учреждения ежегодно получают объемные заявки на получение ссуд. Некоторые из них являются хорошими соискателями кредита, а другие - нет. Эти учреждения хотели бы отличать плохих соискателей ссуды от хороших соискателей ссуды, чтобы избежать финансовых потерь. Поскольку их невозможно просмотреть вручную, широко используются системы автоматизации и модели прогнозирования невозврата кредитов. Модель машинного обучения будет ранжировать соискателей кредита на сегменты с высоким риском дефолта и сегменты с низким риском. Рисунок (1) иллюстрирует эту точку зрения. 24% заявителей в сегменте 1, или 2400 (= 24% * 10 000), являются безнадежными соискателями кредита. Предположим, средний размер кредита составляет 10 000 долларов. Если банк избегает Сегмента 1, он может избежать потенциальных финансовых потерь в размере 2400 * 10 000 долларов США = 240 000 долларов США. Такие убытки нелегко оправдать высокими процентами, и их следует избегать. В целом, банк не хотел бы предоставлять ссуды заявителям в сегментах с 1 по 4, у которых 75% просителей безнадежных ссуд.

Обратите внимание, что вариант использования 2 как-то «противоположен» варианту использования 1. В сценарии использования 1 желательные покупатели с высокой вероятностью ранжируются в верхние децили. В случае использования 2 заявители на безнадежную ссуду ранжируются в верхние децили.

Таблица / график прибылей

Рисунок (1) называется диаграммой совокупного прироста и представляет собой визуальное представление таблицы прироста. На рисунке (2) показана таблица выигрышей модели 1. Каждая модель имеет свою собственную таблицу выигрышей. Рисунок (1) просто перекрывает кривые Модели 1 и Модели 2 на одной диаграмме, чтобы мы могли их визуально сравнить.

Как диаграмма прибылей помогает вашей бизнес-стратегии? Он может служить двум важным целям: (i) выбрать наиболее эффективную модель и (ii) решить, на какие сегменты ориентироваться. В случае использования (1), если компания планирует небольшую кампанию, она может ориентироваться только на верхние сегменты. С другой стороны, компания может выбрать целевой уровень дециля 8, если он все еще будет прибыльным. В сценарии использования (2) банк может выбрать гарантию для сегментов 7–10 и избегать сегментов 1–4.

Давайте разберемся с таблицей выигрышей модели 1 более подробно. Поскольку модель построена на исторических данных, таблица прибылей также основана на исторических данных. Модель сортирует клиентов по предсказаниям в децили, чтобы получить столбец (A). Основываясь на дециле, столбцы (B) и (C) суммируют подсчет и совокупный подсчет для каждого дециля. Столбец (D) - средняя вероятность на дециль. Мы уже знаем покупателей и не покупателей в исторических данных, поэтому в столбце (E) указано количество не покупателей. Столбцы (F), (G) и (H) показывают процентное соотношение, совокупное количество и процент соответственно. Точно так же статистику количества покупателей можно обобщить в столбцах (I) - (L). Обратите внимание, что столбец (L) визуально представлен синей кривой на рисунке (1).

Раздел Анализ прибыли помогает принять решение. Предположим, что средний заказ на одного покупателя составляет 20 долларов США, а стоимость приобретения составляет 1 доллар США за одно почтовое отправление. Доход для каждого дециля рассчитывается в столбце (Q) (= столбец (I) * 20 долларов). Столбец (R) показывает стоимость каждого дециля. В результате прибыль (= Доход - Стоимость) отображается в столбце (S). Таблица прироста эффективно показывает прирост прибыли по мере снижения компании на дециль. Похоже, что компания может отправлять почту клиентам в децилях 1–6. Прибыль оптимизирована на дециле 6, дальнейшие децили несут убыток.

Можете ли вы получить ROI (возврат инвестиций)? да. Поскольку ROI = (Прибыль от инвестиций) / Стоимость инвестиций, если компания отправит письмо в Дециль 1–6, ROI составит 1 160 000 долларов США / 600 000 долларов США = 1,93.

Диаграмма роста

Диаграмма роста, или, в частности, диаграмма совокупного роста, показывает, насколько более вероятно, что компания получит покупателей, чем если бы компания нацелена на клиентов случайным образом. У каждой модели своя диаграмма подъема. Он рассчитывается в столбце (N) как столбец (K) / столбец (P). Подъем модели 1 в дециле 1 составляет 2,4. Это означает, что Дециль 1 модели 1 может получить в 2,4 раза больше клиентов по сравнению со случайным выбором. Для дециля 4 модель 1 все еще получает в 1,88 раза больше, чем случайный выбор. Более высокий подъем указывает на лучшую модель. Наименьшее значение подъема - 1,0.

Диаграмма Колмогорова-Смирнова (КС)

K-S измеряет степень разделения между распределениями положительных и отрицательных респондентов. В математическом выражении K-S = | Кумулятивный% положительный - Накопительный% отрицательный |. В случае маркетингового использования K-S = | совокупный% от общего числа непокупателей - совокупный% от общего числа покупателей |. В случае использования ссуды по умолчанию K-S = | кумулятивный% от общего числа хороших соискателей ссуды - кумулятивный% от общего количества соискателей ссуды |. См. Столбец (M) на рисунке (2). Чем выше значение, тем лучше модель отделяет положительный случай от отрицательного. Если модель не может отделить положительные случаи от отрицательных (например, Модель 3), KS для всех децилей будет 0. На рисунке (4) показаны графики KS Модели 1 и Модели 2. Модель 1 превосходит Модель 2 по двум причинам: ( i) максимальное значение Модели 1 составляет 38,9%, что выше 11,1% Модели 2, и (ii) Дециль 1 Модели 1 составляет 15,6%, что выше 2,2% Модели 2.

Матрица неточностей

Бинарный классификатор - это просто модель классификации, в которой ответ имеет только два результата (Да / Нет, 1/0, Истина / Ложь, Мужской / Женский, Хороший / Плохой и т. Д.). Модель дает вероятность от 1,0 до 0,0. Необходимо выбрать отсечку, чтобы обозначить прогнозы как покупатель / не покупатель или 1/0.

Давайте посмотрим, что произойдет, если выбрать 0,50 в качестве точки отсечения для Модели 1. Децили 1–4 будут классифицированы как покупатели, а децили 5–10 - не покупатели. Очевидно, не все децили 1–4 являются реальными покупателями. Когда мы сравниваем прогнозируемых и реальных покупателей или непокупателей, мы получаем матрицу путаницы для модели 1 на рисунке (5). Есть четыре сценария:

  • Истинно-положительные (TP): фактические положительные значения и прогнозируются как положительные.
  • Ложные срабатывания (FP), фактические - отрицательные и прогнозируются как положительные.
  • Ложноотрицательные (FN), фактические - положительные и прогнозируются как отрицательные.
  • Истинно отрицательные (TN), фактические - отрицательные и прогнозируются как положительные.

Как мы представляем ошибочную классификацию, когда пороговое значение составляет 0,50? Мы используем показатель, называемый частотой ошибок, для соотношения ошибочно классифицированных экземпляров, как показано на рисунке (6). Он показывает, что когда отсечка составляет 0,50, коэффициент ошибок составляет (325000 + 25000) / 1000000 = 0,35. Но как выбрать значение отсечения? Мы можем получить частоту ошибок при каждой возможной отсечке и выбрать тот, который дает наименьшую частоту ошибок. Рисунок (6) предполагает, что порог должен быть выше на 0,95.

ROC (рабочие характеристики приемника) и AUC (площадь под кривой)

Кривая рабочих характеристик приемника (ROC) - одна из наиболее эффективных метрик оценки, поскольку она визуализирует точность прогнозов для всего диапазона значений отсечки. Чтобы получить ROC, нам просто нужно вывести два отношения из матрицы неточностей: истинно положительный коэффициент (TPR) или чувствительность и истинно отрицательный показатель (TNR) или называется Specificity:

TPR и FPR изменяются при изменении значения отсечки. можно рассчитать различные TPR и FPR для разных значений отсечки. Когда мы строим TPR по оси y и FPR по оси x, мы получаем кривую ROC. Диаграмма ROC - отличный наглядный экспонат для сравнения моделей. Если бы у нас была идеальная модель, кривая ROC проходила бы через верхний левый угол, что указывало на отсутствие ошибки. Лучшая модель - это когда ROC находится близко к верхнему левому углу (как указано зеленой стрелкой).

Самый важный параметр, который можно получить из кривой ROC, - это Площадь под кривой (AUC). Для идеальной модели площадь под кривой будет 1,0. Рисунок (7) дает общее руководство по значениям AUC.

Индекс Джини

Индекс Джини можно легко получить из диаграммы прироста на рисунке (1). Он измеряет площадь между кривой совокупного отклика и линией под углом 45 градусов. Джини фактически эквивалентен AUC, но отличается масштабным коэффициентом - Джини = 2 * AUC -1. Джини варьируется от 0 до 1. На рисунке (8) показана взаимосвязь с AUC.

Как это кодировать на Python?

По просьбам некоторых читателей фрагмента кода Python ниже я публикую этот код. Target и Predict - это имена столбцов целевого и прогнозного столбца соответственно. Код генерирует совокупный подъем и K-S.

# Sort on prediction (descending)
# Add row ids 
# Add decile 
 data= data.sort_values(by=’predict’,ascending=False)
 data[‘row_id’] = range(0,0+len(data))
 data[‘decile’] = ( data[‘row_id’] / (len(data)/10) ).astype(int)
 # Check the count by decile
 data.loc[data[‘decile’] == 10]=9
 data[‘decile’].value_counts()
#create gains table
 gains = data.groupby(‘decile’)[‘target’].agg([‘count’,’sum’])
 gains.columns = [‘count’,’actual’]
 gains
#add metrics to the gains table
 gains[‘non_actual’] = gains[‘count’] — gains[‘actual’]
 gains[‘cum_count’] = gains[‘count’].cumsum()
 gains[‘cum_actual’] = gains[‘actual’].cumsum()
 gains[‘cum_non_actual’] = gains[‘non_actual’].cumsum()
 gains[‘percent_cum_actual’] = (gains[‘cum_actual’] / np.max(gains[‘cum_actual’])).round(2)
 gains[‘percent_cum_non_actual’] = (gains[‘cum_non_actual’] / np.max(gains[‘cum_non_actual’])).round(2)
 gains[‘if_random’] = np.max(gains[‘cum_actual’]) /10 
 gains[‘if_random’] = gains[‘if_random’].cumsum()
 gains[‘lift’] = (gains[‘cum_actual’] / gains[‘if_random’]).round(2)
 gains[‘K_S’] = np.abs( gains[‘percent_cum_actual’] — gains[‘percent_cum_non_actual’] ) * 100
 gains[‘gain’]=(gains[‘cum_actual’]/gains[‘cum_count’]*100).round(2)
 gains = pd.DataFrame(gains)

Заключение

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