Наглядная математика: как рассчитать ценность пользователя с помощью интегралов
Младший геймдизайнер Nevosoft Руслан Герасим в своем блоге на Medium рассказал, как рассчитать среднее время жизни пользователя в проекте.
Часто люди, имея в наличии инструмент для расчета какого-либо показателя, используют его «на веру». Если известна его функция, то зачем углубляться в происхождение? Я считаю такой подход в корне неправильным. Специалист должен стремиться улучшать свои профессиональные навыки и разбираться в базовых и основополагающих моментах, ведь с этими знаниями придет возможность модифицировать и улучшать используемые методы.
Итак, напомню, что такое LTV (англ. Lifetime Value). Фактически это доход с одного пользователя за время его существования в проекте. Знание LTV позволит оценить окупаемость инвестиций (ROI), определить лучшие каналы трафика и так далее.
Безусловно, время «жизни» в игре у каждого пользователя разное, как и количество внесенных средств, поэтому целесообразно взять среднее время жизни игрока (LT) и средний доход в день (ARPDAU).
Из всего вышесказанного вытекает метод прогнозирования LTV, основанный на знании среднего времени жизни LT и дохода с одного пользователя в день.
Интегральные функции распределения (функции ухода и удержания)
Рассмотрим некоторую неотрицательную непрерывную случайную величину t, которая является временем до возникновения интересующего нас события, а именно до «смерти»?- ухода пользователя. Плотность вероятности этой величины обозначим F(t). Как будет показано позднее, вид этой функции нас не интересует.
Возьмем интегральный закон распределения величины F(t). Данная функция говорит нам о вероятности того, что событие произойдет на промежутке времени [0, T):
Таким образом, F(t) - функция ухода пользователя. Очевидно, значения этой функции лежат на промежутке от 0 до 1. Чтобы не было сомнений, рассмотрим пример. Будем отсчитывать время жизни проекта с нуля (то есть нулевой день - первый день жизни проекта). Пусть в нулевой день в игру пришло N человек - вероятность ухода пользователя равна 0 (в нулевой день уходов не происходит). В следующий день вероятность пользователя уйти составляет, например, 0,5. Умножая эту вероятность на N, мы получим количество ушедших человек.
Нетрудно догадаться, что функция удержания описывает вероятность события, обратного уходу:
S(t) - функция удержания, которая получается путем аппроксимации (приближения - прим. ред.) наблюдательных данных Retention?-?Days степенной функцией (ax^b). В общем случае данная функция называется Survival function (функция выживаемости). Она применяется для прогнозирования исходов в медицине, социологии и так далее.
S(t) - вероятность того, что событие произойдет на промежутке времени [T, +?), то есть не произойдет на [0, T):
Расчет lifetime
Перейдем непосредственно к расчету среднего времени, на котором произойдет уход пользователя - математическое ожидание величины t:
Заметим, что
Таким образом,
Интегрируем по частям:
Вспомним, что вероятность ухода в нулевой день равна F(0) = 0, а в последний день промежутка F(T) = 1 (все пользователи уйдут из проекта):
Следовательно,
В принципе, этого уже достаточно, чтобы посчитать среднее время жизни пользователя. Но мы привыкли работать не с уходом, а с удержанием (retention):
То есть среднее время жизни пользователя в проекте равно площади под функцией удержания:
Заключение
Остался последний шаг:
Теперь мы знаем, откуда берутся эти функции.
Используя инструмент, понимайте не только то, какой результат он выдаст, но и как он работает.