Як розділити набір даних для прогнозування часових рядів?


22

У мене є історичні дані про продажі пекарні (щодня, понад 3 роки). Тепер я хочу створити модель для прогнозування майбутніх продажів (використовуючи такі функції, як будній день, змінні погоди тощо).

Як слід розділити набір даних для підгонки та оцінки моделей?

  1. Чи повинен це бути хронологічний потяг / перевірка / перевірка?
  2. Я б тоді здійснив налаштування гіперпараметрів із набором поїзда та валідацією?
  3. Чи є (вкладене) перехресне підтвердження поганою стратегією проблеми часових рядів?


EDIT

Ось декілька посилань, на які я потрапив після додержання URL-адреси, запропонованої @ ene100:

  • Роб Хайндман, описуючи "похідне прогнозування походження" в теорії та на практиці (з кодом R)
  • Іншими термінами походження прогнозного прогнозування є "оптимізація кроку вперед" ( тут або тут ), "горизонт кочення" або "рухоме початок"
  • видається, що ці методи не будуть інтегровані в наукові програми в найближчому майбутньому, тому що "попит на ці методи і не є зрозумілим" (зазначено тут ).

І це ще одна пропозиція щодо перехресної перевірки часових рядів.

Відповіді:


8

У цьому посиланні з блогу Роб Хандмана є інформація, яка може бути корисною: http://robjhyndman.com/hyndsight/crossvalidation/

На мій досвід, розбиття даних на хронологічні набори (рік 1, рік 2 тощо) та перевірка стабільності параметрів у часі дуже корисні для створення щось надійне. Крім того, якщо ваші дані сезонні або є інший очевидний спосіб розділити їх на групи (наприклад, географічні регіони), то перевірка стабільності параметрів у цих підгрупах також може допомогти визначити, наскільки надійною буде модель і чи має сенс підходити окремі моделі для окремих категорій даних.

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


3

1) Технічно кажучи, вам не потрібно перевіряти вибірку, якщо ви використовуєте AIC та подібні критерії, оскільки вони допомагають уникнути перевитрати.

3) Я не бачу, як можна зробити стандартне резюме, оскільки це передбачає підготовку моделі часових рядів з деякими відсутніми значеннями. Натомість спробуйте скористатися прокручувальним вікном для тренувань та спрогнозуйте реакцію в одному або декількох пунктах, що слідують за вікном.


3
АПК у часових рядах часто базується на помилці прогнозу на один період вперед. Це не дуже говорить про динамічні показники прогнозування на n-період вперед. Отже, цього абсолютно недостатньо.
Аксакал

Не могли б ви надати посилання?
Джеймс

1

Я часто підходжу до проблем з байєсівської точки зору. У цьому випадку я б розглядав можливість використання надмітації як стратегії. Це означає встановити ймовірність отримання ваших даних, але опустити деякі результати. Трактуйте ці значення як пропущені та моделюйте ці відсутні результати, використовуючи відповідні коваріати. Потім поверніть, через який дані опущені. Це можна зробити, наприклад, у 10-разовій процедурі резюме.

Якщо впроваджено всередині програми вибірки, це означає, що на кожному кроці ви набираєте значення кандидата, яке маєте пропущене значення даних (поряд із вашими параметрами) та оцінюєте його ймовірність щодо запропонованої вами моделі. Досягнувши стаціонарності, у вас з'являються контрфактичні вибіркові значення з урахуванням вашої моделі, які ви можете використовувати для оцінки помилки прогнозування: ці зразки відповідають на питання "як виглядала б моя модель за відсутності цих значень?" Зауважте, що ці прогнози також успадкують невизначеність від невизначеності, наявної в оцінках коефіцієнтів, тому, коли ви збираєте всі прогнозовані значення для, наприклад, 1 березня 2010 року разом, ви отримаєте розподіл прогнозів на цю дату.

Той факт, що ці значення відібрані, означає, що ви все ще можете використовувати терміни помилок, які залежать від наявності повного ряду даних (наприклад, ковзної середньої), оскільки у вас є вибіркове значення результату на кожному кроці.


1

У вашому випадку варіантів не так багато. У вас є лише одна пекарня, здається. Таким чином, для запуску тесту поза зразком ваш єдиний варіант - це відрив часу, тобто навчальний зразок проходив би від початку до певного моменту часу, а проведення з цього моменту - до сьогодні.

ут=f(т)+εтf(т)ус<т


Звучить багатообіцяюче. Що таке підпис "s" у y_s <= t?
tobip

тусс<т

Я думаю, що мої продажі хлібобулочних виробів швидше залежать від екзогенних факторів. Я не думаю, що це суто динамічна модель часових рядів, як, наприклад, ціни на акції. За моїми даними, середня середня помилка зі звичайним 5-кратним резюме лише трохи більше, ніж резюме в 5-кратному часовому ряді, що зберігає хронологічний порядок складок, як описано тут (наприклад, 30,7 проти 33,8 для ExtraTreesRegressor) . Не впевнені, чи це вірний спосіб емпіричного тестування на динамічну модель?
tobip

Щось на зразок ARIMA було б динамічною моделлю. Продажі зазвичай постійні, тобто сьогоднішні продажі, як учорашні.
Аксакал

0

Відмова від відповідальності: Метод, описаний тут, не ґрунтується на ретельному читанні літератури. Це моя найкраща спроба імпровізувати метод K-кратного резюме для багатоваріантного аналізу часових рядів з відносно короткими вхідними вікнами (припускаючи відсутність / низьку залежність від більш тривалих часових проміжків), де виникла проблема з неоднорідною наявністю джерел даних над період збору даних.

Спочатку серія спостережень перетворюється на серію вікон історії спостережень довжини віконної довжини та з кроком 1 між вікнами (без кроку). Тоді принцип полягає в тому, щоб розділити набір даних вікон на "черепки" в багато разів довше, ніж довжина window_length (але набагато більше, ніж кількість екземплярів моделі), і розкласти черепки (як гральні карти) як дані перевірки для окремих екземплярів моделі. Щоб зберегти моделі більш чітко відокремленими, карантинне вікно довжини вікна на початку кожного шару не проводиться поза всією підготовкою.

Моделі навчаються на всіх черепах, окрім власних, а перевірка проводиться на власних черепках. Валідація колекції / ансамблю моделей проводиться шляхом підсумовування помилки валідації по всіх черепах, де кожен осколок обробляється відповідним підмоделем. Тестування на небачені дані можна здійснити за допомогою середньої (або іншої підходящої комбінації) виходів усіх підготовлених моделей.

Цей метод призначений для зменшення залежності від того, що система (та джерела даних) є однаковою протягом усього періоду збору даних. Він також повинен надати кожній грубій частині даних однаковий вплив на модель. Зауважте, що не допускати, щоб карантинні вікна завдали шкоди навчанню, важливо, що довжина осколка не надто добре співпадає з періодами, які (як очікується) відображаються в даних, таких як (як правило) щоденний, тижневий та річний цикли.

Модель ансамблю, можливо, погано обробляє нові дані. (Я ще не знаю.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.