Прогнозируем отток клиентов без применения машинного обучения

Что же такое отток клиентов, и почему это явление должно нас беспокоить?

В бизнес-контексте отток клиентов (churn) – это процесс, в рамках которого некоторые клиенты отказываются от услуг компании. Как правило, за этим процессом пристально наблюдают организации, применяющие бизнес-модель на основе подписки (мобильные операторы, SaaS-стартапы и др.), поскольку удержание старых клиентов обходится намного дешевле, чем приобретение новых. Цель состоит в том, чтобы вовремя предсказать намерение клиента уйти (до истечения срока подписки) и попытаться удержать его, предложив, например, скидку или другой подобный бонус. Это особенно важно в отношении ваших сверхценных клиентов!

В данной статье мы рассмотрим метод прогнозирования оттока, основанный на профиле бездействия клиентов, который я применял в различных проектах. Без участия алгоритмов машинного обучения, модель позволяет получить хорошо интерпретируемый прогноз и дает нам достаточно точное представление о клиентах, намеревающихся покинуть нашу базу. Мы не будем рассматривать конкретную реализацию, вместо этого мы обсудим концепцию, понимая которую, вы сможете легко реализовать приложение самостоятельно (ранее я делал это на SQL, Python и SAS). Связанные темы, касающиеся, например, вычисления ценности уходящих клиентов, также выходят за рамки данной статьи.

Итак, начнем!

Клиентская активность

Прежде чем начать моделировать отток, необходимо собрать данные об активности клиентов за определенный интервал времени. Нам необходимо знать, пользуются ли клиенты нашей услугой. Но что подразумевает под собой активность? Активность может иметь различные определения. Давайте рассмотрим некоторые из них.

В частности, мы можем считать, что клиент активен, если в данном месяце:

  • Срок подписки не истек.
  • Произошло исходящее событие (например, исходящий звонок или сообщение в контексте мобильной связи).
  • Клиент принес компании определенный доход (неотрицательный ARPU).
  • Имели место входящие или исходящие события.

В нашем примере мы будем анализировать поведение клиентов в каждом месяце, хотя можно использовать более длительные интервалы, например 3 месяца.

Первым делом, выбираем определение активности. Затем для каждого клиента и для каждого месяца мы можем определить двоичное значение (1 или 0), показывающее, был ли активен данный клиент в данном месяце. Обычно в качестве определения активности я использую общий месячный ARPU, но это во многом зависит от специфики конкретной задачи.

… и бездействие

Теперь, когда у нас есть флаг активности для каждого клиента и каждого месяца, мы используем эту информацию, чтобы создать профиль бездействия. То есть, для каждого клиента мы хотим подсчитать количество месяцев бездействия, следующих подряд. На рисунке ниже синяя таблица представляет флаг активности для каждого клиента в каждом месяце, а зеленая таблица – профиль бездействия. В качестве целевого периода для анализа мы выбрали один год.

  • Клиент 1. Этот клиент входит в целевой период в активном состоянии, а затем бездействует с мая по декабрь (то есть, до конца целевого периода). Таким образом, в профиле бездействия мы подсчитали идущие подряд месяцы бездействия с мая по декабрь.
  • Клиент 2. Данный клиент, в начале целевого периода также находится в активном состоянии, далее бездействует с марта по июнь, затем следует 1 месяц активности, 2 месяца бездействия и снова активное состояние до конца целевого периода. В данном случае подсчет идущих подряд месяцев бездействия сбрасывается каждый раз, когда клиент возвращается в активное состояние. Такое «прерывистое» поведение клиентов вполне типично.
  • Клиент 3. Третий клиент входит в целевой период в состоянии бездействия. В данном случае может быть два варианта: либо клиент временно бездействует, либо срок его подписки уже истек (вероятно, таких клиентов лучше исключить еще до начала анализа). Мы не можем заглянуть за пределы целевого периода, соответственно, мы не знаем продолжительность бездействия клиента на момент начала целевого периода. Поэтому мы отмечаем данные месяцы в профиле бездействия специальным образом, в частности, с помощью величины -1.

Модель оттока

Теперь, используя профиль бездействия, в каждом месяце мы можем подсчитать количество клиентов, относящихся к каждому уровню бездействия. Под уровнем бездействия мы понимаем количество месяцев бездействия, следующих подряд (столбец «Consecutive Inactive Months» на рисунке ниже). Мы выполняем эту операцию, суммируя в каждом месяце количество клиентов, относящихся к каждому уровню бездействия. Результат этой операции представлен на рисунке ниже:

Каждое значение представляет собой количество клиентов, бездействовавших в течение x месяцев подряд на момент данного месяца. Например, выделенное значение 574 – это количество клиентов, которые на момент января бездействовали в течение 1 месяца (из числа 4815 клиентов, активных в декабре). Другое выделенное значение 425 – это количество клиентов, которые на момент февраля бездействовали в течение 2 месяцев подряд (из числа 574, бездействовавших в течение 1 месяца на момент января). Значения в строке, соответствующей 0 месяцев бездействия, – это просто количества активных клиентов.

Используя эти данные, для каждого месяца и каждого уровня бездействия мы можем вычислить процент бездействующих клиентов. Результат представлен в зеленой таблице на рисунке ниже:

Выделенное значение 74% – это процент клиентов, которые на момент февраля бездействовали в течение 2 месяцев подряд. Это значение вычислено следующим образом: количество клиентов бездействовавших 2 месяца подряд на момент февраля деленное на количество клиентов, бездействовавших 1 месяц на момент января. В данном случае: 425 / 574 = 74%.

Чтобы получить репрезентативные значения, мы вычисляем средние за последние 4 месяца целевого периода. Часть значений, необходимых для расчета средних, может отсутствовать (например, для октября, ноября и декабря). В этом случае мы просто берем все доступные значения. Величины, используемые для вычисления средних, выделены красной рамкой.

Вероятность оттока

А теперь начинается самая интересная часть! Здесь нам пригодятся статистические навыки.

Давайте напомним себе нашу конечную цель. Мы хотим вычислить вероятность оттока для каждого месяца бездействия, следующего подряд. То есть, если клиент бездействовал x месяцев подряд, какова вероятность его ухода? Математически мы можем выразить эту вероятность с помощью теоремы Байеса:

P(churn | x months inactive) – P(отток | x месяцев бездействия)

P(churn) – P(отток)

P(x months inactive | churn) – P(x месяцев бездействия | отток)

P(x months inactive) – P(x месяцев бездействия)

Однако множитель, представленный ниже, лишен всякого смысла:

Это «вероятность бездействия клиента в течение x месяцев подряд, если он уже ушел». Если клиент ушел, понятие «бездействие» в его отношении теряет смысл. Поэтому мы просто проигнорируем этот множитель. В итоге получим окончательную формулу:

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

В знаменателе мы имеем вероятность бездействия клиента в течение x месяцев подряд. Это непосредственно и есть средние значения за 4 месяца, которые мы вычислили ранее:

Теперь давайте на примере рассмотрим числитель, где у нас находится вероятность оттока P(churn). Каким будет это значение для клиентов, бездействующих в течение 1 месяца? Чтобы такие клиенты ушли, они должны бездействовать в течение всех рассматриваемых нами месяцев подряд. Другими словами, клиент должен бездействовать в течение 1 месяца, 2 месяцев, 3 месяцев, и т.д. Следовательно, мы можем определить эту величину следующим образом:

Теперь по аналогии, какой будет величина P(churn) для клиентов, бездействующих в течение 2 месяцев? Чтобы такие клиенты ушли, они должны бездействовать в течение 2 месяцев, 3 месяцев и т.д. Получим следующее выражение:

Выполним эту операцию для каждого месяца бездействия:

В этих формулах n – это количество месяцев бездействия подряд, при котором вероятность стабилизируется. В таблице, приведенной выше, мы видим, что это количество соответствует примерно семи месяцам бездействия подряд, где вероятность стабилизируется на уровне 95-96%.

Для простоты мы будем считать, что бездействие в каждом из следующих подряд месяцев является независимым событием. Это позволяет нам получить следующие формулы (подробности вы можете найти здесь):

Теперь у нас есть числитель и знаменатель для каждого месяца бездействия, и мы наконец-то можем вычислить интересующие нас вероятности. Как было сказано ранее, мы выбрали n равным 7.

В итоге получим следующий результат:

Обратите внимание, вероятность оттока для активных клиентов (0 месяцев бездействия) – это просто произведение P(1) × P(2) × P(3) × … × P(7). Здесь мы ни на что не делим, поскольку нет вероятности бездействия для клиентов, которые не бездействовали.

Теперь мы можем построить кривую оттока. Далее мы можем использовать эту кривую, чтобы определить наиболее подходящий момент для принятия мер по удержанию клиентов.

Другие соображения

В нашем примере мы работали с одним набором клиентов, при этом в общем случае логично будет разбить клиентов на группы по определенным критериям, существенным в данном конкретном случае, и применить модель к каждой группе отдельно. Например, можно сегментировать клиентов на основе их ценности для компании, а затем анализировать отток для каждого сегмента отдельно.

Следует также отметить, что в нашем анализе рабочим интервалом был месяц, хотя полезно было бы иметь более детализированное представление на основе недели или суток.

Источник

Перевод Станислава Петренко

1 комментарий

  1. Андрей:

    Картинки не показываются. Хотлинкинг — это зло!

Добавить комментарий для Андрей Отменить ответ

Ваш адрес email не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =