прогнозирование ltv машинное обучение

Прогнозируем LTV в Экселе или «Машинное обучение на коленке»

Jun 6, 2016 · 4 min read

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

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

Если, вд р уг, ваш бизнес молодой, и данных за год пока нет, — ничего страшного. Постройте прогноз на тот период, за который данные есть.

Шаг 1: достаньте данные

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

Позже попросите программиста выгрузить ваши данные в таком же формате. Покажите этот файл как пример.

Шаг 2: посчитайте выручку на каждого пользователя

Когорты, в которых больше людей, скорее всего, принесут больше денег просто потому, что там больше людей. Единственный вывод, который вы сделаете из модели: “нужно больше покупателей”. Не очень полезно. Вместо этого спрогнозируем среднюю выручку с покупателя. Для этого поделим итоговую выручку с когорты на количество людей.

Шаг 3: постройте график

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

Каждая точка на графике — одна когорта. По оси X — выручка за месяц. По оси Y — выручка за год.

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

Вопрос в том, на сколько больше?

Шаг 4: строим модель

Мы всего в паре шагов от победы. Добавьте на график линию тренда. И не забудьте вывести на экран формулу графика.

Получившаяся формула — и есть нужная нам модель. Напомню, что Y — LTV за год, а X — LTV за первый месяц. То есть:

LTV за год = 4.67 * LTV за месяц – 0.72

«Леша, ты хочешь сказать, что можно вот так вот спрогнозировать выручку за год с помощью сложения и умножения? Не может быть!»

Именно так. Но мы еще не закончили. Остался последний шаг.

Шаг 5: оцениваем точность модели

Под формулой есть показатель R^2. Он показывает, на сколько хорошо модель описывает имеющиеся данные. 0.93 означает «чертовски хорошо описывает».

Но нам гораздо интересней знать, с какой точностью модель прогнозирует будущее.

Скажу сразу, моделей со 100% точностью не бывает. Вообще.

Чтобы оценить точность модели, разделим имеющиеся данные на 2 группы: обучающую и тестовую.

Обучающую группу пометим нулем, тестовую — единицей.

На основе обучающей группы построим модель: добавим график с линей тренда и получим формулу.

Формула немного изменилась. Это нормально.

LTV за год = 5 * LTV за месяц — 1.72

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

На графике голубая линия — реальный LTV каждой когорты, а оранжевая — прогноз, результат работы модели. Смотрите, как они близко.

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

Вернемся к тому, зачем мы все это делали?

Напомню, что вам нужно принять решение, продолжать ли рекламную кампанию.

Подставим значения в модель:

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

P.S. Естественно, периоды 30 и 365 дней можно менять на любые другие. Я, например, часто прогнозирую первый месяц по первому дню.

Приглашаю на онлайн-курс по аналитике

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

Источник

Простота и точность: как спрогнозировать LTV для игр, если вы не Data Scientist

Хэн Карни, Data Science Director в Plarium Herzliya

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

Существует немало способов расчета этого показателя для продукта, в частности для игрового: начиная от рассмотрения сегментов игроков, т. е. совокупности их основных признаков (география, платформа, источник привлечения и т. д.) до расчета такого показателя по каждому отдельному игроку. Выбранный способ также влияет на уровень сложности и точности прогноза. С точки зрения сегментов можно прибегнуть к математическому расчету и получить показатель, отвечающий среднему доходу от среднестатистического игрока в данном сегменте. Если брать игры с механизмами монетизации, то нужно умножить средний платеж на количество платежей, которые игрок совершит за всё время до его ухода из игры (для получения более подробной информации ознакомьтесь с моделью «Buy Till You Die», разработанной в 1987 г.).

Читайте также:  под гипнозом с владимиром ефимовым

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

Несомненно, прогнозирование с помощью машинного обучения – это гораздо более точный метод, чем любой высокоуровневый расчет. Оно позволяет проводить различие между типами игроков и выявлять тенденции в их манере игры, которые затем можно использовать для оценки других аспектов. Можно определить, как долго пользователи будут играть в игру, насколько хорошо они в ней разберутся, сколько времени и усилий они потратят на накопление своих внутриигровых ресурсов, а также как новые версии, функциональности и игровые пакеты повлияют на всё вышеуказанное. Тем не менее такие модели требуют слишком много времени и ресурсов на разработку (огромный объем данных и мощное оборудование для их обработки) и, конечно же, специалиста, который знает, как связать все эти данные в прогноз.

Поэтому, в зависимости от задачи и имеющихся ресурсов, каждый разработчик игр должен определиться, насколько расчет LTV отвечает его потребностям, а также сколько времени и усилий он готов вложить в него. К счастью, в большинстве случаев достаточно обычного высокоуровневого расчета. Если выполнить его правильно, он будет очень точным – допустимая погрешность не будет превышать 10 %.

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

Что нужно для расчета LTV в сегменте?

Жизненный цикл. Необходимо определить время, которое игрок проведет в игре, а для этого нужно понять его активность и объективный срок, во время которого будут происходить платежи вплоть до ухода игрока. Условно назовем это «жизненным циклом» игрока. В зависимости от игры, он может составлять неделю, месяц или даже несколько лет.

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

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

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

Если в наличии есть данные за 5–6 месяцев и больше, еженедельной или ежемесячной гранулярности будет достаточно (в зависимости от изменчивости вложений игрока). Если есть данные за меньший период, лучше остановиться на ежедневной или еженедельной гранулярности.

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

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

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

Взаимосвязь между доходами принимается исходя из логарифмического уравнения, которое выглядит примерно так:

График, который показывает прогноз LTV на 180 дней исходя из первых 60 дней

Хотя первые 60 дней ARPU (средний доход на пользователя) основаны на реальных данных, остальные 120 дней основаны на натуральном логарифмическом уравнении ln(x), которое получено на основе реальных данных.

Читайте также:  There is no pit partition что делать

Порядок выполнения расчета

Первый этап. Необходимо взять данные, на основе которых будет проводиться расчет. Это может быть ARPU или ROAS (окупаемость расходов на рекламу). Затем нужно выбрать гранулярность расчета (ежедневная/еженедельная/ежемесячная) и разбить ее по когортам. Если брать 3 месяца ежедневных данных, то в итоге получим 90 столбцов ARPU (D0 ARPU, D1 ARPU, …, D90 ARPU) и 90 строк (за каждый день).

Приведем пример ежедневных данных об ARPU:

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

Третий этап. Нужно удалить 3–5 верхних и 3–5 нижних дат с максимальными и минимальными значениями. Так мы исключим 5 % верхних и 5 % нижних выпадающих показателей, которые могут исказить среднюю тенденцию.

Четвертый этап. Выполним расчет по логарифмическому уравнению с конкретными днями из наших данных. Это можно сделать с помощью Excel, R, Python (особенно подойдут инструменты matplotlib.pyplot и scipy.optimize curve_fit) или любой программы для статистического анализа (например, SPSS или MATLAB) в зависимости от ваших предпочтений.

Независимо от выбранного способа, регрессия предусматривает следующую формулу:

x – количество дней, например x = 3 для 3-го дня ARPU;
y – итоговый ARPU за конкретный день x, например результат уравнения за 61-й день.

Исходя из данных выше была выведена следующая логарифмическая формула:

Таким образом, вышеприведенную формулу можно использовать для прогнозирования ARPU за 60+ дней. Мы будем использовать вычисленное среднее значение за первые 60 дней в качестве реальных данных, а затем продолжим со следующими днями, принимая x за соответствующий день.

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

Остается только поиграть с данными, разделить их на сегменты, выявить отличия и сравнить данные с ценой за установку (CPI), чтобы определить прибыльность игры.

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

А теперь попробуйте выполнить расчеты самостоятельно!

Источник

Применяем data science для определения жизненного цикла клиента

Привет, Хабр! Представляю вашему вниманию перевод моей статьи «Understanding the Customer Lifetime Value with Data Science».

Взаимоотношения с клиентами важны для каждой компании и играют ключевую роль в росте бизнеса. Одна из наиболее важных метрик в этой сфере — пожизненная ценность клиента (customer lifetime value, далее LTV) — предсказание чистого дохода, связанного со всеми будущими отношениями с клиентом. Чем дольше клиенты продолжают пользоваться продуктами компании, увеличивая прибыль, тем выше их LTV.

Есть много маркетинговых статей, о том, как важны LTV и сегментирование клиентов. Но, как Data Scientist’а, меня больше интересуют формулы и я хочу понимать, как модель на самом деле работает. Как предсказать LTV, используя только 3 признака? В этом посте я покажу некоторые модели, которые используются для маркетинговой сегментации клиентов и объясню математику, на которой они основаны. Здесь будет много формул, но не переживайте: все уже готово в библиотеках Python. Цель этого блога показать, как математика делает всю работу.

Beta-geometric/negative binomial модель для определения вероятности, что клиент “жив”

Рассмотрим такой пример [из онлайн-сервиса для заказа поездок (такси) по городу]: пользователь зарегистрировался 1 месяц назад, сделал 4 поездки и последняя поездка состоялась 20 дней назад. Основываясь только на этих данных, эта модель может предсказать вероятность, что клиент будет активен в течение определенного периода времени (как показано на графике), а также число транзакций в будущем (которое является основой для понимания ценности клиента в течение всей его “жизни” — взаимоотношений клиента и компании).

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

Эта модель была предложена Fader, Hardie and Lee и называется Beta Geometric / Negative Binomial distribution model (BG/NBD).

BG/NBD модель обладает такими свойствами:

Когда пользователь активен, количество его транзакций за период t описывается распределением Пуассона с параметром транзакций λ.

Читайте также:  отчет по практике классное руководство в начальной школе

Распределение Пуассона помогает предсказать происходящие события, используя данные о том, как часто события происходили в прошлом. Например, если пользователь делал в среднем 2 поездки в неделю ( на графике ниже), то вероятность того, что он сделает 3 заказа на следующей неделе равна 0.18.

Гамма распределение подходит для процессов со временем ожидания между событиями с распределением Пуассона (в нашем случае для параметра транзакций λ). Например, рассмотрим пользователя, который делает в среднем 2 транзакции в неделю. В таком случае, вероятность того, что время ожидания до того, как пользователь сделает 3 покупки будет больше 4 недель, равна области на графике справа от вертикальной пунктирной линии (под голубой линией распределения) — 0.13.

Геометрическое распределение похоже на Бернулли исходы и используется для моделирования количества исходов до (и включая) первый успешный исход. Если для некоторого пользователя , то его вероятность быть неактивным после 3 транзакций равна 0.12 (синяя линия на графике).

Бета распределение лучшим образом подходит для представления вероятностных распределений вероятностей — случай, когда мы не знаем вероятность заранее, но у нас есть некоторое обоснованные априорные предпосылки, описываемые α и β (мат. ожидание Бета распределения .

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

Математическая нотация для признаков пользователя X:

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

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

Вероятность быть активным:

Ожидаемое число транзакций:

где — гипер-геометрическая функция Гаусса

Гамма-гамма модель для оценки LTV

До этого момента, мы использовали только частоту и недавность покупок клиента. Но в дополнение к этому, мы можем применить денежную составляющую его транзакций. Добавим новые данные в наш пример: пользователь сделал эти 4 поездки по цене 10, 12, 8, 15. Гамма-гамма модель помогает предсказать наиболее вероятную ценность транзакции в будущем.
Суммирую все вместе, теперь у нас есть все элементы, чтобы определить LTV клиента:

LTV = ожидаемое число транзакций цена транзакии маржа

где первый элемент из BG/NB модели, второй — из Гамма-гамма модели, а маржа устанавливается бизнесом.

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

Свойства Гамма-гамма модели:
Денежная ценность транзакций пользователя случайна и находится в пределах их средних транзакционных ценностей.

Средняя ценность транзакции варьируется среди пользователей, но не варьируется для конкретного пользователя во времени.

Средняя ценность транзакции имеет Гамма распределение среди пользователей.

В статьях подробно описывается вывод формулы через еще несколько Гамма распределений. В итоге получается:

где p параметр формы и v параметр масштаба гамма распределения для транзакций параметр формы и параметр масштаба для гамма распределения v (допущение модели, что p постоянно — коэффициенты вариации на индивидуальном уровне одни и те же для пользователей). Чтобы найти параметры модели, мы можем использовать метод максимума правдоподобия.

Мы закончили с математикой и теперь мы можем оценить LTV пользователей. Но что насчет точности этой модели?

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

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

График показывает распределение реальных и предсказанных транзакций для данных из тестовой группы: ошибка здесь составляет 2.8%.

Как применять

Как я говорила в начале, все модели уже имплементированы. Например, библиотека Python “lifetimes” содержит все функции и метрики, необходимые, чтобы определить LTV. Детально написанная документация содержит много примеров и объяснений. Там также есть примеры sql запросов, чтобы получать данные в необходимом формате. Так что приступить к работе можно всего за несколько минут.

Заключение

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

Я хочу заметить, что иногда можно отойти от часто используемых gradient boosted trees и попробовать другие подходы, которые имеют сравнимый уровень точности. Статистическое обучение все еще может быть использовано на практике и может помочь бизнесу лучше понимать клиентов.

Источник

Образовательный портал