Вопрос или проблема
У меня есть проблема с оценкой клиентов, над которой я работаю, в частности, с прогнозированием конверсии и подсчетом вероятностного балла конверсии (в данный момент используется классификатор xgboost). Есть один признак, который я хочу ввести, но мне тяжело сформулировать, какой должна быть его дефиниция.
В частности, я знаю, что когда событие A происходит недавно (например, клиент звонит в наш офис), это индикатор того, что клиент заинтересован в нашем продукте и может конвертироваться. Поэтому я создал признак запрашиваемости (recency), который по сути равен: (сегодня – дата события) в днях.
Проблема в том, что это не учитывает влияние более старых записей клиентов. Например, клиент мог позвонить нам год назад (событие A произошло) и вскоре после этого конвертироваться, и, используя эту формулу, признак запрашиваемости будет относительно большим. Я хочу, чтобы модель узнала, что низкие значения запрашиваемости приводят к более высокой вероятности.
Есть ли хорошие способы разработать признак, чтобы отразить эту взаимосвязь?
Я думаю, что функция с экспоненциальным спадом или RBF-признак отобразят близкие даты близко к 1.0, а дальние даты – на меньшие значения (приближаясь к нулю в пределе). В частности, рассмотрите эту формулировку:
$\mathrm{call\_score}=\exp\{-[min(\mathrm{current\_date},~\mathrm{conversion\_date\_if\_available) – \mathrm{call\_date}}]\}$
Мы можем разбить это на следующие сценарии, которые охватывают все случаи:
-
Если клиент позвонил давно, и вскоре после этого конвертировался, признак будет близок к 1.
-
Если клиент позвонил недавно и вскоре после этого конвертировался, признак будет близок к 1.
- Эти два случая подчеркивают: короткие сроки конверсии получают высокий балл
-
Если клиент позвонил недавно и еще не конвертировался, его балл все равно будет высоким.
- Мы считаем, что они имеют высокую вероятность конверсии, так как звонили недавно, несмотря на то, что еще не конвертировались.
-
Если клиент позвонил давно, но потребовалось время для конверсии, его балл будет уменьшен в зависимости от того, сколько времени прошло.
-
Если клиент позвонил давно и все еще не конвертировался, у него будет самый низкий балл из всех.
- Эти два случая подчеркивают: если прошло много времени с момента вашего звонка, и затем вы конвертировались поздно или вовсе не конвертировались, вы получаете низкий балл.
Ответ или решение
Инженерия признаков: Создание признака давности в задачах прогнозирования конверсии
В современных подходах к анализу данных и машинному обучению создание эффективно работающих признаков имеет ключевое значение для повышения точности моделей. В рассматриваемом контексте, ваша задача заключается в прогнозировании вероятности конверсии клиентов, и вы уже на правильном пути, используя градиентный бустинг (модель XGBoost). Однако, для улучшения вашего подхода следует более глубоко проработать признак, связанный с давностью события.
Определение признака давности
Признак давности можно определить как количество дней между текущей датой и датой события, как вы уже указали. Однако простое вычитание не учитывает прошлые взаимодействия клиентов с вашей компанией, что может приводить к потерям информации. Поэтому важно не просто измерить время, прошедшее с последнего взаимодействия, но и учесть историю этих взаимодействий.
Подход с использованием экспоненциального затухания
Вы правильно отметили, что использование функции экспоненциального затухания может эффективно учитывать давность события. Ваша формула:
[
\text{call_score} = \exp{-[\min(\text{current_date}, \text{conversion_date_if_available}) – \text{call_date}]}
]
позволяет решать основную проблему, не ограничиваясь только последним взаимодействием.
Анализ различных сценариев
-
Давность события и конверсия
- Если клиент позвонил давно и позже сконвертировался, присвоенный балл будет близок к 1. Это означает, что прошлые взаимодействия (даже если они были не так недавно) все еще имеют вес в расчете вероятности.
-
Недавние обращения и успешные конверсии
- Если клиент звонил недавно и быстро сконвертировался, это также приведет к высокому баллу. Это подтверждает правильность применения признака.
-
Недавние звонки без конверсии
- Даже если клиент звонил недавно, но пока не сконвертировался, следует сохранить высокий балл, поскольку это указывает на его активный интерес к вашему продукту.
-
Давние звонки с задержкой в конверсии
- Если клиент обратился давно, но конверсия произошла с запозданием, то балл будет снижаться в зависимости от времени, прошедшего с момента звонка до конверсии.
-
Давние звонки без конверсии
- В случае, если клиент звонил давно и так и не конвертировался, его оценка будет минимальной. Это позволяет модели эффективно различать активных и неактивных клиентов на основе давности их взаимодействий.
Объединение различных признаков
Не стоит ограничиваться только единственным признаком давности. Рассмотрите возможность объединения этого признака с другими метриками, такими как общее количество обращений, среднее время между обращениями или даже показатели других взаимодействий с клиентом (например, электронная почта).
Кроме того, использование динамического подхода, который корректирует баллы в зависимости от общего поведения клиента, может повысить точность ваших прогнозов. Применение дополнительных метрик, таких как: "сколько раз клиент обращался в последнем месяце", может помочь создать более глубокую и интуитивно понятную оценку клиентской активности.
Заключение
Работа с признаком давности требует детального подхода и производительности, так как правильная его реализация может значительно повысить эффективность вашей модели. Использование экспоненциального затухания и практика работы с историей взаимодействия клиентов не только поможет моделям, но и даст вам более полное представление о поведении клиентов. В конечном итоге, это может существенно повысить точность ваших предсказаний о вероятности конверсии, что является совместной целью для вашей команды.