Вопрос или проблема
У меня есть набор временных рядов данных с жизненным циклом 9000 различных B2B продажных лидов. То, что я называю жизненным циклом, представляет собой набор данных с одной записью на день для каждого различного идентификатора лидов с 4 предсказательными переменными (DAYS_SINCE_START
, LEAD_ID
, CUSTOMER_INTEREST
, MARKET
, TYPE_SERVICE
) и одной ответной переменной (OUTCOME
). Ответная переменная может иметь 2 различных значения: Won
(1) или Lost
(0).
Пример фрейма данных может быть следующим:
Как видно, некоторые лиды «умирают» раньше других, это происходит потому, что мы получаем окончательный результат от клиента в тот день его жизненного цикла (мы выиграли или потеряли лид), поэтому идентификатор этого лида исключается из набора данных.
Моя задача – создать единую модель, которая могла бы определить результат нового продажного лида, который поступает в набор данных, и предсказание будет сделано через 30 дней после текущего времени (Почему через 30 дней? Первые 30 дней после того, как ресурсы компании уже были распределены). Как бы мне это смоделировать?
Эту задачу можно смоделировать с помощью стандартной бинарной классификации, поскольку у вас есть размеченные данные. Время можно рассматривать как признак, который можно закодировать относительно даты результата. Алгоритм случайного леса будет хорошим выбором для испытания.
Вам нужно переработать данные, чтобы они были аккуратными данными, где каждый LEAD_ID
находится в одной строке с всеми признаками для этого идентификатора в одной строке.
Ответ или решение
Классификация временных рядов с множеством записей на дату: Пошаговое руководство
Введение
Классификация временных рядов представляет собой задачу, с которой сталкиваются многие компании, работающие с большими объемами данных. Ваша задача состоит в создании модели, способной предсказать исход процесса продаж для нового потенциального клиента (лида) на основе имеющихся данных о предыдущих лидах. В этом руководстве мы рассмотрим процесс построения модели для классификации исхода лида в зависимости от нескольких параметров на основе временного ряда.
1. Структура и очистка данных
Прежде чем переходить к моделированию, важно убедиться, что данные организованы в соответствии с принципами «аккуратных данных» (tidy data). Ваша задача — преобразовать набор данных так, чтобы каждый уникальный идентификатор лида LEAD_ID
имел одну строку с соответствующими характеристиками. Для этого следует:
- Группировка данных по
LEAD_ID
: Соберите все записи, относящиеся к каждому лид-идентификатору. - Извлечение показателей: Для каждой группы следует извлечь метрики, такие как средние значения, максимумы, минимумы и т. д., для переменных
CUSTOMER_INTEREST
,MARKET
,TYPE_SERVICE
. - Создание метки: Определите значение переменной
OUTCOME
— это будет либо 1 (победа), либо 0 (поражение). Важно, чтобы это значение передавалось из наибольшего времени, когда лид был активен.
2. Подход к обучению модели
Выбранный вами метод классификации может основываться на бинарном классификаторе, что является стандартом для данной задачи. Наиболее подходящими алгоритмами могут быть:
- Случайный лес (Random Forest): Этот алгоритм хорошо работает с высокоразмерными данными и помогает избежать переобучения.
- Логистическая регрессия: Функционально простой и интерпретируемый метод, который также может быть полезен в вашей задаче.
- Глубокие нейронные сети: Если объем данных достаточно велик, использование нейросетей может привести к лучшим результатам.
3. Функции и преобразование переменных
Важно учитывать время в качестве переменной. Учитывая, что прогнозирование будет проводиться через 30 дней после момента создания лида, вам потребуется:
- Расчет признака времени: Рассмотрите возможность добавления переменной
DAYS_SINCE_START
, которую можно будет использовать для идентификации стадии, на которой находится лид. - Кодирование категориальных переменных: Переменные
MARKET
иTYPE_SERVICE
должны быть преобразованы в числовые с помощью методов кодирования, таких как One-Hot Encoding.
4. Обучение и валидация модели
После того как данные будут скорректированы и подготовлены, можно переходить к этапу обучения модели:
- Разделение данных на наборы: Используйте k-fold кросс-валидацию для проверки устойчивости вашей модели. Это поможет избежать переобучения и даст более точную оценку производительности.
- Оценка метрик: Рассматривайте использование метрик, таких как точность, полнота (recall) и F1-мера для оценки качества классификации.
5. Прогнозирование для новых лидов
Когда модель будет обучена, можно начать делать прогнозы для новых лидов. Будьте готовы обработать данные о новых лидах аналогично тем, с которыми вы работали ранее. Убедитесь, что все признаки и кодирование соответствуют тому, как это было в процессе обучения модели.
Заключение
Классификация временных рядов с множеством записей на дату — задача, требующая тщательной подготовки данных и правильного выбора моделей. Следуя приведенным шагам, вы сможете создать эффективную модель для предсказания исхода ваших продаж. В заключение, применение подхода, основанного на анализе данных и машинном обучении, позволит вашей компании оптимизировать процесс продаж и повысить его эффективность.