Введение

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

Так что же такое показатель оттока?

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

В этой статье мы будем использовать Spark для выполнения масштабируемой обработки данных и задач машинного обучения для подмножества большого набора данных (12 ГБ на Amazon S3) на кластере/локальном компьютере Udacity и в IBM Watson Studio.

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

Проблема и мотивация

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

Мотивация состоит в том, чтобы получить доступ к работе/спорам с большими данными с использованием Spark через PySpark и Spark SQL. Изучение API машинного обучения Spark ML для разработки и настройки моделей.

Бизнес-проблема

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

Дополнительные факторы, которые следует учитывать -

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

Источник данных

Взаимодействие пользователя со службой, такое как воспроизведение песен, выход из системы, поднятие большого пальца, переход на более раннюю версию службы, а также демографическая и дополнительная информация будут регистрироваться.
Данные и структура для этого проекта предоставлены Udacity в рамках их Программа Data Science Nano Degree. Набор данных содержит около 12 ГБ данных о действиях пользователей.

Данные Анализ больших данных нереалистичен на локальной машине. Для этого анализа будет использоваться искровая среда IBM Watson Studio.

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

Загрузите данные в среду Spark. Начните с печати схемы фрейма данных.

Поведенческие данные отличаются от данных постобработки. Очистите данные, если информация UserId и SessionId недоступна.

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

Исходное исследование данных показывает, что функция «страница» регистрирует информацию о событии, которая имеет решающее значение для анализа данных.
Отток пользователей — это когда пользователь посещает страницу подтверждения отмены. Бинарная переменная Target будет создана с использованием события «подтверждение отмены» на странице.

Вот краткий обзор функции страницы со значением «Подтверждение отмены», из которого будет получена целевая переменная (отток).

Распределение признаков продемонстрировало асимметрию или несбалансированность данных.

Целевая переменная Churn также несбалансирована.

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

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

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

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

Точки данных:

Временная метка -› день, месяц, год
Активные дни аккаунта (дни с момента регистрации)
Действие страницы (двоичный столбец для каждого типа страницы - однократное кодирование)
Пол (двоичный столбец - кодировка метки )
уровень (двоичный столбец - кодировка метки)

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

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

Были использованы три алгоритма классификации из библиотеки Spark ML:

Логистическая регрессия
Классификатор случайного леса
Классификатор дерева с градиентным усилением

Производительность и улучшения

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

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

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

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

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

Параметры наиболее эффективной модели были настроены с использованием перекрестной проверки и поиска по сетке для параметров maxdepth и maxiter, и лучшая модель выбирается с maxdepth 7 и maxiter 20.

Ниже приведены показатели производительности настроенного GBTClassifier на тестовых данных.

Резюме шагов

Предварительная обработка данных. Удалены строки с недопустимыми идентификаторами user_Id и session_ID.
Исследовательский анализ данных.Выполнен исследовательский анализ данных для определения целевых переменных и их взаимосвязей.
Разработка признаков –извлечение информации из временной метки, преобразование двоичных объектов с использованием кодирования меток и многоклассовых объектов с использованием прямого кодирования.
Моделирование –создание конвейера с целью – индексирование строк, векторный ассемблер и применение модели. Для сравнения производительности использовались три модели.
Оценка и настройка. Из-за несбалансированного набора данных показатель F1 используется в качестве метрики для оценки и настройки гиперпараметров.

Вывод

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

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

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

Улучшения

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

Это подводит нас к концу нашего анализа! Мы нарезали, нарезали кубиками и разработали модель для прогнозирования оттока на основе данных.

Спасибо за чтение, и не стесняйтесь хлопать, если вам понравилось.

Связаться с автором

Подключиться к LinkedIn

Для получения дополнительной информации посетите Github