Перейти до змісту
Увійти

Теорія

Утримання: день N, ковзне чи за періодами

Три способи виміряти утримання і який підходить продукту, яким користуються щотижня чи щомісяця.

~9 хв читання · 9 вправ · 250 балів

Перед початком

Чи повертаються люди?

Ти в продуктовій команді Halves — застосунку, який ділить спільні витрати між сусідами по квартирі, парами й компаніями в подорожах; платний план називається Halves Plus. Зареєструвати людей — лише половина справи: застосунок, який за місяць ніхто не відкриває, не росте, а витікає. Цей модуль відповідає на одне бізнес-питання — чи повертаються люди — і показує, як читати відповідь чесно: яку міру утримання (retention) обрати, як читати когортну таблицю, що каже про product-market fit крива, яка вирівнюється, і як оцінювати кожен сегмент за його власним ритмом. Перший урок починається із самого слова: три різні числа, які всі називають «утриманням».

Утримання дня N: активні саме того дня

«Утримання» — це не одне число. Перш ніж порівнювати два показники утримання, з'ясуй, яке з трьох вимірювань стоїть за кожним.

Троє людей стежать за дверима кав'ярні: один тримає картку з обведеним днем, другий спостерігає цілий тиждень, третій дивиться вдалину в бінокль.
Одне слово, три вимірювання: точний день, проміжок або «хоч колись знову».

Найсуворіше — утримання дня N (day-N retention): частка когорти, яка була активна саме в день N після реєстрації.

Утримання дня N = користувачі, активні в день N ÷ усі користувачі когорти

День 0 — це сам день реєстрації, тож день 7 — рівно тиждень потому. У знаменнику всі, хто зареєструвався, зокрема ті, хто більше не повернувся.

У таблиці з десяти користувачів саме в день 7 Halves відкрили лише r01 і r04: 2 ÷ 10 = 20%. Хто повернувся на 9-й день, рахується не утриманим на день 7, хоча очевидно й далі користується застосунком.

Набір даних · 10 рядків

Десять користувачів Halves та їхні активні дні

Дні від реєстрації з `app_opened`, через `;`. Спостереження до 40-го дня.

user_idactive_days
r010;1;7;14;21;28
r020;3;9;16;30
r030;2
r040;7
r050;12;33

Перші 5 з 10 рядків

Завантажити CSV

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

  • Так
    Утримання дня 7 = 2 активні в день 7 ÷ 10 зареєстрованих = 20%
  • Не так
    Зараховувати r02 (повернувся на 9-й день) до утриманих на день 7

    Це пізніший день, тож він належить ковзному утриманню чи утриманню за періодом, а не дню N.

Ковзне утримання: «ще не пішов»

Ковзне утримання (rolling retention) зараховує користувача утриманим на день N, якщо він був активний у день N або будь-якого пізнішого дня. Воно відповідає на питання «ця людина ще не пішла?».

Ковзне утримання на день N = користувачі, активні в день N або пізніше ÷ усі користувачі когорти

У таблиці з десяти користувачів восьмеро мають активність на 7-й день або пізніше: r01, r02, r04, r05, r06, r08, r09 і r10. Випадають лише r03 (востаннє на 2-й день) і r07 (лише день 0), тож ковзне утримання 7-го дня — 8 ÷ 10 = 80%. Зверни увагу на r09: одного візиту на 31-й день досить, щоб рахуватися утриманим на день 7.

Датасет: Десять користувачів Halves та їхні активні дні · є вище

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

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

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

  • Так
    Ковзне 7-го дня: усі, хто має день ≥ 7 → 8 з 10 = 80%
  • Не так
    «80% користувачів були активні на другому тижні.»

    Ковзне включає r09, якого бачили лише на 31-й день; саме на другому тижні активних було 70%.

Утримання за періодами: активні в межах вікна

Утримання за періодами (bracket retention) — частка когорти, яка була активна хоча б раз у межах вікна днів, наприклад у дні 7–13 (другий тиждень) чи 30–59 (другий місяць).

Утримання за періодом = користувачі, які мають хоча б один активний день у вікні ÷ усі користувачі когорти

У таблиці з десяти користувачів семеро мають день між 7-м і 13-м: r01 (7), r02 (9), r04 (7), r05 (12), r06 (8), r08 (13) і r10 (10 і 11). r03 і r07 більше не повернулися, а єдиний пізніший візит r09, на 31-й день, лежить поза вікном. Тож утримання за періодом днів 7–13 — 7 ÷ 10 = 70%.

Датасет: Десять користувачів Halves та їхні активні дні · є вище

Період лежить між двома іншими мірами. Він пробачає точний день, тож користувач, який повернувся на 9-й день замість 7-го, усе одно зараховується. Але на відміну від ковзного утримання він ставить справжнє питання про проміжок часу: чи з'явилася людина на другому тижні?

Ще одна деталь: користувач зараховується один раз на вікно, хоч скільки днів він був активний. У r10 два дні в періоді, а до чисельника він додає 1.

  • Так
    Дні 7–13: r01, r02, r04, r05, r06, r08, r10 → 7 ÷ 10 = 70%
  • Не так
    Рахувати активні дні замість користувачів: r10 додає 2

    Кожен користувач зараховується один раз на вікно, інакше частка може перевищити 100%.

Як порахувати період крок за кроком

Щоб порахувати утримання за періодом вручну чи запитом, іди по одному користувачу:

  1. Зафіксуй вікно з обома межами включно: дні 14–20 — це 14, 15, 16, 17, 18, 19 і 20.
  2. Для кожного користувача постав одне питання «так чи ні»: чи є хоча б один активний день усередині вікна?
  3. Порахуй відповіді «так» і поділи на всіх у когорті, а не лише на тих, хто взагалі повертався.

Для днів 14–20 у таблиці з десяти користувачів: у r01 є день 14, у r02 — день 16, у r08 — день 20. Решта або зупинилися раніше, або «перестрибнули» вікно (r05 — з 12-го на 33-й, r09 — з 0-го на 31-й). Виходить 3 ÷ 10 = 30%.

Датасет: Десять користувачів Halves та їхні активні дні · є вище

Поширені дві помилки. Перша — непомітно перейти на ковзну логіку й зарахувати всіх, кого бачили після вікна: це додало б r05, r06 і r09 і дало б 60%. Друга — викинути зі знаменника тих, хто не повернувся після дня 0, через що будь-який період виглядає кращим, ніж є.

  • Так
    Дні 14–20: r01 (14), r02 (16), r08 (20) → 3 ÷ 10 = 30%
  • Не так
    Додати r05 (33), r06 (40) і r09 (31) → 6 ÷ 10 = 60%

    Це ковзне утримання від 14-го дня, а не період третього тижня.

Обирай міру за природним ритмом використання

Ті самі десять користувачів дають 20% (день 7), 70% (дні 7–13) і 80% (ковзне). Жодне з чисел не хибне; вони відповідають на різні питання. Обирай за природним ритмом використання продукту (natural usage rhythm): як часто його відкривала б задоволена людина (як знайти ритм у даних, показує урок DAU, WAU, MAU і stickiness). Кожному ритму — своя міра утримання:

Ті самі десять людей дають 20% утримання дня 7, 70% за періодом 7–13 днів і 80% ковзного: пиши назву міри біля кожного числа.
  • Щоденним продуктом (головоломка, чат) користуються щодня, тож пасує утримання дня N: пропущений перший день — справжній сигнал.
  • Пари й друзі в подорожі ділять рахунки в Halves кілька разів на тиждень, тож їм пасує тижневий період (дні 7–13, 14–20…).
  • Сусіди по квартирі, які вносять оренду й комуналку, повертаються приблизно раз на місяць, тож їм пасує місячний період (дні 30–59).
  • Ковзне утримання пасує лише одному питанню: чи пішов цей користувач назовсім?

Міра, суворіша за ритм, записує у втрачені тих, хто й далі користується продуктом. Міра, м'якша за ритм, як-от ковзне утримання, зараховує тих, хто давно перестав.

  • Так
    Сусіди в Halves, які вносять оренду → місячний період, дні 30–59
  • Не так
    Оцінювати функцію щомісячної оренди за утриманням дня 1

    Ніхто не платить оренду наступного дня після реєстрації; міра суворіша за ритм.

Пиши міру і вікно поруч із кожним числом

У блозі Theo писали, що добрі застосунки утримують 25% на 7-й день; у Halves — 20% на 7-й день і 70% на другому тижні. Порівняння 70% із 25% виглядало б тріумфом, а 20% із 25% — провалом. Обидва порівняння зламані однаково: два числа ставлять поруч, не перевіривши, що вони міряють одне й те саме.

Число утримання можна прочитати лише з трьома підписами:

  • міра: день N, період чи ковзне;
  • вікно: день 7, дні 7–13, дні 30–59;
  • когорта: хто і коли зареєструвався.

Ілюстрація: Ті самі десять людей дають 20% утримання дня 7, 70% за періодом 7–13 днів і 80% ковзного: пиши назву міри біля кожного числа. · є вище

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

Тож чесне речення: «Утримання за періодом другого тижня (дні 7–13) червневої когорти: 70%». Воно довше за «утримання — 70%», і лише його ніхто не прочитає хибно.

  • Так
    «Утримання за періодом другого тижня (дні 7–13): 70%; утримання дня 7: 20%.»
  • Не так
    «Наше утримання — 70%, значно вище за орієнтир 25%.»

    Період порівнюють з орієнтиром дня N: це два різні вимірювання.

Ковзне утримання змінюється й після звіту

Утримання дня N і за періодом стають остаточними, щойно їхній день чи вікно минули. Утримання за періодом днів 28–34 може змінюватися лише поки ці дні тривають; після 34-го дня ніщо, що зробить користувач, на нього вже не вплине.

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

У таблиці з десяти користувачів ковзне утримання 28-го дня, пораховане на 35-й день, — 50%: з 28-го дня поверталися r01, r02, r05, r08 і r09. На 40-й день застосунок відкриває r06, і та сама метрика для тієї самої когорти стає 6 ÷ 10 = 60%. У продукті нічого не змінилося; змінився звіт.

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

Датасет: Десять користувачів Halves та їхні активні дні · є вище

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

  • Так
    «Утримання за періодом днів 28–34: 50% (остаточне).»
  • Не так
    «Ковзне утримання 28-го дня: 50%» без дати, у порівнянні зі старішою когортою

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

Число остаточне, лише коли його вікно минуло

Перш ніж показувати будь-яке число утримання, глянь в календар: чи кожен користувач когорти прожив усе вікно? Вікно, яке ще не скінчилося, — це цензурування справа (right censoring; докладно про нього в уроці Як читати воронку: цензурування справа і діапазони дат): повернення, якого немає, могло просто ще не настати.

На 35-й день після реєстрації для десяти користувачів картина така:

  • Утримання дня 28 і утримання за періодом днів 28–34 остаточні. Ці дні минули.
  • Утримання за періодом днів 30–59 ще не готове. Дні з 35-го по 59-й не настали, тож сьогоднішнє число враховує частину вікна й зростатиме. Показати його зараз — занизити утримання.
  • Будь-яке ковзне утримання ніколи не остаточне, як показав приклад з r06.

Датасет: Десять користувачів Halves та їхні активні дні · є вище

У реальних когортах рахуй лише користувачів, достатньо «старих» для вікна, і пиши про це поруч із числом.

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

  • Так
    На 35-й день: показати період днів 28–34 (50%), остаточний
  • Не так
    На 35-й день: показати період днів 30–59 як утримання другого місяця

    Більша частина вікна ще попереду, тож число занижене.

Готові потренуватися?

Виконайте вправи уроку й отримайте 250 балів, коли пройдете його вперше.

Розпочати вправи