Прогнозирование подписки в The Run Experience

Кевин Хартштейн - научный сотрудник программы Insight Data Science (зима 2020 г.). Он получил докторскую степень в области когнитивной неврологии в Дартмутском колледже. В его дипломной работе методы машинного обучения применялись к данным функциональной нейровизуализации, чтобы понять, как мозг интерпретирует идентичность объектов на фотографиях и рисунках.

В моем проекте Insight я сотрудничал с Ongo Science, стартапом из Сан-Франциско. Ongo - это платформа, которая создает приложения для создателей контента в сфере здоровья и хорошего самочувствия и облегчает поток информации к пользователям и от них. Большинство онлайн-экспертов по здоровью транслируют информацию по таким темам, как питание, медитация и спортивные тренировки, и подсчитывают лайки или читают комментарии, чтобы оценить их влияние. Ongo обеспечивает более подробное представление, предоставляя создателям контента представление о целях, прогрессе и проблемах их пользователей. Эта информация может помочь направить и настроить новый контент, а также повысить вовлеченность и влияние. Роль данных в персонализированном здоровье и благополучии возрастает. Фактически, по оценкам исследователей, средний человек за свою жизнь будет генерировать более 1 миллиона гигабайт данных о здоровье.

Будучи связующим звеном между устройствами, приложениями и экспертами, Ongo позиционируется, чтобы упростить процесс сбора и анализа данных, чтобы помочь людям вести более здоровый образ жизни. В своем консультационном проекте я проанализировал данные из The Run Experience, приложения Ongo, которое предоставляет контент, связанный с тренировками, предотвращением травм и гонками, а также персонализированный коучинг и центр сообщества для бегунов. Я использовал взаимодействие с приложением, а также данные со смартфонов и носимых устройств, чтобы предсказать, какие пользователи перейдут на премиальный план подписки. Название моего проекта основано на энтузиазме людей на протяжении всего фильма Форрест Гамп 1994 года, которые подбадривали главного героя криками Беги, Форрест, беги! Однако в данном случае цель состоит в том, чтобы побудить пользователей The Run Experience перейти с бесплатной версии на платную премиальную подписку.

Убегать…

Удержание пользователей - большая проблема для мобильных приложений: примерно 80% пользователей уходят в течение 3 дней после установки и 90% уходят в течение первого месяца. Хотя платные подписчики обычно составляют лишь небольшую часть пользователей большинства приложений, они с гораздо меньшей вероятностью покидают их, меняя в среднем 5–30% в месяц. Продление подписки от постоянных подписчиков является важным источником дохода - особенно для приложений на этапе запуска - и, по оценкам анализа Harvard Business Review, увеличение удержания всего на 5% может привести к долгосрочному увеличению доходов до 95%. . Приложения для здоровья и фитнеса особенно эффективны для удержания лояльных пользователей: 75% пользователей используют эти приложения не реже двух раз в неделю, а 26% - более 10 раз в неделю.

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

Фильтрация данных и разработка функций

Мне был предоставлен доступ к более чем 2 миллиардам строк данных, размещенных на Amazon Web Services, включая активность из приложения The Run Experience, а также данные GPS из трекера бега приложения и данные Apple HealthKit от пользователей iOS, которые связали свои учетные записи. Одна таблица данных также включала информацию о поставленной пользователем цели (относящейся к здоровью, предотвращению травм, гонкам и т. Д.) И истории подписок. Я отфильтровал данные примерно до 24 миллионов строк из описанной ниже совокупности пользователей и временно выровнял их по дате загрузки, чтобы агрегировать и исследовать активность в течение начального периода использования приложения.

Фильтрация

До запуска приложения с Ongo, The Run Experience уже был каналом №1 на YouTube для бега. Возможно, из-за предыдущего опыта работы с этим каналом многие пользователи приложений начинают премиум-подписку сразу после загрузки приложения. Run Experience также предлагает 7-дневную бесплатную пробную версию своих премиальных функций, и многие пользователи начинают ее с первого дня. Большинство из этих пользователей конвертируют в конце пробной версии. Пользователи продолжают подписываться в течение переменного периода времени после этого начального всплеска, поэтому я предположил, что те, кому требуется больше времени, чтобы принять решение, скорее всего, являются новичками в The Run Experience и, вероятно, основывают свое решение на взаимодействии с самим приложением, а не на предыдущем опыте работы с ним. содержание.

Определение проблемы

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

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

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

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

На основе этого большого количества данных я сконструировал 19 функций. К ним относятся показатели активности в приложении, такие как количество начатых сеансов видео и процент завершения, участие в программах и социальные взаимодействия, а также количество раз, когда пользователь совершил 500+ шагов в течение 30 минут или зарегистрировал повышенную частоту сердечных сокращений ( более 120 ударов в минуту) в течение 2-недельного периода обследования. Мои функции охватывают широкий набор пользовательского поведения, но будущие итерации этого проекта могут включать функции, разработанные на основе более мелких деталей в данных, таких как фактический текст комментариев; расстояние, время и высота пробежек с GPS-отслеживанием; и поминутную среднюю частоту сердечных сокращений.

Выбор функций и сравнение моделей

Я сравнил модели логистической регрессии и случайного леса для прогнозирования подписки. Логистическая регрессия оценивает логарифмическое отношение шансов метки двоичного класса (в данном случае подписчик или не подписчик) с использованием линейной комбинации независимых переменных. Сильной стороной этой модели является то, что веса, которые модель изучает для этих функций, могут определять интерпретацию того, как отдельные функции влияют на прогноз. К сожалению, коррелированные функции могут маскировать эффекты друг друга, что приводит к низкому весу прогнозных функций. Классификация случайного леса представляет собой нелинейную ансамблевую модель, в которой используется пакетирование и случайная выборка признаков для построения леса деревьев решений, каждое из которых вносит свой вклад в окончательный прогноз. Агрегирование информации по некоррелированным деревьям увеличивает надежность модели и разделяет важность между коллинеарными функциями, но приносит в жертву простоту интерпретации, хотя важность функции все еще может быть извлечена из модели с использованием таких показателей, как важность Джини.

Пакет Python scikit-learn предоставляет простые реализации обеих этих моделей вместе с функциями для перекрестной проверки и оценки. Я начал с разделения данных на разделение 60/20/20 поездов / проверки / тестирования. Я использовал 5-кратное перекрестное устранение рекурсивных функций (с использованием scikit-learn RFECV) для данных обучения, чтобы выбрать функции для каждой модели, разделив долю подписчиков и не подписчиков в обучении и тестировании. данные в каждом сгибе. Поскольку подписчиков было гораздо меньше, чем не подписчиков, я взвешивал классы пропорционально их обратной частоте, используя параметр class_weight = «сбалансированный» при инициализации каждой модели. Поскольку с точки зрения бизнеса важно точно идентифицировать как подписчиков, так и не подписчиков, я использовал w взвешенный показатель F1 (сочетание точности и запоминания, взвешенных по частоте и комбинированных и между классами) в качестве метрики для оценки. Эта процедура показала оптимальное количество из 6 функций для логистической регрессии и 12 для случайного леса.

Я переобучил каждую модель по всем обучающим данным, используя рекурсивное исключение функций с выбранным количеством функций. На этом этапе я также использовал SMOTE, чтобы справиться с дисбалансом классов в данных. SMOTE создает новые экземпляры класса меньшинства в обучающих данных, используя алгоритм k-Nearest-Neighbours для поиска точек в пространстве функций, близких к реальным экземплярам этого класса, повторяя этот процесс до тех пор, пока число положительных и отрицательных классов (подписчики и не подписчики) в обучающих данных равны. Я сравнил две модели, оценив производительность на данных проверки. Random Forest показал лучшие результаты: взвешенный показатель F1 составил 0,74 по сравнению с 0,65 для логистической регрессии. В этом есть смысл, поскольку большая часть данных состояла из подсчетов для различных типов активности. Моделирование случайного леса особенно хорошо подходит для такого рода данных, поскольку оно продолжается путем нахождения информативных точек разреза в пределах диапазона значений для каждого объекта в каждой ветви деревьев решений, составляющих лес. Этот нелинейный подход, вероятно, приведет к улучшенному соответствию по сравнению с предположениями о линейности, неявными в логистической регрессии.

Окончательная оценка модели

Для окончательной оценки модели я обучил модель случайного леса на данных, объединенных в наборы для обучения и проверки, и снова использовал SMOTE, чтобы устранить дисбаланс классов. Я использовал те же функции, которые были выявлены на этапе сравнения моделей, и оценил модель на проведенном тестовом наборе. Окончательная модель показала неплохие результаты: взвешенный показатель F1 0,79 и точность 0,78.

Модель показала особенно хорошие результаты при выявлении не подписчиков (Precision = .87 , Recall = .86), предполагая, что эта модель будет полезна для выявления пользователей, которые вряд ли подпишутся. несмотря на относительно высокий уровень общей активности. Ongo и The Run Experience могут использовать эту модель для стимулирования этой группы населения к конверсии, возможно, предлагая дополнительные стимулы, такие как льготная ставка или предварительный просмотр премиальных услуг коучинга.

Важность функций и полезные советы

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

Эти функции довольно хорошо отслеживаются интуицией - пользователи, которые начали и завершили тренировки или имеют доказательства более высокой физической активности, как правило, придерживаются приложения. Однако, что несколько противоречит интуиции, первоначальные цели пользователей не предполагали возможной подписки и были устранены на этапе выбора функций. Это указывает на то, что различия в целях обычно не связаны с изменением вероятности подписки, по крайней мере, в выборке, рассмотренной в моем проекте. Социальные взаимодействия также не были очень предсказуемыми, хотя эти взаимодействия были довольно редкими. Еще один способ воплотить это понимание в жизнь - это для Ongo и The Run Experience побудить пользователей сосредоточиться на том, чтобы приступить к тренировкам и сразу же бегать, вместо того, чтобы тратить время на прокрутку платформы сообщества. Хотя неясно, является ли связь причинной, пользователи, которые следуют этому шаблону, с большей вероятностью подпишутся.

Мне интересно узнать, сохраняются ли закономерности, наблюдаемые в данных Apple HealthKit, для пользователей, которые подписываются сразу после загрузки приложения. Как только пользователи связывают свой HealthKit, ранее записанные данные о количестве шагов, частоте пульса и весе становятся доступными для The Run Experience. Эти данные могут различать, связана ли загрузка приложения с увеличением активности или подписчики уже имеют тенденцию быть более активными, чем не подписчики, до загрузки приложения.

Мой окончательный результат включает рабочий процесс, реализованный в блокноте Jupyter, который получает данные из корзины Ongo S3 на AWS; очищает, предварительно обрабатывает и временно выравнивает его по дате загрузки приложения; и разрабатывает функции из данных Apple HealthKit и действия в приложении Run Experience. Затем данные вводятся в модель, чтобы спрогнозировать вероятность подписки для активных пользователей приложения, которые не подписались после начального периода использования.