Введение

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

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

В этом проекте я использовал PySpark для анализа и прогнозирования оттока на основе набора данных о действиях клиентов вымышленной компании по потоковой передаче музыки Sparkify. Это игрушечный набор данных, относительно небольшого размера, поэтому его можно обрабатывать на локальном компьютере. Следовательно, чтобы имитировать реальный мир, мы используем Spark (в локальном режиме) для обработки данных и построения модели.

В этом сообщении блога я подведу итоги анализа и модели AI/ML, обученной прогнозировать отток.

Шаг 1: Исследовательский анализ данных

Обзор набора данных

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

Определение оттока

Отток был определен как пользователи, у которых страница = «Подтверждение отмены». В этом подмножестве 52 (23%) ушедших пользователя и 173 (77%) не ушедших.

Отток пользователей и не отток пользователей

Уровень пользователя.Бесплатных пользователей больше, чем платных, а процент оттока у бесплатных пользователей немного выше, чем у платных.

Используемое устройство. Windows и Mac являются наиболее часто используемыми устройствами, и доля этих пользователей примерно такая же, как и почти половина пользователей X11 Linux.

Шаг 2: Разработка функций

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

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

Шаг 3: Машинное обучение

Целью модели машинного обучения является прогнозирование оттока (метка = 1) по сравнению с отсутствием оттока (метка = 0).

Метрика оценки

Отток пользователей составляет только 23% всех пользователей, поэтому я выбрал показатель F1 в качестве метрики для оценки производительности модели.

Оценка F1 определяется как:

F1 = 2*точность*отзыв / (точность + отзыв)

где точность — это количество правильно идентифицированных оттоков из общего числа идентифицированных оттоков, а отзыв — это количество правильно идентифицированных оттоков из общего числа реальных оттоков.

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

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

  • Логистическая регрессия
  • Случайный лес
  • Дерево с градиентным усилением
Logistic Regression:
+-------+--------+
| f1_val| acc_val|
+-------+--------+
| 0.7047|  0.7666|
+-------+--------+
Random Forest:
+-------+--------+
| f1_val| acc_val|
+-------+--------+
| 0.8047|  0.8666|
+-------+--------+
Gradient Boosted Tree:
+-------+--------+
| f1_val| acc_val|
+-------+--------+
| 0.7703|  0.8000|
+-------+--------+

Модель случайного леса дает многообещающую производительность модели с показателем F1 = 0,80 и точностью = 0,86. Производительность модели можно дополнительно улучшить, настроив гиперпараметры и перекрестную проверку.

Лучшая модель

Наконец, я настроил гиперпараметры maxDepth и numTrees классификатора Random Forest.

Лучшая модель получила оценку F1 0,8144 и точность 89% на тестовом наборе.

+-------+--------+
|f1_test|acc_test|
+-------+--------+
| 0.8144|  0.8965|
+-------+--------+

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

Заключение

В этом проекте мы внедрили модель, пытающуюся предсказать отток клиентов. Мы удалили строки без идентификатора пользователя и преобразовали пол в двоичный числовой столбец. Мы создали 10 функций для запуска наших 3 моделей: логистическая регрессия, случайный лес и деревья с градиентным усилением. Мы сравнили производительность трех моделей и выбрали Random Forest для нашей окончательной реализации. Мы использовали перекрестную проверку и поиск по сетке, чтобы точно настроить нашу модель, чтобы достичь точности 89% и 0,81 балла F1.