Краткое введение в визуализацию результатов машинного обучения

Обзор

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

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

В основном мы будем использовать R для анализа и визуализации.

Живая демонстрация: https://jameschen4.shinyapps.io/leads/

библиотека (data.table)
библиотека (каретка)
библиотека (xgboost)
библиотека (pROC)
библиотека (xgboostExplainer)
библиотека (dplyr)
библиотека (tidyr)
библиотека (реагирующая)
библиотека (htmltools)

Данные

Данные доступны на Kaggle. В этом наборе данных хорошо то, что он поставляется со словарем данных, который объясняет, что означают ключевые столбцы. Всего 37 переменных и около 10 тысяч записей.

Предварительная обработка

Уже есть хорошо написанный EDA от Ashish с Python. Мы возьмем очищенный набор данных непосредственно от него и сосредоточимся на части моделирования и визуализации.

Мы также удалим эти столбцы, которые в основном относятся к лидам:

  • Качество лида (низкая релевантность, возможно, не уверен, худшее)
  • Источник лида (отправка целевой страницы, форма добавления лида, импорт лида)
  • Источник потенциальных клиентов (Facebook, Google, Olark Chat, органический поиск и т. Д.)

Обучение

Здесь мы обучим модель XGBoost с 10-кратной перекрестной проверкой, где целевая переменная - если пользователь преобразован в лида (0 - Нет, 1 - Да). Приведенный ниже код взят непосредственно из Дэвида Фостера.

Оказалось, что базовая модель уже дает хороший результат: AUC 0.9650633.

Используя пакет xgboostExplainer, мы можем определить несколько важных переменных, которые могут способствовать конверсии.

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

Для записи ниже (взято из набора тестов):

Прогноз: 0.9630512

Вес: 3.260574

Рассмотрев еще несколько случаев, мы определили список из 6 переменных, которые могут помочь конвертировать лида:

  • Общее время, потраченное на веб-сайт
  • Last.Activity_SMS.Sent / Last.Notable.Activity_SMS.Sent
  • Tags_Will.revert.after.reading.email
  • Specialization_Other_Specialization
  • Tags_Lost.to.EINS
  • TotalVisits

Моделирование

Основная идея здесь заключается в том, что если переменные независимы, мы могли бы поиграть с разными входными данными, чтобы увидеть, как изменятся прогнозы.

Мы уже знаем из EDA Ашиша, что нет какой-либо серьезной коллинеарности (обычно, когда VIF ›5):

Числовые переменные

Сначала мы создадим список процентов и список начальных значений для повторения. Процент здесь относится к проценту пользовательской базы, которая может быть затронута. Например, если perc = 0,2, это означает, что мы случайным образом выберем 20% записей (опять же, из тестовых данных) и добавим 600 секунд к переменной Total.Time.Spent.on.Website, в то время как другие переменные останутся неизменными. для тех 20% записей.

Диверсифицированный набор здесь просто для того, чтобы сделать симуляцию более надежной. Для каждой итерации мы берем медианное значение прогнозов. Обратите внимание, что здесь базовый уровень прогнозов медианы до того, как мы что-то моделируем, составляет около 0,152.

Следует отметить, что, несмотря на отсутствие серьезной коллинеарности, когда TotalVisits = 0, Total.Time.Spent.on.Website также должен быть равен 0. Для простоты мы пока игнорируем это.

Еще одно замечание: здесь мы демонстрируем только фиксированное ускорение для непрерывных переменных (например, добавляем 600 секунд), и мы всегда можем попробовать разные комбинации.

Горячие переменные

Для одноразовых переменных один из способов - сначала разделить 0 и 1, а затем случайным образом взять процентное значение от 0 (цель) и преобразовать его в 1 - это означает, что отправленное SMS становится последним действием для этих выбранных записей. .

Затем мы повторяем процесс для остальных 4 переменных, и агрегированные коэффициенты конверсии выглядят следующим образом:

Визуализация

Перед визуализацией давайте также добавим подробностей к окончательным данным:

Для фактической визуализации мы построим тепловую карту в формате таблицы с помощью пакета reactable - лучшая часть? Он совместим с R Shiny.

Живая демонстрация: https://jameschen4.shinyapps.io/leads/

Некоторые мысли, стоящие за этой визуализацией:

  • Значки со стрелками вверх и загрузки служат для иллюстрации целей увеличения / уменьшения, что привлекает больше внимания.
  • Базовые категориальные и числовые значения являются лишь ориентирами для текущих данных испытаний (перед любым моделированием) - и будут использоваться для оценки того, насколько возможно установить указанную цель. Например, собрать на 50% больше пользователей от EINS Education (компании-конкурента) может быть нереально, поскольку текущий базовый уровень составляет всего 2%.
  • Числа часто выравниваются по правому краю, а текст по левому краю. Однако, поскольку у нас всего несколько чисел, выравнивание центра выглядит лучше с% и #
  • Подчеркните X = 10% как в первом столбце моделирования потенциальных клиентов, так и в описании накладных расходов с X% пользователя…

Следующие вопросы с высоким приоритетом:

  • Что мы можем сделать, чтобы привлечь пользователей из EINS Education?
  • Какие стратегии использует обучение EINS?
  • Почему пользователи покупают и у нас, и у EINS?
  • Успешны ли наши кампании по электронной почте и SMS - где мы можем получить больше данных по этому поводу?
  • Почему пользователи без специализации с меньшей вероятностью совершат конверсию? Это потому, что у них его на самом деле нет или они не хотят сообщать нам эту информацию?

Последние мысли

Здесь мы фокусируемся на целях (то, что мы хотим достичь), а не на фактическом подходе, который мы принимаем, потому что может потребоваться более глубокий анализ и знание предметной области онлайн-образования, чтобы придумать надежный план оптимизации (например, чтобы изучить, почему определенные пользователи проводят на сайте более 2000 секунд - это из-за определенного контента?).

Также обратите внимание, что при правильной настройке должно быть A / B-тестирование для проверки корреляций, выявленных моделью XGBoost. Но опять же, анализ в этом блоге должен служить только отправной точкой для оптимизации конверсии потенциальных клиентов, и это итеративный процесс для уточнения анализа с различными заинтересованными сторонами.

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

Из переменных A, B, C и D; комбинация значений A, B и C (не касаясь D) увеличивает целевое значение y на 10, минимизируя сумму A, B и C.

Вопросы?

[email protected]