Як спрогнозувати LTV юзера в перший день його життя

💡 Усі статті, обговорення, новини про продукти — в одному місці. Приєднуйтесь до Product спільноти!

Усім привіт. Мене звати Олександра Візер, я Product Analyst в IT-компанії Futurra Group. Сьогодні хотіла б розповісти про простий і водночас ефективний алгоритм прогнозування виторгу з одного юзера, який я використовую у своїй роботі.

Важливість прогнозування LTV користувача важко переоцінити. Якщо монетизація проєкту передбачає модель підписки, на початковому етапі без прогнозування неможливо якісно оцінити успішність бізнесу.

Така модель передбачає довготривале користування продукту юзером і, відповідно, поступове надходження коштів. А отже, прогнозування є критичним для розуміння періоду окупності когорти.

Щобільше, чим швидше ми розуміємо LTV юзера, тим швидше бізнес може реагувати на можливі проблеми і коригувати свою роботу. Тож постає питання: як саме можна спрогнозувати LTV юзера на місяць, рік чи навіть 2 роки вперед?

У статті я поділюся своїм досвідом, отриманим в рамках роботи з флагманським продуктом нашої компанії MathMaster — кросплатформного сервісу для розв’язку та вивчення математики.

Для початку

Почнемо з основоположних речей: що ж таке LTV і навіщо його взагалі треба аналізувати.

LTV (Lifetime Value) — це загальний виторг з юзера за весь період його користування продуктом. Стандартна формула розрахунку виглядає так:

де Customer Value — середній чек юзера за певний період (днів, місяців чи років), а Average Customer Lifespan — кількість тих самих періодів, коли юзер користується сервісом.

По факту LTV юзера відображає те, скільки і як довго юзер готовий платити за користування сервісом. Тож не дивно, що це одна з основних продуктових метрик для аналізу юніт-економіки.

Загалом підходів до прогнозування LTV є безліч: починаючи від усереднених значень по галузі, які закладаються в прогноз, закінчуючи моделями ML.

Частина моделей передбачає прогнозування безпосередньо виторгу, який має принести юзер, спираючись на його поведінку. Інші ж працюють над аналізом ретеншену, тобто % юзерів, які продовжують користуватись продуктом протягом певного часу.

В MathMaster ми зосередились на другому варіанті. Маючи підписочну модель, де є чітка ціна, що ребілиться з юзера з певною періодичністю, для розрахунку LTV достатньо спрогнозувати кількість ребілів, яку юзер зробить за весь час.

Ретеншн-крива (Retention curve)

Замість того, щоб прогнозувати ймовірність наступного ребілу для кожного користувача, ми вирішили аналізувати когорти юзерів.

Маючи чітку цільову аудиторію, що не змінювалась з часом, наші користувачі максимально схожі один на одного за своїми поведінковими звичками, тому прогнозування виторгу зводиться до когортного аналізу.

За когорту я брала юзерів, що прийшли в застосунок в один день з одного пулу країн та мають однакову підписку.

Очевидно, що з кожним наступним ребілом кількість юзерів в когорті ставатиме все меншою, допоки вона не вийде на своєрідне плато і буде ребілитись вже з мінімальним відтоком користувачів.

Загалом ретеншн-крива когорти юзерів при моделі з підпискою в більшості випадків має схожу на цю динаміку:

Типова ретеншн-крива

Таку тенденцію гарно описує рівняння експоненційної кривої. Підібравши правильні коефіцієнти, це рівняння може досить чітко спрогнозувати подальші періоди.

Якщо праву і ліву частини рівності логарифмувати, то отримаємо модель, з якої можна розрахувати необхідні нам коефіцієнти.

Побудувавши і оцінивши регресію (середовище, де це можна зробити, обирайте за вашим бажанням, це може бути R, Python чи навіть звичайний Excel), можна обрахувати коефіцієнти для експоненційної кривої.

Коефіцієнт при регресорі і є необхідним для нас коефіцієнтом b. Коефіцієнт a визнається за формулою a= eln (a), де ln(a) — константа в регресії.

Таким чином, побудувавши достатньо просту модель, отримуємо можливість прогнозувати ретеншн-криву на необхідний нам період.

На наступному малюнку відображено мої дослідження щодо того, чи є експоненційна крива вдалим вибором для прогнозу ретеншн-кривої.

Порівняння фактичних даних з прогнозованими

Як бачимо, модель досить точно відтворює динаміку ретеншн-кривої. У своєму прикладі за x я брала номери ребілів, тобто кожен наступний період я отримую % юзерів з когорти, які мають заребілитись.

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

Значну увагу слід також приділити адекватності побудованої моделі. Чим менше у вас даних, тим модель буде гіршою, а прогноз, відповідно, менш точним. Тож виникає питання: скільки треба даних, щоб модель була адекватною?

Мінімальна кількість даних обирається, в першу чергу, відповідно до значень p-value вашої моделі, а також в залежності від бажаної точності прогнозу.

Розмір вашої когорти також є критичним. Умовно кажучи, якщо на першій точці у вас 10 юзерів, то навряд вийде побудувати гарну модель. В такому випадку варто віднайти баланс між деталізацією, яку ви хочете враховувати, і точністю моделі.

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

Отже, така схема дозволяє прогнозувати кількість ребілів, яку зробить когорта користувачів за певний проміжок часу (в моєму випадку, це 2 роки). Це простий спосіб прогнозування, який не потребує великих ресурсів для реалізації, при чому точність такого прогнозу може досягати 95%.

Проте є і недоліки. В першу чергу, треба мати чималу кількість даних (для себе ми обрали період в 6 місяців), щоб побудувати якісну модель.

По-друге, якщо у когортах невелика кількість юзерів, ви не зможете отримати точний прогноз.

Ланцюгові коефіцієнти (Chain coefficients)

Що ж робити з когортами, які живуть недостатній для побудови моделі період? Перший (і найпростіший) спосіб — брати усереднену криву за тими когортами, за якими даних вже достатньо. Проте, якщо ваш продукт змінювався, ви вже не можете покладатись на давні періоди.

В моєму кейсі усереднена крива давала досить посередні результати за першими періодами життя когорти. Це мало величезний вплив на прогноз, адже специфіка моделі монетизації з підпискою полягає в тому, що більшість юзерів відвалюється саме на початкових етапах і лише з часом ретеншн-крива досягає певного плато.

Саме перші періоди життя юзера приносять найбільше велью, тому, якщо вони погано спрогнозовані, весь прогноз буде дуже неточним. Тож для нових когорт я застосувала інший спосіб прогнозування утримання юзерів — ланцюгові коефіцієнти.

Вони дозволяють за максимально «свіжими» даними обрахувати ретешн-криву. Суть способу полягає в тому, щоб визначати ретешн на кожен період окремо за останніми відомими когортами. Тобто для кожного ребілу буде свій пул когорт, за яким вираховуватиметься рейт.

Спробую пояснити наочніше:

Випадковий приклад когортних даних

На зображені бачимо приклад когортних даних за ребілами (припустимо, що ребіли відбуваються кожного дня). Колонки вказують на номер ребілу, рядочки — на когортну дату. Очевидно, що чим новіша когорта, тим менше у неї ребілів.

Щоб порахувати конверсію в другий ребіл, ми можемо використовувати всі надані когорти. А от вже для третього ребілу остання когорта не підходить, бо вона ще не дожила до цього періоду і даних за ним немає.

Отже, для обрахунку цього рейта слід брати інформацію за всіма когортами, за якими є дані за відповідний ребіл (тобто всі, крім останньої). Таким чином обраховується % юзерів, що зробили ребіл відносно всіх юзерів, що зробили попередній.

Отримавши ретеншн-рейти від попередніх ребілів, легко можна звести все до однієї ретеншн-кривої (домноживши кожен рейт на попередній, починаючи з другого).

Так виключно на основі історичних даних вибудовується ретеншн-крива. З очевидних плюсів цього способу — його простота. Проте він навряд підійде для прогнозування на довгий період, адже необхідна велика кількість даних. Тож якщо ви їх не маєте на потрібний вам період, слід обрати інший варіант.

Результат (Forecasted curve)

В MathMaster для прогнозування виторгу з когорти, ми задіюємо два способи: моделювання експоненційної кривої та ланцюгові коефіцієнти.

Для «нових» когорт за допомогою ланцюгових коефіцієнтів будується прогноз на перші 6 місяців, аби враховувати найрелевантніші «свіжі» дані. Вже потім накладається усереднена крива за «старими» когортами, що вибудовується за допомогою експоненційної моделі.

На графіку нижче зображена ретеншн-крива для юзерів, що встигли лише взяти підписку в застосунку.

Спрогнозована ретеншн-крива на 104 біли (2 роки тижневої підписки)

Такий спосіб дозволяє враховувати поведінку всіх юзерів для прогнозу ребіл-рейту нових користувачів. З одного боку, ми аналізуємо поведінку максимально можливих нових когорт, бо розуміємо, що продукт і трафік однаковий, відповідно і ретеншн-рейт має бути схожим.

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

Ну, і залишається останнє питання: а що ж робити з періодом, коли юзер ще не зробив свою першу оплату підписки і знаходиться на пробному періоді? Є простий і супер дієвий спосіб.

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

Тому, обрахувавши конверсію з тріалу в ребіл за останніми когортами (для 3-7 денних тріалів я б радила брати мінімум 1-2 місяці, адже варто врахувати, що частина юзерів доходить з білінг ретрай логік), сміливо закладайте цей рейт до прогнозу.

Висновок

У статті я розповіла про алгоритм прогнозування LTV, який ми використовуємо в MathMaster. Такий спосіб в першу чергу підходить для прогнозу моделі з підпискою, проте його можна імплементувати і під інші потреби бізнесу.

Наприклад, для прогнозування відтоку юзерів можна використовувати ланцюгові коефіцієнти, а для прогнозування кумулятивного виторгу (в грошах) — моделювання логарифмічної кривої, де принцип побудови і оцінки такий же, як і описано вище в статті.

Обидві схеми потребують історичних даних в досить великій кількості, проте наведені алгоритми є достатньо простими у реалізації і при цьому показують досить точний результат.

Що ж, сподіваюсь, цей матеріал буде корисним багатьом дата та продакт-аналітикам і допоможе вибудувати ефективну систему прогнозування підписок не одній компанії.☺️

👍ПодобаєтьсяСподобалось17
До обраногоВ обраному10
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Олександро, так як же спрогнозувати LTV юзера в перший день його життя?
Я не бачу відповіді в статті.

Якщо монетизація проєкту передбачає модель підписки, на початковому етапі без прогнозування неможливо якісно оцінити успішність бізнесу.

А якщо не передбачає підписки, то все гаразд, питань нема? Можна якісно оцінити успішність бізнесу?

По факту LTV юзера відображає те, скільки і як довго юзер готовий платити за користування сервісом.

Це тільки в subscription-моделі, де у вас LTV=Time*Fee. Дуже зручно, але це не весь світ LTV. І те, що ви далі прогнозуєте — це churn rate, бо якщо б не він, то питання взагалі б не було. Був би вічний кайф, кожен місяць flat fee, помножив fee на кількість юзерів — ось тобі і прогноз на кожен місяць.

Проте, якщо ваш продукт змінювався, ви вже не можете покладатись на давні періоди.

Ви не можете цього зробити навіть якщо він абсолютно не змінювався — бо змінюються і настрої користувачів, і дії конкурентів впливають, і ринок змінюється.

Тож виникає питання: скільки треба даних, щоб модель була адекватною?

Так скільки ж? Відповіді нема.
Додаткове питання: адекватною чому?

Розмір вашої когорти також є критичним. Умовно кажучи, якщо на першій точці у вас 10 юзерів, то навряд вийде побудувати гарну модель.

Так скільки ж треба, щоб побудувати гарну можель? Відповіді нема.

Олександро, маємо клікбейтний заголовок, який не відповідає контенту. Фу так робити.

У статті я розповіла про алгоритм прогнозування LTV, який ми використовуємо в MathMaster. Такий спосіб в першу чергу підходить для прогнозу моделі з підпискою

От так і пишіть в заголовку, ні?
Ну і я б хотів узнати як цей метод підійде до моделей без підписки.

Олексію, в статті я лиш поділилась своїм досвідом у рамках продукту MathMaster. Очевидно, що даний спосіб не є універсальним. Так стаття описує в першу чергу спосіб прогнозування саме для підпискової моделі. Як ми прогнозуємо нерегулярні платежі, я обов’язково поділюсь в наступній статті!

Ви звичайно праві в тому, що модель не враховує всіх факторів (зміну настоїв ринку, конкурентів, погоди тощо), є набагато складніші моделі, які все це враховують, проте не про них в даній статті йдеться.😉

Вибачте, що не по темі, але у перші секунди після прочитання ім’я/прізвища авторки, мені здалося що ми родичі :D

Дякую, гарна стаття!

З мого досвіду, моделювання через sBG (shifted-beta-geometric) розподіл дає більш точні результати, ніж використання експоненційної кривої (але, думаю, це також залежить від домену/продукту і тому не всюди підійде)
Стаття про цей спосіб: faculty.wharton.upenn.edu/...​4/Fader_hardie_jim_07.pdf

Головне якимось чином видурити підписку з автоматичним подовженням.

Підписатись на коментарі