В SnackNation мы верим, что перекусы - это не просто перекусы, а неотъемлемая часть более счастливой, здоровой и целеустремленной жизни. Миссия SnackNation - найти новые бренды, заботящиеся о своем здоровье, и связать их с единомышленниками.

Как члены группы Business Intelligence, мы несем ответственность за разработку и контроль за исполнением стратегий компании, основанных на данных, за счет использования технологий, искусственного интеллекта и данных в реальном времени, чтобы обеспечить лучшее в своем классе понимание потребителей и предоставить потребителям продукты премиум-класса по всей стране. . Например, с помощью статистического тестирования наших данных отзывов о продуктах мы можем предоставить нашим партнерам по бренду информацию о том, что нашим клиентам нравится и не нравится в их продуктах, и к каким демографическим категориям эти клиенты относятся.

В прошлом мы разработали модель прогнозирования оттока для нашей группы обслуживания клиентов, чтобы выявлять клиентов с самым высоким риском оттока. Точно так же мы создаем еще одну модель машинного обучения для нашей маркетинговой команды, чтобы привлекать больше потенциальных клиентов. Эта модель сможет предсказать, будет ли у лидера более высокая вероятность преобразования в платного клиента, и поможет руководителям маркетинговой команды распределить соответствующие лиды подходящему торговому представителю. Успех проекта будет рассчитываться путем отслеживания дохода, полученного для каждого целевого лида.

Поскольку эта проблема решалась несколько раз в отрасли, мы НЕ будем сосредотачиваться на аспектах моделирования. Скорее, в этом посте будут объяснены различные метрики оценки машинного обучения в контексте упомянутой выше проблемы прогнозирования потенциальных клиентов. Мы планируем объяснить преимущества выбора одних матриц перед другими в контексте нашей проблемы на примерах.

Метрики

После создания прогнозной модели из нашего помеченного набора данных мы знаем, что каждый прогноз, который делает наша модель, попадает в одну из этих четырех категорий:

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

Эти категории также могут быть представлены в матрице путаницы, изображенной в таблице 1, которая позволяет нам визуализировать производительность контролируемого алгоритма машинного обучения с двоичной целью. Совершенная модель прогнозирования будет иметь только истинные положительные и истинные отрицательные значения, поэтому ее матрица неточностей будет иметь ненулевые значения только на ее главной диагонали, а недиагональ будет равна нулю. Хотя матрица неточностей предоставляет ценную информацию о производительности модели, часто предпочтительнее иметь одну метрику, чтобы легко сравнивать производительность нескольких классификаторов.

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

Точность

Точность определяет, как часто классификатор делает правильный прогноз. Другими словами, это отношение количества правильных предсказаний к общему количеству предсказаний. Точность определяется как доля правильных прогнозов.

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

Например, в нашем наборе данных для обучения количество потенциальных клиентов, конвертировавших в продажу, составляет всего 12% по сравнению с лидами, которые не конвертировались (88%). Тогда наша модель может легко получить 88 % точности обучения, просто предсказав, что каждая обучающая выборка принадлежит неконвергентному отведению. Когда одна и та же модель тестируется на тестовом наборе с 64% образцов класса A и 36% образцов класса B, то точность теста упадет до 64%. Точность классификации велика, но дает нам ложное представление о достижении высокой точности.

Вместо этого мы используем более подходящие показатели точности, отзыва, оценки Fᵦ и площади под кривой точного отзыва, чтобы преодолеть проблемы, вызванные этим явлением дисбаланса классов. Ниже мы даем определение стандартных показателей оценки производительности, а также, напомним, и обсуждаем более подходящие показатели производительности при наличии дисбаланса классов.

Точность

Точность измеряет, насколько точными были наши положительные прогнозы. Другими словами, он сообщает нам, какая доля предсказанных баллов была истинно положительной.

Отзыв или истинно положительный результат

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

Количество ложноположительных результатов

Коэффициент ложноположительных результатов - это соотношение отрицательных случаев, которые неправильно классифицируются как положительные, т. Е.

Точность и отзывчивость в контексте

Поясним концепцию на конкретном примере, представленном ниже в виде таблицы 2.

В нашем случае точность представляет собой процент предсказанных положительных потенциальных клиентов, которые фактически были преобразованы в продажу. Напомним, в аналогичном контексте представляет, сколько потенциальных положительных потенциальных клиентов из всех положительных потенциальных клиентов были предсказаны нашей моделью положительно. Давайте посмотрим на гипотетический случай, когда у нас было 100 потенциальных клиентов. Допустим, из этих 100 80 потенциальных клиентов действительно конвертировались в продажу, а 20 - нет.

Наша гипотетическая модель распознала только 30 из 80 конверсий, а остальные 50 были помечены как «Нет конверсии». Другой результат заключался в том, что из 20 «Нет конверсий» 15 были распознаны правильно, тогда как оставшиеся 5 потенциальных клиентов были неправильно помечены как «Конверсия». Из таблицы наша точность составляет (30 + 15) / (30 + 50 + 5 + 15) = 45/100 = 45,00%, а наша точность составляет 30 / (30 + 5) = 30/35 = 85,71%, тогда как наш отзыв оценка 30 / (30 + 50) = 30/80 = 37,5%.

Из этого примера мы видим, что даже если точность высока, наш отзыв низкий. Поскольку мы больше заботимся о минимизации ошибки типа II по сравнению с ошибкой типа I, нам нужно, чтобы наша модель имела высокий показатель отзыва.

Очевидно, что наша гипотетическая модель не служит нашей цели, имея низкое значение отзыва . В этой ситуации нам нужно настроить нашу модель так, чтобы она работала хорошо с отзывом и умеренно с точностью. Очень неудобно заботиться о двух разных метриках при оценке производительности нашей модели, поэтому мы вводим новую метрику Fᵦ score, которая представляет собой взвешенную комбинацию точности и полноты. Значение β может быть выбрано в соответствии с потребностями и приоритетами проблемы (поясняется ниже).

Оценка F₁
Оценка F₁ - это среднее гармоническое значение точности и запоминания, поэтому оно должно находиться между ними. Оценка F₁ ближе по значению к меньшему из показателей точности и запоминания. В результате, если одно из значений точности или отзыва низкое, оценка F₁ также будет низкой. Примечательно, что оценка F₁ дает одинаковый вес точности и отзыву, но для нашей задачи это не очень полезно, поскольку мы хотели бы отдать предпочтение отзыву в нашей модели.

Оценка Fᵦ
Оценка Fᵦ - это взвешенное гармоническое среднее значение точности и запоминания, достигающее оптимального значения при 1 и худшего значения при 0.

Параметр β определяет вес точности в комбинированном балле, т. Е. Β ‹1 придает больший вес точности, а β› 1 способствует отзыву. Когда β = 1, результирующая оценка F₁ является гармоническим средним для точности и отзыва и, следовательно, должна находиться между ними.
Кроме того, β = 0 учитывает только точность, а β → ∞ учитывает только отзыв.

Поскольку наша проблема более сложна для отзыва, мы хотим, чтобы значение β придавало больший вес отзыву и меньшему - точности. Придание большего значения отзыву означает, что мы не хотим, чтобы наша модель упускала какие-либо потенциальные лиды и предсказывала их как потенциальные конвергентные лиды. В то же время снижение точности означает, что отдел продаж будет тратить больше усилий и времени на ложноположительный прогноз. В этом случае нам нужен баланс, чтобы позаботиться как об отзыве, так и о точности с надлежащим весом, который подходит для наших бизнес-потребностей. Поиск правильного β - это не точная наука, а, скорее, требует большого количества экспериментов и знания предметной области. Для нашей задачи мы решили использовать β = 2.

ROC
Кривая рабочей характеристики приемника (ROC) - это еще одна часто используемая сводка для оценки диагностической способности двоичного классификатора по всем возможным результатам, поскольку порог распознавания его класса варьируется. Дискриминация по классам чаще всего устанавливается равной 0,5. Кривая ROC представляет собой график частоты истинно-положительных результатов (также известной как чувствительность или отзыв) в сравнении с частотой ложноположительных результатов.

Кривая PR
Кривая PR - это кривая точного отзыва с точностью по оси x и вызовом по оси y. Кривая PR, как правило, является лучшим индикатором качества модели при работе с классовым дисбалансом. Для сравнения мы вычисляем AUC для кривой PR вместо кривой ROC.
Поскольку наша проблема связана с дисбалансом классов, мы решили визуализировать производительность нашей модели с помощью кривой PR.

Оценка AUC
Оценка AUC определяется как площадь под кривой ROC или PR.
Оценка AUC измеряет общую производительность классификатора без учета распределения классов или стоимости неправильной классификации. Чем ближе оценка AUC к 1 (максимально возможное значение), тем выше общая производительность двоичного классификатора.

Пример кода на Python

Здесь мы объясняем все инструменты измерения, обсужденные выше, с помощью упрощенного, но практичного набора данных, связанных с маркетинговой проблемой SnackNation, с использованием небольших рецептов кода. Здесь весь код написан на Python с помощью библиотеки на базе Python sklearn. Из-за конфиденциальности наших данных для целей этой публикации мы создали фиктивный набор данных, сохраненный как объект фрейма данных pandas с именем df. Для простоты мы предполагаем, что набор данных очищен и готов к работе. Более того, поскольку наши данные страдают от проблемы дисбаланса классов, очень важно поработать над некоторыми аспектами проектирования функций, прежде чем переходить к части моделирования.

Фото: Untitled-Research

Давайте начнем с быстрого просмотра набора данных:

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

Поскольку все наши переменные являются категориальными переменными, мы обрабатываем их с помощью однократного кодирования для целей моделирования.

После предварительной обработки набор данных теперь выглядит так, как показано ниже.

В следующем фрагменте кода мы разделяем метку и характеристики данных для оценки.

Теперь мы разделяем наш набор данных на тестовую группу поездов, где мы резервируем 80% данных для обучения и 20% данных для целей тестирования.

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

Теперь мы представляем удобную функцию отчета, предоставляемую scikit-learn при работе над проблемами классификации, чтобы дать нам быстрое представление о точности модели с использованием ряда мер.

Функция classification_report () отображает точность, отзыв, оценку f1 и поддержку для каждого класса. В приведенном ниже примере кода демонстрируется отчет о нашей проблеме классификации.

Наконец, следующие две части кода показывают вычисление матрицы неточностей и оценки Fᵦ при β = 2.

Заключение

Альберт Эйнштейн однажды сказал: «Если судить рыбу по ее способности лазить по дереву, она проживет всю свою жизнь, считая себя глупой». Эта цитата действительно подчеркивает важность выбора правильной метрики оценки в правильной ситуации. В SnackNation наша команда бизнес-аналитики следит за тем, чтобы мы выбирали наши оценочные показатели на основе контекста проблемы и данных. По мере того, как мы продолжаем расти, мы планируем автоматизировать процесс выбора показателей для оценки наших моделей прогнозирования, чтобы мы могли лучше масштабировать проблему.

Я искренне признателен всей команде SnackNation, особенно моему соавтору Аману Матуру и каждому члену команды бизнес-аналитики за их огромную поддержку во время написания этой статьи. Особая благодарность нашему капитану Айхуи Онг за ее постоянную поддержку в написании этой статьи. И последнее, но не менее важное: спасибо Шеннон Дьюк, нашему старшему графическому дизайнеру в SN, за создание классной графики для этого поста.

Спасибо за чтение. Пожалуйста, поделитесь своими мыслями и конструктивными предложениями по любым возможным улучшениям в комментариях ниже. Также следите за новостями о многих других интересных проектах по машинному обучению, которые появятся на SnackNation.