У меня есть исторические данные о продажах из пекарни (ежедневно, более 3 лет). Теперь я хочу построить модель для прогнозирования будущих продаж (используя такие функции, как день недели, переменные погоды и т. Д.).
Как я должен разделить набор данных для подбора и оценки моделей?
- Должен ли он быть хронологическим составом / валидацией / тестовым разделением?
- Буду ли я тогда выполнять настройку гиперпараметра с помощью набора поездов и проверки?
- Является ли (вложенная) перекрестная проверка плохой стратегией для проблемы временных рядов?
РЕДАКТИРОВАТЬ
Вот некоторые ссылки, с которыми я столкнулся после перехода по URL, предложенному @ ene100:
- Роб Хиндман, описывающий «происхождение скользящего прогнозирования» в теории и на практике (с помощью R-кода)
- другие термины для начала скользящего прогнозирования - это «оптимизация шага вперед» ( здесь или здесь ), «скользящий горизонт» или «движущийся источник»
- Похоже, что эти методы не будут интегрированы в scikit-learn в ближайшем будущем, потому что «потребность в этих методах и их неясность неясны» (указано здесь ).
И это еще одно предложение для перекрестной проверки временных рядов.
Я часто подхожу к проблемам с байесовской точки зрения. В этом случае, я бы рассмотрел использование оверимпутации в качестве стратегии. Это означает настройку вероятности для ваших данных, но опустите некоторые из ваших результатов. Считайте эти значения пропущенными и смоделируйте эти пропущенные результаты, используя соответствующие им ковариаты. Затем поверните, через который данные опущены. Вы можете сделать это, например, в 10-кратной процедуре CV.
При реализации внутри программы выборки это означает, что на каждом шаге вы рисуете значение кандидата из вашего пропущенного значения данных (вместе с вашими параметрами) и оцениваете его вероятность в сравнении с предложенной вами моделью. После достижения стационарности у вас есть контр-фактические выборочные значения с учетом вашей модели, которые вы можете использовать для оценки ошибки прогнозирования: эти выборки отвечают на вопрос "как бы выглядела моя модель в отсутствие этих значений?" Обратите внимание, что эти прогнозы также унаследуют неопределенность от неопределенности, присутствующей в оценках коэффициентов, поэтому, когда вы соберете все свои прогнозируемые значения, например, 1 марта 2010 г., вы получите распределение прогнозов на эту дату.
Тот факт, что эти значения являются выборочными, означает, что вы все равно можете использовать термины ошибок, которые зависят от наличия полного ряда данных (например, скользящего среднего), поскольку у вас есть выборочное значение результата, доступное на каждом шаге.
источник
В вашем случае у вас не так много вариантов. Кажется, у вас есть только одна пекарня. Таким образом, для запуска теста вне выборки единственным вариантом является временное разделение, то есть обучающая выборка будет с начала до некоторого недавнего момента времени, а удержание будет с этой точки до сегодняшнего дня.
источник
Отказ от ответственности: метод, описанный здесь, не основан на тщательном чтении литературы. Это моя лучшая попытка импровизировать K-кратный метод CV для многомерного анализа временных рядов с относительно короткой длиной входного окна (при условии отсутствия / низкой зависимости в течение более длинных промежутков времени), где была проблема с неоднородным присутствием источников данных в течение период сбора данных.
Сначала серия наблюдений преобразуется в серию окон истории наблюдений длины window_length и с шагом 1 между окнами (без шага). Тогда принцип состоит в том, чтобы разбить набор данных окна на «осколки» во много раз длиннее, чем window_length (но намного больше, чем количество экземпляров модели), и раздать осколки (например, игральные карты) в качестве данных проверки для разделения экземпляров модели. Чтобы модели были более четко разделены, окно карантина window_length в начале каждого сегмента не используется во всех тренировках.
Модели обучаются на всех осколках, кроме их собственных, и проверка выполняется на их собственных осколках. Валидация коллекции / ансамбля моделей выполняется путем суммирования ошибки валидации для всех шардов, где каждый шард обрабатывается соответствующей подмоделью. Тестирование на невидимых данных может быть выполнено с использованием среднего (или другой подходящей комбинации) выходов всех обученных моделей.
Этот метод предназначен для уменьшения зависимости от системы (и источников данных), которая остается неизменной на протяжении всего периода сбора данных. Также предполагается, что каждая грубая часть данных оказывает одинаковое влияние на модель. Обратите внимание, что для того, чтобы не допустить, чтобы окна карантина наносили вред обучению, важно, чтобы длина сегмента не слишком хорошо совпадала с периодами, которые (как ожидается) появятся в данных, такими как (обычно) ежедневные, еженедельные и годовые циклы.
Ансамблевая модель может плохо обрабатывать совершенно новые данные. (Пока не знаю.)
источник