Вопрос или проблема
Я занимаюсь машинным обучением и анализом данных уже некоторое время, но теперь я начал изучать прогнозирование временных рядов, и у меня есть (скажем) простой вопрос: Какие характеристики/входные данные нужны для модели прогнозирования временных рядов?
Допустим, я хочу предсказать будущие продажи для конкретного магазина. Вот характеристики, которые у меня есть:
1. дата (характеристика)
2. количество посетителей (характеристика)
3. продажи (результат)
Я буду использовать эти данные для обучения модели, но мой вопрос связан с прогнозированием. Я могу добавить даты в будущем, но не могу добавить количество посетителей
, потому что не знаю этого (я не знаю, сколько людей посетит магазин в будущем). Это означает, что для прогнозирования временных рядов единственным входным параметром, который я могу использовать для будущего прогноза, является дата, правильно?
Есть ли объяснение этому?
Например, если у меня есть простая задача классификации, такая как предсказание пола на основе веса, роста и размера обуви человека, я буду использовать эти характеристики для обучения, а затем добавлю вес, рост и размер обуви для ‘неизвестного’ человека, и моя модель скажет мне, мужчина это или женщина. Но для прогнозирования временных рядов я могу использовать дату и 100 различных характеристик для обучения, но единственной характеристикой, которую я имею для будущего прогноза, является дата.
Может кто-то сказать, прав я или нет, и, пожалуйста, объясните мне эту ‘аномалию’?
К вашему сведению, я думал о том, чтобы начать с Prophet, NeuralProphet, моделей ARIMA и т.д., но в конечном итоге создам свои собственные модели с помощью Keras.
Спасибо! 🙂
Не так много автоматических алгоритмов инженерии признаков для наборов данных временных рядов. Вам либо нужны знания в соответствующей области и необходимо обработать данные, либо используйте что-то простое, чтобы начать, например ARIMA или какую-то модификацию ARIMA. Документация ARIMA объясняет, какая предобработка может потребоваться, например, определение параметров p, d, q и т.д.
Вопрос, который вам следует задать, заключается в том, какова формулировка проблемы? Что вы пытаетесь предсказать?
Когда у вас есть целевая переменная, вам нужно подумать о всем наборе данных и о том, как вы будете делить его на обучающую и тестовую выборки. В отличие от других наборов данных, вам нужно делить тестовые наборы в соответствии с временной шкалой, а не случайно. Для этого даты очень важны. Например, вы можете использовать данные с 2011 по 2015 год для обучения.
Теперь возвращаясь к вашим вопросам, вы пытаетесь предсказать продажи, и если количество посетителей является важной характеристикой, то ваши тестовые данные должны содержать это для конкретной даты. Ваши тестовые данные должны совпадать с обучающей выборкой – вам нужно выполнить все виды предобработки, которые вы сделали с обучающими данными.
Ответ или решение
Правильный подход к предсказанию с использованием моделей временного ряда
Вопрос о том, как правильно делать предсказания с использованием моделей временных рядов, является важной темой для профессионалов в области машинного обучения и анализа данных. На первый взгляд, временные ряды могут показаться простыми, однако они требуют внимания к множеству факторов, которые отличают их от других задач машинного обучения.
Характеристика задачи предсказания
В вашем примере вы желаете предсказать продажи в конкретном магазине, используя данные о дате и количестве посетителей. Основные аспекты, которые стоит учитывать, включают:
- Целевая переменная (результат): в данном случае это продажи.
- Фичи (входящие данные): дата и количество посетителей.
Действительно, в отличие от задач классификации, где у вас есть четко определенные фичи для предсказания, в задачах временных рядов вы сталкиваетесь с ограничениями. Вы правильно заметили, что для предсказания на будущее у вас обеспечен только один параметр — дату. Это связано с тем, что в временных рядах часто встречается зависимость от времени, что требует особого подхода к обработке данных.
Преобразование данных и фичи
Временные ряды требуют внимательного отношения к предварительной обработке и созданию дополнительных фичей. Поскольку вам необходимо предсказать продажи, рассмотрите следующие подходы:
-
Создание новых фичей:
- Лаговые фичи: Используйте продажи и посещаемость за предыдущие дни. Например, продажи за день назад, две недели назад и т.д. Это поможет модели уловить тренды и сезонность.
- Фичи временного ряда: Добавьте сезонные факторы, такие как день недели, месяц, праздники и специальные мероприятия. Эти переменные могут оказать существенное влияние на продажи.
- Экзогенные переменные: Если возможно, используйте данные о факторах, влияющих на количество посетителей (например, погодные условия, маркетинговые акции, конкуренты и т.д.).
-
Проверка на чистоту данных:
- Убедитесь, что ваши данные не содержат выбросов или пропусков. Очистка данных — это важный шаг, так как даже небольшие ошибки могут значительно исказить результаты моделирования.
Этапы построения модели
-
Определение целевой переменной:
- Четко определите, что именно вы хотите предсказать. Это может быть как общая сумма продаж, так и продажи по категориям товаров.
-
Разбиение данных:
- Разделите данные на тренировочный и тестовый наборы на основе временной шкалы. Это особенно важно в задачах временных рядов, чтобы избежать утечек информации.
-
Моделирование:
- Начните с простых моделей, таких как ARIMA или экспоненциальное сглаживание, а затем переходите к более сложным нейронным сетям, если это необходимо. Prophet и NeuralProphet могут стать хорошим выбором, чтобы быстро реализовать прогноз.
-
Оценка моделей:
- Используйте метрики, такие как MAE (ошибка абсолютного значения) или RMSE (корень из средней квадратичной ошибки), для оценки качества ваших предсказаний.
-
Реализация и адаптация:
- Наблюдайте за тем, как модель работает на новых данных, и корректируйте ее по мере необходимости. Временные ряды требуют постоянного обновления и мониторинга.
Заключение
Вы правы, говоря, что в задачах временных рядов предсказания базируется на времени, и важно учитывать, что данные, используемые для обучения, могут быть не полностью доступны для будущих прогнозов. Однако продуманная предварительная обработка и создание дополнительных фич помогут вам существенно улучшить качество предсказаний.
Тем не менее, не забывайте, что каждый проект индивидуален. Важно экспериментировать с различными подходами и адаптировать их под вашу конкретную задачу. Удачи в ваших исследованиях в области временных рядов!