Я работаю над проектом прогнозирования временных рядов, в котором мне нужно спрогнозировать еженедельные продажи (
Код: Выделить всё
kg_ordered_sum
Код: Выделить всё
W-MON
Цель:
Прогнозируйтеkg_ordered_sum во время t для каждой комбинации customer_name и prod_family, используя функции, рассчитанные до времени t-1.
Подход:
Расчет функций: Все функции рассчитываются на основе данных до момента времени t- 1 для предотвращения утечки данных.
- Функции включают в себя:
Накопленные суммы (например, совокупная кг_ordered_sum) - Запаздывающие переменные (например,kg_ordered_sum за предыдущие недели)
- Скользящая статистика
- Частота покупок
- Недели с момента первой покупки
Моделирование. Для прогнозирования я использую модели машинного обучения, такие как XGBoost.
Этапы подготовки данных:
Загрузка и предварительная обработка данных:
Код: Выделить всё
df = load_and_preprocess_data(data_path)
weekly_sales = preprocess_raw_data(df)
weekly_sales['is_future'] = 0 # All data initially marked as historical
Данные обучения: до 30 сентября 2024 г. (30 сентября 2024 г. ).
Данные тестирования: с 7 октября 2024 г. (07.10.2024) и далее. Тестовые данные означают будущее, которое я хочу предсказать, а не обычные обучающие и тестовые наборы данных, на которых я тренирую и оцениваю свою модель. Я уже сделал это, показав хорошие результаты r2score (0,86). Теперь я хочу смоделировать реальный сценарий, в котором мне действительно нужно сделать прогнозы на следующую неделю.
Создать будущий фрейм данных для прогнозирования:
Код: Выделить всё
# Define cutoff date
cutoff_date = pd.to_datetime('2024-09-30')
# Historical data up to cutoff date
history_upto_cutoff = weekly_sales[weekly_sales['date']
[list]
[*]При вычислении совокупных функций, таких как cumulative_kg_ordered, следует ли исключать будущие периоды (где is_future == 1) или следует включать исторические значения присваивается будущим данным в этих расчетах?
[*]Для таких функций, как Purchase_ Frequency и Weeks_since_first_purchase, которые зависят от first_purchase_date и order_count, значения в будущем становятся нулевыми или неверными. периоды в зависимости от того, как они рассчитываются.
[/list]
Мои вопросы:[/b]
[list]
[*]Как мне следует обрабатывать расчеты функций для будущих периодов, чтобы предотвратить утечку данных и одновременно предоставить модели достаточный исторический контекст?
Приемлемо ли использование исторических значений, присвоенных будущим данным в расчетах объектов, или мне следует продолжать исключать будущие периоды из совокупных сумм и подсчетов?
Существуют ли передовые методы обработки кумулятивных и запаздывающих функций в прогнозировании временных рядов, позволяющие сбалансировать предотвращение утечки данных и производительность модели?
[/list]
Любые рекомендации, предложения или передовой опыт от тех, кто имеет опыт прогнозирования временных рядов и разработки функций, будут очень признательны!
Подробнее здесь: [url]https://stackoverflow.com/questions/79123110/time-series-forecasting-how-to-predict-future-values-using-features-calculated[/url]