Инженерия признаков: признак свежести

Вопрос или проблема

У меня есть проблема с оценкой клиентов, над которой я работаю, в частности, с прогнозированием конверсии и подсчетом вероятностного балла конверсии (в данный момент используется классификатор 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. Давность события и конверсия

    • Если клиент позвонил давно и позже сконвертировался, присвоенный балл будет близок к 1. Это означает, что прошлые взаимодействия (даже если они были не так недавно) все еще имеют вес в расчете вероятности.
  2. Недавние обращения и успешные конверсии

    • Если клиент звонил недавно и быстро сконвертировался, это также приведет к высокому баллу. Это подтверждает правильность применения признака.
  3. Недавние звонки без конверсии

    • Даже если клиент звонил недавно, но пока не сконвертировался, следует сохранить высокий балл, поскольку это указывает на его активный интерес к вашему продукту.
  4. Давние звонки с задержкой в конверсии

    • Если клиент обратился давно, но конверсия произошла с запозданием, то балл будет снижаться в зависимости от времени, прошедшего с момента звонка до конверсии.
  5. Давние звонки без конверсии

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

Объединение различных признаков

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

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

Заключение

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

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

Капча загружается...