Введение

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

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

Обзор

В этом проекте мы сосредоточимся на платформе потоковой передачи музыки под названием Sparkify. Первоначальная работа сосредоточена на крошечном подмножестве (128 МБ) больших данных, доступных в Интернете (12 ГБ).

Ключевые вопросы, на которые необходимо ответить:

- Какие действия пользователи чаще всего выполняют на платформе Sparkify?

- Какие ключевые черты поведения личности отличают людей, которые сбиваются и не сбиваются?

- Есть ли важное гендерное несоответствие?

- Насколько хорошо мы можем предсказать, может ли данный пользователь покинуть платформу Sparkify или нет?

- Когда отправлять нашу маркетинговую коммуникацию людям, которые, скорее всего, уйдут?

Давайте погрузимся прямо в…

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

Схема набора данных показывает структуру данных и доступные столбцы.

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

Описание столбца

  • Исполнитель: содержит информацию об исполнителе песни, которую в данный момент играет данный пользователь.
  • пол: гендерная информация
  • itemInSession: количество взаимодействий с пользователем по sessionId
  • уровень: есть ли у пользователя платная подписка или это пользователь бесплатного уровня
  • страница: тип активности
  • песня: песня, которая играет в данный момент
  • ts: временная метка эпохи
  • userId: уникальный идентификатор пользователя

Первоначальная цель — предсказать, может ли пользователь уйти, поэтому нам нужны только пользователи, у которых userId не NaN. Набор данных Sparkify описывает новичков и посетителей с «пустым» значением в столбце userId. Логично избавиться от любых строк, где userId = ‘ ‘

Какие действия пользователи чаще всего выполняют на платформе Sparkify?

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

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

Определить отток на основе события подтверждения отмены

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

- Какие ключевые черты поведения личности отличают людей, которые сбиваются и не сбиваются?

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

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

- Есть ли важное гендерное несоответствие?

  • Удивительно, но мужчин среди пользователей больше, чем женщин.
  • Хотя разница незначительна, пользователи-мужчины чаще покидают платформу.
  • В среднем пользователи женского пола больше взаимодействуют с платформой. Мы можем видеть это по количеству песен, песен, которые понравились и не понравились.

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

Разработка функций

В результате мы придумали 10 функций для включения в наш окончательный фрейм данных искры для моделирования.

  1. Общее количество песен, прослушанных пользователем (числовое)
    Функция, отвечающая за расчет общего взаимодействия пользователя с платформой.
  2. Старшинство (числовое)
    Как долго данное лицо является пользователем платформы Sparkify?
  3. Песни, добавленные в плейлист (числовой)
    Можно предположить, что если пользователь прилагает усилия для настройки в соответствии со своими предпочтениями, скорее всего, он достаточно наслаждается платформой, чтобы тратить свое время.
  4. Полученные лайки (числовые)
    Из части EDA мы могли видеть различия в поведении между случаями оттока и отсутствия оттока.
  5. Количество поставленных дизлайков (числовое)
    То же, что и для поставленных лайков.
  6. Общее время прослушивания (числовое)
    Можно предположить, что общее время прослушивания коррелирует с общим количеством прослушанных песен, но мы должны учитывать пользователей, которые слушают подкасты, а не музыку. В таких случаях время прослушивания будет большим по сравнению с общим количеством прослушанных песен.
  7. Добавлено друзей (число)
    Наслаждаться музыкой или любым другим занятием с любимыми считается как два.
  8. Пол (бинарный)
  9. Среднее количество песен, прослушанных за сеанс (числовое)
    Постоянное использование платформы в целом должно показывать интерес к контенту, предоставляемому Sparkify.
  10. Уникальные исполнители (числовые)
    Это фактически относится к любым медиа-платформам. Вы когда-нибудь смотрели фильм, потому что в нем снимался ваш любимый актер? Да… Я тоже.
    Это идеально подходит для платформы потоковой передачи музыки. Если в Sparkify есть исключительно исполнители, которых вы любите, скорее всего, это относится к более высокой лояльности.

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

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

1. Базовая модель
При большой асимметрии класса логично проверить базовую точность, сравнивая все 1 и все 0 с фактическим результатом маркировки.

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

2. Логистическая регрессия
Логистическая регрессия действительно хорошо справляется с прогнозированием оттока с общей точностью 0,76 и показателем f1 0,7
Кроме того, для обучения модели требуется 177 секунд.

3. Метод опорных векторов (SVM)
SVM показал себя не так хорошо ни по одному показателю оценки модели.

4. Random Forest
Старый добрый RF не перестает меня впечатлять. Мало того, что он показывает отличную точность (0,83) и f1-score (0,81), но, скорее всего, он безумно эффективен по времени, чтобы тренироваться со 151 секундой, необходимой для мощности нашего сервера.

4. Деревья с градиентным усилением (GBT)

Наша последняя модель — GBT. Он не так хорошо работает с параметрами по умолчанию (можно быть уверенным, что GBT будет работать намного лучше с небольшой настройкой).
Тем не менее, это действительно трудоемкая модель для обучения.

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

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

В процессе настройки мы сосредоточимся на двух параметрах.

Из-за нехватки ресурсов мы в основном сосредоточимся только на двух параметрах для точной настройки. maxDepth (глубина каждого дерева в лесу) и numTrees (количество деревьев в лесу)

.addGrid(rf.maxDepth, [5,10])

.addGrid(rf.numTrees, [5, 20])

Окончательная модель с лучшим набором параметров
Наша окончательная модель с лучшими параметрами показала впечатляющие результаты с точностью 0,88 и показателем f1 0,87.

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

Что дальше?

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

- Когда отправлять нашу маркетинговую коммуникацию людям, которые, скорее всего, уйдут?

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

Вывод

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

Является ли стаж лучшим фактором для учета?

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

Это проблема, связанная с временными рядами?

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

А как насчет личностных качеств?

Можно предположить, что люди, которые слушают метал, менее склонны к оттоку, чем те, кто слушает поп-музыку.

Географические и культурные различия

Некоторые страны и культуры легче сделать счастливыми, и наоборот.