Как использовать свежие данные, когда период предсказания цели длительный?

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

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

Предположим, что для каждого клиента я получаю набор признаков каждый месяц, $x_1,x_2,\ldots,x_n$. Цель состоит в том, чтобы использовать эти признаки для предсказания, будет ли $y=0$ или $y=1$ ($y$ равно 1, если клиент купил продукт в течение следующих двенадцати месяцев, в противном случае оно равно нулю).

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

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

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

Как-то построение цели на основе имеющейся информации не даст интересных результатов. Потому что вы построите цель на основе некоторых признаков, и как только вы пропустите свои признаки через ML-модель, эта ML-модель просто выучит ту правило, которую вы использовали для построения цели.

Как вы упомянули, основное решение – построить цель с более коротким горизонтом. Более короткий горизонт может помочь вашей основной проблеме, но если он слишком короткий, у вас возникнут проблемы со стабильностью. (И вообще плохая цель, если, например, продажи обычно происходят через 3 месяца, использование цели с 1-месячным горизонтом не поможет вам узнать связь между признаком и продажей). Возможно, вам стоит попробовать другие целевые горизонты от 1 месяца до года.

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

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

Ответ или решение

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

### 1. Оптимизация горизонта прогнозирования

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

#### Учитывайте временные задержки
Важно понимать временные задержки в покупательной способности клиентов. Если ваши данные показывают, что клиент может принять решение о покупке только через несколько месяцев после взаимодействия с продуктом, работа с слишком коротким горизонтом может привести к ошибочным выводам.

### 2. Построение обучающего набора с использованием свежих данных

#### Последовательно обновляемые метки
Одним из подходов к использованию свежих данных является метод последовательного обновления меток. Вместо использования фиксированного горизонта в один год, вы можете создавать метки на основе самых свежих данных, например, “Купит ли клиент продукт в следующие три месяца?”. Эта стратегия позволяет вам регулярно обновлять обучение модели, используя последние доступные данные.

#### Временные окна
Использование временных окон также может помочь в учете свежести данных без потери значимости. Для каждой группы наблюдений клиента можно рассмотреть временные окна (например, 3-месячные) и посмотреть, какая метка отражает действие в пределах этого окна, сохраняя при этом накопление данных для более долгосрочного анализа.

### 3. Работа с несбалансированными данными

#### Техники балансировки
При работе с несбалансированными данными, такими как в вашем случае, использование методов увеличения выборки (oversampling) для меньшинств (покупка) и уменьшения выборки (undersampling) для большинства (непокупка) может помочь создать более сбалансированный набор данных. Также стоит обратить внимание на алгоритмы, способные учитывать важность каждой категории в процессе оптимизации.

#### Применение весов классов
Некоторые модели машинного обучения позволяют вводить веса для классов в процессе оптимизации, что даст большее значение положительным примерам, даже если они редки. Например, в алгоритмах, таких как Random Forest и Gradient Boosting, это может быть легко реализовано.

### 4. Разделение данных и переобучение

#### Кросс-валидация
Для оценки производительности вашей модели с новыми метками не забывайте использовать метод кросс-валидации. Это поможет избежать переобучения и оценить, насколько ваша модель обобщается на новых данных.

#### Проверка на временных отрезках
Для избежания корреляций между целевыми переменными между временными отрезками рекомендуется проводить проверку на дата-сетах, отделенных по времени. Это поможет вам лучше понять, как изменяются предсказания модели в зависимости от времени и повысить ее стабильность.

### Заключение

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

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

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