Прогнозирование «оттока» клиентов с помощью PySpark

Введение проблемы

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

Отторжение определяется как движение или побуждение к энергичному движению. С точки зрения бизнеса, отток клиентов определяется, когда клиенты перестают пользоваться услугами. Это, конечно, не очень хорошо для бизнеса и может привести к тому, что служба потоковой передачи музыки перейдет от текущей услуги к прекращенной. Чтобы предотвратить отток, компании используют машинное обучение для выявления клиентов, которые могут уйти, прежде чем это сделать. Этим клиентам обычно предлагают какой-то стимул, чтобы остаться и остаться в качестве клиента. Итак, вы один из тех клиентов, которые могут уйти?… вот взгляд на то, как компании уже знают, используя науку о данных и PySpark!

Обзор/Стратегия

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

Данные содержали 286 500 записей и 18 переменных. После импорта данных всегда важно изучить данные. Одна из первых вещей, которые я люблю проверять, — это отсутствие. Неплохой идеей будет получить представление о том, какие переменные отсутствуют, и есть ли какая-то закономерность в их отсутствии. Из данных переменная отсутствует в 0 экземплярах, 8346 экземплярах или 58392 экземплярах. Я смог уточнить, что отсутствие может быть устранено путем удаления записей, в которых информация о пользователе (в частности, userId) равна нулю.

После удаления этих записей осталось 278154 записи.

Исследовательский анализ данных (EDA)

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

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

Клиенты, которые ушли

Чтобы определить «отток» в отношении предоставленных данных, был создан столбец churned на основе того, где переменная «страница» равнялась Cancellation Confirmation. Я присвоил значение 1, когда клиент ушел, и 0 для клиентов, которые не ушли. Поскольку представляло интерес прогнозирование оттока на уровне клиентов, окончательный набор данных содержал одну запись для каждого идентификатора пользователя. Осталось 173 пользователя, которые не ушли, и 52 пользователя, которые ушли (23% пользователей), что является немного несбалансированным набором данных (в котором показатель F1, гармоническое среднее значение точности и отзыва является хорошей метрикой).

Отток клиентов в разбивке по полу (мужчины: 26 %, женщины: 19 %)
Мужчины уходят чаще, чем женщины (32 из 121 мужчины и 20 из 104 женщин).

Отток клиентов по уровням подписки (платные: 21,8%, бесплатные: 23,5%)
Клиенты с бесплатным уровнем подписки отходили немного быстрее, чем платные участники. Похоже, если вы можете заставить пользователя платить, он, скорее всего, не уйдет.

Среднее время в качестве пользователя по оттоку (отток: 56 дней, не отток: 88 дней)
В этом небольшом подмножестве данных, учитывающем 3 месяца, клиенты, которые ушли, были пользователями обслуживания в среднем 56 дней по сравнению с клиентами, которые не уходили в среднем 88 дней. Возможно, создание стимулов для пользователей в течение первых 90 дней может быть хорошей идеей.

Среднее количество ежедневных действий по оттоку (отток: 89 действий, а не отток: 125 действий)
Как и ожидалось, очевидно, что пользователи, которые больше используют сервис, с меньшей вероятностью уйдут. Мы знаем, что многие компании отслеживают, как долго кто-то использует их приложение, остается на их веб-сайте или иным образом взаимодействует.

Среднее количество песен, воспроизводимых в день оттоком (отток: 60 песен, а не отток: 82 песни)
И снова мы видим, что взаимодействие пользователя со службой имеет четкую корреляцию с его вероятность оттока. Пользователи, которые уходят, проигрывают на 22 песни в день меньше, чем клиенты, которые не уходят.

Среднее количество песен, проигранных за сеанс в результате оттока (отток: 60 песен, не отток: 84 песни)
За сеанс пользователи, которые уходят, проигрывают на 24 песни меньше, чем пользователи, которые не уходят. Очевидно, что может иметь смысл иметь награды или значки, когда пользователи используют сервис на определенном уровне.

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

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

  • Логистическая регрессия
  • Классификация линейных опорных векторов
  • Наивный байесовский классификатор
  • Случайный лесной классификатор

Метрики

Как упоминалось ранее, метрикой для оценки моделей будет оценка F1. Оценка F1 хороша, когда у вас несбалансированные данные. Используемые данные имеют в общей сложности 225 пользователей, 52 из которых уходят, а 173 не уходят. По сути, это соотношение 3:1, и если его не принять во внимание, это может повлиять на модель и результаты.

Полученные результаты

Логистическая регрессия

Лично я предпочитаю логистическую регрессию в этих сценариях при классификации бинарных случаев, и модель имеет отличную интерпретируемость. Из-за интерпретируемости бывают случаи, когда логистическая регрессия используется, даже если модель не работает наилучшим образом. Если модель работает близко к лучшей модели и может быть лучше объяснена, возможно, лучше выбрать логистическую регрессию.

Результаты:

  • Оценка F1: 0,7159
  • Точность: 0,7344

Классификация линейных опорных векторов

Аналогичен SVC с параметром kernel=’linear’, но обладает большей гибкостью в выборе штрафов и функций потерь и должен лучше масштабироваться для большого количества выборок. Недостатком линейного SVC является то, что он занимает намного больше времени, чем логистическая регрессия. Когда я запустил модель, она заняла в 42 раза больше времени, чем логистическая регрессия, и, судя по результатам, она не работала лучше.

Результаты:

  • Оценка F1: 0,6953
  • Точность: 0,7188

Наивный Байес

Наивный Байес применяет теорему Байеса с «наивным» предположением об условной независимости между каждой парой признаков при заданном значении переменной класса. Наивная байесовская модель была самой быстрой, но и самой неэффективной моделью.

Результаты:

  • Оценка F1: 0,5602
  • Точность: 0,6875

Случайный лес

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

Результаты:

  • Оценка F1: 0,6862
  • Точность: 0,7188

Настройка гиперпараметров

В машинном обучении настройка гиперпараметров — это процесс выбора набора оптимальных параметров для алгоритма обучения. Гиперпараметр — это параметр, значение которого используется для управления процессом обучения, тогда как значения других параметров изучаются.

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

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

Результаты:

  • Оценка F1: 0,6862
  • Точность: 0,7188

Заключение/размышление

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

Анализ влияния на бизнес

Музыкальные стриминговые компании прекрасно об этом знают. Вы можете сказать, что это правда, если вы когда-либо пытались отменить подписку. Процесс обычно задает много вопросов, и, в зависимости от ваших ответов, он запускает определенный стимул, чтобы удержать вас в качестве клиента. Зная, что новые клиенты с большей вероятностью уйдут, было бы неплохо предложить расширенный период бесплатного доступа. Возможно до 90 дней. Как только клиент привыкнет к сервису, и, возможно, сервис привыкнет к клиенту, для клиента станет намного сложнее принять решение об уходе. В течение этого пробного периода, возможно, стоит получать награды или значки, когда пользователь достигает разных уровней использования (количество песен, воспроизводимых за сеанс или в день). Как было сказано ранее, чтобы сохранить вашу компанию по потоковой передаче музыки в списке активных компаний, а не в списке компаний, прекративших существование, если вы сможете улучшить свою способность прогнозировать отток и найти решения, чтобы удержать клиентов от оттока до того, как они дойдут до этого момента, это переводится в рентабельность бизнеса.

Улучшения

  • Рассмотрите другие алгоритмы машинного обучения, такие как K-ближайшие соседи или повышение градиента.
  • Создайте больше функций, чтобы учитывать продолжительность времени в качестве клиента и использования.
  • Использование полного набора данных для построения модели.

Репозиторий GitHub → Здесь