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

Все нормально, я профи.

Это борьба, с которой сталкивается большинство компаний: кто мой клиент? Только на часть этого вопроса можно ответить с помощью данных. Целевыми результатами этих усилий по сокращению являются LTV, активация, удержание, отток, повторное вовлечение и тому подобное. Когда вы имеете дело с пользовательской базой в 1,7 миллиарда человек (плюс-минус), определение закономерностей в поведении, которые имеют хоть какой-то смысл, практически невозможно и загромождено шумом. Пользователи ведут себя по-разному из-за каждого мыслимого нюанса — их музыкальных вкусов, их страны, времени года, их пола, подключаются ли они через социальные сети или любое количество нелепых классификаторов, которые рисуют картину вашей онлайн-жизни. Поведение гитаристов в стиле кантри отличается от поведения начинающего инженера-программиста. Владельцы студий йоги мало пересекаются с организаторами кулинарных шоу.

Борьба с этой большой и разнообразной группой пользователей с помощью одной тактики обречена на провал и возврат результата, который говорит нам о том, что что-то не так, но и не правильно (статистическая мантра), и, как описал его хороший друг свое знание статистики - "достаточно, чтобы быть опасным". На самом деле это много раз использовалось в качестве предостережения на уроках статистики о том, чего следует избегать любой ценой.

Здесь в игру вступает моя новая любимая техника — сегментация. Я поклонник кластеризации K-средних, которая представляет собой обычный метод сегментации для определения групп пользователей. K-means хранит центроиды, которые затем используются для определения и (надеюсь) очертания кластеров. Точка (в данном случае пользователь) помечается как часть кластера, если она ближе к центроиду этого кластера, чем центроид любого другого кластера.

Мой предпочтительный код был составлен Эндрю Нг из программы компьютерных наук в Стэнфорде и выглядит следующим образом:

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

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

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

Итак, что происходит, когда я запускаю это на выборке моей популяции?

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

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