Вопрос или проблема
У меня есть вопрос о выборе признаков в наборе данных, где целевая переменная агрегируется по сумме различных данных. Я хочу предсказать количество продаж в зависимости от различных признаков, таких как:
- неделя
- цена за единицу
- страна магазина
- город магазина
- 2-3 других категориальных метаданных
- другие признаки
Я понимаю, что эти данные следует интерпретировать как временной ряд, но из-за нехватки доступных исторических данных ни одна модель не может конкурировать с наивным подходом.
Проблема, с которой я сталкиваюсь, заключается в том, что целевая переменная – это сумма сгруппированных признаков, таких как месяц, цена, страна и город. Если я добавляю или удаляю один из сгруппированных признаков, я получаю идентичные точки данных, и набор данных становится неоднородным, поэтому мне нужно выполнить группировку (сумму), чтобы восстановить согласованность. Эта операция изменит целевую переменную и количество данных. У меня нет идей, как валидировать регрессионные модели, обученные на разных поднаборах признаков, потому что исходный набор данных не равен. Я знаю, что есть и другие техники выбора признаков, такие как фильтрация или встроенные методы, которые предлагают обходные пути, но мне бы хотелось узнать, существуют ли методы для решения этой проблемы.
Пример:
неделя цена_за_единицу страна_магазина продажи
0 1 3.0 C1 30
1 1 3.0 C2 32
2 1 4.0 C1 23
3 2 3.5 C1 19
4 2 3.5 C2 27
5 2 6.5 C1 35
6 3 2.0 C1 17
7 3 3.0 C1 15
8 3 4.0 C2 7
9 4 2.0 C1 19
10 4 5.0 C1 41
11 4 5.0 C2 21
После удаления столбца страна_магазина:
неделя цена_за_единицу продажи
0 1 3.0 30
1 1 4.0 23
2 1 3.0 32
3 2 6.5 35
4 2 3.5 19
5 2 3.5 27
6 3 2.0 17
7 3 3.0 15
8 3 4.0 7
9 4 5.0 41
10 4 2.0 19
11 4 5.0 21
Теперь есть дублирующиеся точки данных, и столбец продаж неверен, потому что мне нужна сумма. Поэтому после агрегирования я получаю:
неделя цена_за_единицу продажи
0 1 3.0 62
1 1 4.0 23
2 2 3.5 46
3 2 6.5 35
4 3 2.0 17
5 3 3.0 15
6 3 4.0 7
7 4 2.0 19
8 4 5.0 62
Предположим, я хочу провести выбор вперед или назад с линейной регрессией. На каждом шаге будет добавляться или удаляться столбец. Таким образом, количество строк зависит от выбранного признака. Я не могу придумать метрику для сравнения этих регрессионных моделей.
Мне кажется, что существует некоторая путаница между этими двумя этапами:
- Определение проблемы и соответствующая подготовка данных
- Применение методов машинного обучения к данным (выбор признаков и т.д.)
Эти два этапа должны быть различными: любая агрегация должна проходить на этапе 1, чтобы в конце этапа 1 набор данных был фиксирован.
В вашем примере на этапе 1 вы решили предсказать общий объем продаж по магазинам с учетом недели и цены за единицу. Обратите внимание, что вы также можете выбрать другие варианты:
- средний объем продаж по магазину как целевой показатель
- сохранять одну строку для каждого магазина: в зависимости от цели иногда нормально иметь несоответствия в данных, регрессия может с ними справиться.
- вы можете решить, что экземпляр для магазина охватывает N прошлых недель и предоставить продажи за эти недели, цель – следующая неделя (возможно, это также поможет).
- …
И, конечно, вы можете делать это столько раз, сколько необходимо для изучения различных проблем, каждый раз получая другую версию данных, которая представляет собой конкретную задачу. Только после того, как вы формально определили свою проблему и подготовили данные, начинается часть, связанная с машинным обучением. Например, пошаговая регрессия (или любая другая техника) не может работать, если данные модифицируются/агрегируются в ходе выполнения этапов.
Ответ или решение
Для того чтобы эффективно решить задачу выбора признаков при работе с агрегированными целевыми данными, необходимо последовательно подойти к подготовке данных и последующим этапам применения методов машинного обучения. Ваш вопрос затрагивает многие аспекты, и я постараюсь разобрать их более подробно.
Шаг 1: Определение задачи и подготовка данных
Прежде чем погружаться в выбор признаков, важно чётко определить, какую именно задачу вы хотите решить и как вы собираетесь подготовить данные для этой задачи. В ваших данных продажи суммируются по неделям, и это требует некоторой осторожности при обработке.
-
Выбор целевого признака: Вы можете выбрать различные целевые переменные в зависимости от вашей бизнес-задачи:
- Общий объём продаж за неделю.
- Средний объём продаж по магазину за неделю.
- Продажи для конкретного магазина на протяжении нескольких недель, предсказывая продажи в следующую неделю (очень полезный подход при недостатке исторических данных).
-
Агрегация данных: Чтобы избежать дублирования данных и inconsistencies, необходимо провести агрегацию данных. Например, если выберете средние продажи, вы можете агрегировать данные по неделям и для каждой комбинации уникальных признаков (например, цены за единицу, город магазина и др.). Важно делать это на этапе подготовки данных, а не в процессе выборки признаков.
-
Форматирование данных: Каждая строка вашего датасета должна представлять уникальную комбинацию признаков с соответствующим значением целевой переменной. Например:
week price_per_unit sales store_city 1 3.0 62 C1 1 4.0 23 C2 2 3.5 46 C1 3 6.5 35 C2 4 2.0 19 C1
Шаг 2: Применение методов машинного обучения
Теперь, когда данные подготовлены, вы можете применить методы выбора признаков или обучения модели:
-
Методы фильтрации (filter methods): Рассмотрите использование метода фильтрации, чтобы определить важные признаки. Это могут быть:
- Корреляция между признаками и целевым показателем.
- Статистические тесты, такие как ANOVA (для категориальных признаков).
- Использование коэффициентов важности от деревьев решений.
-
Контроль за неполным набором данных: При выполнении идей, таких как пошаговое добавление или удаление признаков, убедитесь, что ваши данные остаются консистентными. Например, вы можете использовать кросс-валидацию, чтобы проверить, как модель работает при разных выборках.
-
Оценка моделей: Для оценки моделей, обученных на различных наборах признаков, используйте методы пакетной оценки. Это может быть, например, RMSE или MAE, и их сравнение на одинаковых данных (то есть на одной и той же агрегации).
Заключение
Важно отметить, что подготовка данных и чёткое определение задачи должны предшествовать этапу машинного обучения. Каждый раз, когда вы меняете набор признаков, обязательно используйте фиксированный набор данных, чтобы избежать inconsistent interpretations и конфликтов в ваших данных.
Таким образом, использование правильной процессуальной структуры позволит вам избежать проблем с выбросами и обеспечит более точное моделирование продаж по выбранным признакам.