Як спрогнозувати LTV у підписочній моделі. Кейс побудови прогнозу одразу для 20+ застосунків
Привіт, я Вова, Data Analyst в Kiss My Apps. У цій статті розкажу, як працювати з прогнозом LTV для бізнес-моделі за підпискою (далі — підписочна модель). Також поділюся власним досвідом, як ми з командою автоматизували предикт для майже 30 мобільних застосунків.
Ця стаття буде особливо корисною для тих, хто мало знайомий з задачею прогнозування LTV або шукає простий універсальний спосіб такого прогнозу для підписочної моделі монетизації. І швидше за все не буде цікавим для proficient LTV predictors, тих, хто вже знайомий з sBG-моделлю, а також для тих, кого цікавить прогноз для транзакційної моделі монетизації :(
«Шоб Шо?»
Почну з найважливішого: що таке LTV?
LTV (Lifetime Value), або CLV (Customer lifetime value) — це гроші, які принесе користувач за весь час взаємодії продуктом.
LTV є центральним поняттям в юніт-економіці, це святий ґрааль будь-якого цифрового бізнесу, золотий ключик до розуміння окупності бізнесу. Двері в чарівний світ усвідомлення, які канали трафіку варто масштабувати, а від яких варто відмовитися.
LTV відіграє ключову роль у маркетингу — залучаючи користувачів, важливо розуміти, скільки прибутку в середньому приносить один і чи вигідне його залучення. Для цього потрібно вміти прогнозувати LTV на етапі, коли користувач тільки підписався.
Формула LTV
Визначення показує, що LTV — це ревеню за весь час взаємодії користувача з продуктом, проте у випадку з предиктом ми працюємо з LTV N-ного періоду (іншими словами — ARPU N-ного періоду). В такому випадку йдеться про частину LTV, яку користувач приніс протягом N часу, наприклад, пів року чи року. Такий підхід дозволяє створити більш реалістичний прогноз і краще підходить для планування. Вибір періоду базується на часі, коли більшість користувачів покидає продукт, або ж на потребах бізнесу.
Формула LTV може відрізнятися залежно від продукту. Для мобільного застосунку вона може мати такий вигляд:
LTV = Rebill Rate * Subscription Proceeds *
Де:
- Rebill Rate — середня кількість поновлень підписки одним платником або середня «тривалість життя» користувача на продукті;
- Subscription Proceeds — виторг, який ми отримуємо з користувача за один період подовження підписки. Для мобільного застосунку це ціна підписки мінус комісії стору та геоспецифічні податки;
- Refund Rate — відсоток доходу, що відшкодовується користувачам, які запросили повернення коштів;
- Variable Costs — витрати, які зростають із кількістю користувачів (наприклад, використання API, в якому оплата за кількість запитів). Їх також краще включити до LTV, щоб правильно розуміти окупність.
В цій формулі нам не відомі величини Rebill Rate і Refund Rate, тож далі ми сфокусуємося на прогнозі першого, бо це найцікавіша й найважливіша складова LTV. Прогнозування Refund Rate є більш специфічним з погляду підходу для розрахунку, тому його ми зараз розглядати не будемо.
Для прогнозування Rebill Rate найчастіше використовують когортний аналіз — простий, інтуїтивно зрозумілий та ідейно правильний спосіб прогнозування.
Когортний Аналіз
Когортний аналіз — це підхід, що базується на групуванні користувачів за певною ознакою, в нашому випадку — за часом здійснення першого платежу. Такі групи називають когортами.
Для предикту ми розбиваємо користувачів на когорти, всередині яких вони мали змогу подовжити підписку однакову кількість разів. Аналізуючи, скільки користувачів із кожної когорти заплатили на кожному кроці, ми отримуємо так званий «трикутник ретеншну».
Приклад цього підходу для одного з наших застосунків:
Крива ретеншну — крива, що показує, яка частка користувачів залишиться на N-ній ітерації. Фактичну ретеншн-криву для конкретної когорти можна отримати, поділивши відповідний рядок цього трикутника на кількість користувачів у когорті.
Для прогнозування потрібно також обчислити усереднену ретеншн-криву. Для визначення кожної точки кривої ділимо сумарну кількість подовжень даної ітерації на загальну кількість користувачів, які вже мали змогу продовжити підписку, як на зображенні нижче:
Такий метод обчислення повільно реагує на зміни в поведінці користувачів або сезонність. Тому якщо на вашому продукті ретеншн змінюється з часом, краще використовувати ланцюгові (перехідні) коефіцієнти для обчислення усередненої ретеншн-кривої.
Ланцюгові коефіцієнти — це конверсії переходу з N-ого поновлення в N+1. Для кожного переходу можна обчислити ланцюговий коефіцієнт з найновішої когорти, яка вже мала змогу поновити підписку, або декількох (наприклад, трьох) найновіших когорт. Після чого розрахувати ретеншн-криву, помноживши попередню точку кривої на відповідний коефіцієнт.
Усереднений ретеншн використовує більше даних (тобто всі дані), але втрачає актуальність при змінах поведінки користувачів, а метод ланцюгових коефіцієнтів використовує менше даних, але вони найактуальніші.
Прогноз кривої ретеншну
Ми обчислили фактичну криву ретеншну — ура! Але зазвичай те, що ми на цьому кроці порахували, виглядає так:
А нам потрібно отримати ось так:
Отже, наступний крок — екстраполяція даних на багато періодів вперед. Зазвичай у нас немає точних тренувальних даних для пізніх продовжень. Класичний Machine Learning з такою задачею впорається трохи гірше, ніж бабак Тимко, тому він нам не підійде.
Часто для цієї задачі використовується фітинг розподілів/кривих, які гарно лягають на дані (наприклад, фітинг експоненційної кривої, як розказано в статті Олександри Візер на DOU, або інших подібних кривих).
Такий метод дуже простий, може чудово працювати для окремих продуктів, але при створенні прогнозу для 20+ застосунків ми дійшли висновку, що не існує універсальної кривої, яка б добре працювала одразу на великій кількості продуктів. Тому використовуємо складніші ймовірнісні моделі, які краще узагальнюються для багатьох сегментів продуктів. Основною моделлю є sBG, а іноді ми також звертаємось до її «молодшого брата» — BdW.
sBG (shifted Beta-Geometric розподіл)
Модель sBG була представлена P. Fader і B. Hardie у роботі How to project customer retention. Також можна ознайомитись зі спрощеним поясненням, де менша кількість математики й зі спредшитом ось тут :)
Вона передбачає використання двох основних припущень для опису поведінки користувачів:
- Ймовірність оплатити підписку для конкретного користувача є сталою для кожної ітерації поновлення (тобто для кожного окремого користувача поновлення описуються геометричним розподілом).
- Ймовірність поновлення різниться між користувачами (математично говорячи, для різних користувачів параметр (p) геометричного розподілу різний).
Для високорівневого розуміння і використання моделі знання цих припущень достатньо, тож перейдемо до самого прогнозу.
Реалізацію sBG (та BdW про яку згодом) на Python можна знайти на github, а в оригінальній статті також описано, як можна використати модель в Excel/Google Spreadsheets.
Підготовка даних та прогнозування
Щоб отримати прогноз, залишається тільки задати наші фактичні дані як вхідні дані у модель. Для побудови прогнозу на основі sBG можна використовувати фактичні дані двома способами:
- За когортами: модель може навчатися на всіх когортних даних одночасно, що знижує ризик перенавчання та є оптимальним варіантом, коли поведінка користувачів стабільна.
- На усередненій ретеншн-кривій: модель адаптується до усереднених даних ретеншн, що є більш актуальним, коли поведінка користувачів змінюється з часом. У цьому випадку для розрахунку кривої ретеншн застосовуються спеціальні методи, як-от ланцюгові коефіцієнти.
Зазвичай прогноз виходить доволі точним, проте бувають випадки, коли це не так. Основні причини поганого прогнозу такі:
— Недостатня кількість даних (пройшло мало часу з моменту появи підписки, або ж мала кількість користувачів в когорті);
— Мінливість даних (сезонність, зміни в трафіку, продуктові зміни, що впливають на ретеншн користувачів);
— Не виконуються припущення моделі sBG.
Перші два пункти можна виправити попередньою обробкою даних, які передаються в модель. Проте якщо після їх виправлення прогноз залишається невдалим, тоді, ймовірно просто не виконуються припущення моделі, і потрібно шукати іншу.
Ще однією хорошою моделлю є BdW (Beta-discrete-Weibull distribution) — друга ітерація моделі для прогнозу ретеншну від тих же авторів, що і sBG.
BdW (Beta-discrete-Weibull розподіл)
Модель BdW — аналог sBG з трішки іншими припущеннями:
- Ймовірність оплатити підписку для конкретного користувача не є сталою для кожної ітерації поновлення, а додається параметр t, який регулює зміну ймовірності з часом. В sBG ймовірність оплатити підписку для конкретного користувача =
(1-p), в BdW — (1-p)^t (математично говорячи, для кожного окремого користувача його поновлення описуються discrete-Weibull розподілом, з параметрами p i t). - Цей параметр t для всіх користувачів однаковий.
- Початкова ймовірність (p) поновлення користувача є різною для різних користувачів. (математично говорячи, для різних користувачів параметр (p) discrete-Weibull розподілу різний, а t — однаковий).
З погляду застосування BdW не відрізняється від sBG, і, як правило, сам прогноз в них виходить дуже схожий. Проте коли блокером є саме припущення моделі, то BdW може видати значно кращий прогноз за sBG.
Основною моделлю ми все одно обрали sBG, за правилом «простіше — краще», адже додатковий параметр в BdW це більший ризик перенавчання (оверфітінгу). Але рекомендую спробувати обидві, щоб зрозуміти яка, працюватиме краще для вас.
Маючи криву ретеншну, можна легко обчислити Rebill Rate за n-ий період — це сума значень перших n точок кривої, тож це все, що нам було потрібно 🎉. У нашому прикладі ребіл рейт за перші 53 тижні (тобто рік) склав 4.67, і відповідний LTV — 32.7$.
Залишається обчислити LTV для всіх потрібних сегментів. У нас, наприклад, автоматично рахується прогноз для всіх сегментів app-media_source-country_tier. Щоб отримати прогноз для кожного сегменту, використовуємо ієрархічний підхід. Якщо для сегменту бракує даних на рівні app-media_source-tier, застосовується прогноз на рівень вище — app-media_source. Якщо й цього не вистачає, використовуємо загальний прогноз для app. Якщо ж недостатньо даних для конкретного застосунку, беремо дані з групи схожих застосунків.
Підсумок
Використовуючи описаний вище підхід, ми побудували автоматичний прогноз LTV. Завдяки ймовірнісним моделям sBG і BdW, які добре генералізуються на різні продукти, він має хорошу точність на наших 20+ застосунках, тож, з високою ймовірністю підійде і для вас. Крім того, завдяки ієрархічному обчисленню прогноз будується для максимально деталізованих сегментів, на які вистачає даних, що дозволяє точніше оцінювати окупність трафіку.
3 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів