LTV: вероятность совершения повторной покупки

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

Существуют разные подходы к ее оценке, но все они так или иначе связаны с поведенческими характеристиками, причем практически всегда характеристика #1 это Recency.

Сегодня я покажу вам 3 подхода к оценке вероятности совершения повторной покупки (от менее точного к более точному):
  • на основе Recency и Latency
  • на основе Recency, Lifetime, Frequency
  • на основе модели Pareto/NBD
Прелесть каждого из подходов в том, что мы рассчитываем вероятность совершения повторной покупки для каждого клиента индивидуально (не на основе когорты).

Оценка вероятности на основе Recency и Latency

Начну с того, что бегло напомню вам разницу между Recency и Latency.

Recency - время, которое прошло с момента совершения последней покупки до сейчас.
R = today() - last_order_date

Latency - среднее время между покупками.
L = ( last_order_date - first_order_date ) / ( Frequency - 1 )

ВАЖНО УЧЕСТЬ:
  • Для того, чтобы Latency имело смысл клиент должен совершить 2+ покупки;
  • Если взглянув на промежутки между покупками вы видите, что у клиентов периодически возникают длинные паузы (21, 17, 20, 90, 18) тогда среднее арифметическое лучше заменить на медиану.
Дано:
  1. Среднее время между покупками клиента = 14 дней (Latency);
  2. Последний раз клиент покупал 31 дней назад (Recency).
Расчёт:

odds = R / L = 31/ 14 = 2.21

inv_odds = 1 / odds = 1 / 2.21 = 0.45

p_Alive = inv_odds / ( 1 + inv_odds ) = 0.45 / ( 1 + 0.45 ) = 0.31

Давайте посмотрим как меняется вероятность совершения повторной покупки при изменении Recency:
p_Alive: function( R, L ).

Что мы видим?
  1. Вероятность совершения повторной покупки на следующий день очень высока;
  2. Вероятность быстро снижается за первые 3-4 периода:
    • пока R < L: вероятность совершения покупки > 0.5
    • после того как R > L: вероятность совершения покупки < 0.5
  3. Начиная где-то с R > 85 вероятность снижается достаточно медленно, но к этому моменту вероятность сама по себе достаточно низкая.
Чтобы лучше показать зависимость уменьшения вероятности совершения повторной покупки с увеличением Recency я построил кривую удержания:
p_Alive: retention curve.

НЕДОСТАТКИ:
Основной недостаток данного подхода состоит в том, что он не учитывает активность клиента до сейчас, т.е. Frequency

В тоже время из предыдущего поста мы знаем, что активные клиенты (с большим Frequency) "стареют" намного быстрее. 

Поэтому давайте перейдем к следующему подходу, который учитывает этот момент.

Оценка вероятности на основе Lifetime, Recency и Frequency

Давайте снова введем необходимые нам термины:

Lifetime - время от первой покупки до сегодня.
LT = today() - first_order_date

inverse_Recency - время от первой покупки до последней.
inv_R = last_order_date - first_order_date

Frequency - количество совершенных клиентом покупок.
F = countrows( order_table )

Дано:
  1. С момента первой покупки до сегодня прошло 157 дней (Lifetime);
  2. За это время клиент совершил 2 покупки (Frequency);
  3. Последнюю покупки клиент совершил на 144-й день (inverse_Recency).
Расчёт:

p_Alive = ( inv_R / LT ) ^ F = ( 144 / 157 ) ^ 2 = 0.84

Взляните как меняется вероятность совершения повторной покупки при изменении inverse_Recency и Frequency:
p_Alive = function( LT, inv_R, F )

Для вашего удобства я в таблицу также включил Recency. Напомню, что: R = LTinv_R

Что мы видим?
  1. Если клиент сделал одну покупку (F = 1), то вероятность совершения следующей покупки хотя и снижается с увеличением Recency, но происходит это постепенно:
    1. R = 1,   p_Alive = 0.99; 
    2. R = 13, p_Alive = 0.92; 
    3. R = 31, p_Alive = 0.80;
  2. Как только Frequency начинает увеличиваться (например F = 5), вероятность совершения повторной покупки начинает очень быстро снижаться:
    1. R = 1,   p_Alive = 0.97; 
    2. R = 13, p_Alive = 0.65; 
    3. R = 31, p_Alive = 0.33.
Таким образом этот подход одновременно учитывает и Recency и Frequency. 

Чтобы лучше показать зависимость уменьшения вероятности совершения повторной покупки с увеличением Frequency я построил 3 кривые удержания:
p_Alive: function( LT, F, R ).

НЕДОСТАТКИ:
Основный недостаток данного подхода состоит в том, что он не учитывает горизонт в котором мы прогнозируем вероятность совершения повторной покупки.

Поэтому давайте перейдем к следующему подходу, который учитывает и этот момент также.

Оценка вероятности на основе модели Pareto/NBD

Это самый точный способ оценки вероятности совершения клиентом повторной покупки.

Для того, чтобы рассчитать вероятность повторной покупки нам необходимо:
  1. params - расчетные параметры модели Pareto/NBD;
  2. x - количество повторных покупок совершенных клиентом в калибровочном периоде (F - 1);
  3. t.x - время совершения последней покупки в калибровочном периоде (inv_R);
  4. T.cal - время окончания калибровочного периода.
Дано:

Имеем лог транзакций.

Расчёт (используя R и пакет `BTYD`):
  1. Рассчитываем CBS (смотри пост про модель);
  2. Рассчитываем параметры модели Pareto/NBD;
  3. p_Alive = BTYD::pnbd.PAlive() для каждого клиента из CBS.

РЕЗЮМЕ:

Маркетолог должен двигаться быстро и независимо. Для этого ему важно понимать, какие клиенты в какой группе риска находятся и быстро принимать корректирующие действия:
  • высокая вероятность повторной покупки - up-sell / cross-sell;
  • средняя вероятность повторной покупки - cross-sell, работа с обратной связью;
  • невысокая вероятность повторной покупки - promo;
  • очень низкая вероятность повторной покупки - забыть.
А как вы оцениваете вероятность совершения повторной покупки?

Popular posts from this blog

A/B-тестирование: смотреть на конверсию vs смотреть на продажи

RF-матрица как альтернатива для работы с LTV

Дисконты, которые могут убить ваш бизнес