Несмотря на то, что инвесторы по-прежнему проявляют большой интерес к цифровому здравоохранению с рекордными инвестициями в размере 8,1 млрд долларов США в 2018 году, 90% стартапов цифрового здравоохранения потерпели неудачу в течение пяти лет. Основная причина их неудач — неспособность понять пользовательскую базу и выгодно привлекать и удерживать клиентов. В Insight я работал над консультационным проектом с местной стартап-компанией, которая создала платформу, помогающую экспертам в области здравоохранения создавать привлекательные цифровые сообщества. Цель проекта — проанализировать существующую базу пользователей в одном из созданных ими приложений для здоровья и попытаться разделить их на группы, которые прогнозируют результаты удержания, и построить прогностическую модель для оценки параметров, которые, скорее всего, способствуют удержанию. В этом блоге я опишу, как этот проект использует кластеризацию для сегментации пользователей и как использовать прогностические модели для оценки важности параметров.

Анализ существующей пользовательской базы и сегментация пользователей

Инжиниринг и исследование данных

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

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

Кластеризация

После того, как я нормализовал данные, я сначала применил анализ главных компонентов (PCA), чтобы уменьшить размерность данных. Результат показан ниже:

Как показано выше, PCA не показывает четкого разделения пользователей. Поэтому я перешел на использование T-распределенного стохастического встраивания соседей (T-SNE). Дендрограмма для T-SNE показана ниже:

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

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

Построить прогностическую модель

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

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

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

Сводка

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