Як поводитися одночасно з багатьма серіями разів?


15

У мене є набір даних, що включає попит на кілька товарів (1200 товарів) за 25 періодів, і мені потрібно передбачити попит кожного товару на наступний період. Спочатку я хотів використовувати ARIMA та тренувати модель для кожного продукту, але через кількість продуктів та налаштування параметрів (p, d, q) це забирає багато часу і не є практичним. Чи рекомендується використовувати регресію, коли попередні вимоги є незалежними змінними (Авторегресивні)?

Чи можу я знати, чи існує якийсь метод для підготовки єдиної моделі для прогнозування попиту на всі 1200 товарів? Буду вдячний, якщо ви можете запропонувати будь-яку бібліотеку в Python, тому що я використовую Python.


3
Самий передовий пакет для аналізу великомірних часових рядів, про який я знаю, знаходиться bigtimeв Р. Можливо, ви могли б зателефонувати на R з Python, щоб мати можливість ним користуватися.
Річард Харді

Відповіді:


11

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

Я б запропонував почати з простої векторної моделі (наприклад, VAR, VMA, VARMA) з низьким ступенем, та деяких простих обмежень параметрів для перехресної кореляції. Подивіться, чи зможете ви знайти розумну модель, яка включає в себе перехресну кореляцію принаймні на один ступінь відставання, а потім перейдіть звідти. Ця вправа потребує читання на основі векторних моделей часових рядів. MTSПакет і bigtimepacakage в Rмають деякі можливості для роботи з багатофакторним тимчасовими рядами, так що було б також варто самостійно ознайомитися з цими пакетами.


Мені відомий найсучасніший пакет аналізу великомірних часових рядів. bigtimeНаскільки я знаю MTS, це більше демонстрація прикладів з підручників, ніж реальний інструмент роботи. Деякі багатовимірні приклади можуть обробляти лише тривимірні серії перед тим, як задушитись обчислювальним тягарем.
Річард Харді

@Richard Hardy: Спасибі --- я відредагував свою відповідь, щоб включити цю.
Моніку

1
Хорошим способом вирішити це було б розглянути байєсівську VAR, а точніше велику баєсовську модель VAR.
Graeme Walsh

7

Як згадував Бен, методи підручників для декількох часових рядів є моделями VAR та VARIMA. На практиці, однак, я не бачив, щоб їх часто використовували в контексті прогнозування попиту.

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

Ідея полягає в тому, щоб скласти ієрархічний перелік ваших різних продуктів, а потім робити прогнозування як на базовому рівні (тобто для кожного окремого часового ряду), так і на сукупному рівні, визначеному вашою ієрархією товару (Див. Додану графіку). Потім ви узгоджуєте прогнози на різних рівнях (використовуючи «Вгору вниз», «Буттон вгору», «Оптимальне узгодження» тощо) залежно від бізнес-цілей та бажаних цілей прогнозування. Зауважте, що у цьому випадку вам не підходить одна велика багатоваріантна модель, а кілька моделей у різних вузлах вашої ієрархії, які потім узгоджуються за допомогою обраного вами методу узгодження.

введіть тут опис зображення

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

Більш просунутий, але схожий за духом підхід застосовують Amazon та Uber, де одна велика нейронна мережа RNN / LSTM навчається за всіма тимчасовими рядами одразу. Це за духом подібне до ієрархічного прогнозування, оскільки воно також намагається навчитися зразкам із подібності та кореляцій між спорідненими часовими рядами. Він відрізняється від ієрархічного прогнозування тим, що він намагається вивчити взаємозв'язки між самими часовими рядами, на відміну від того, щоб цей зв'язок був визначений і зафіксований до того, як робити прогнозування. У цьому випадку вам більше не доведеться мати справу з автоматизованим генеруванням прогнозів, оскільки ви налаштовуєте лише одну модель, але оскільки модель є дуже складною, процедура настройки вже не є простою задачею мінімізації AIC / BIC, і вам потрібно переглянути більш вдосконалені процедури налаштування гіперпараметрів,

Додаткову інформацію див. У цій відповіді (та коментарях) .

Для пакетів Python PyAF доступний, але не дуже популярний. Більшість людей використовують пакет HTS в R, для якого набагато більше підтримки громади. Для підходів, заснованих на LSTM, є моделі DeepAR і MQRNN Amazon, які є частиною послуги, за яку потрібно заплатити. Кілька людей також впровадили LSTM для прогнозування попиту за допомогою Keras, ви можете їх переглянути.


1
Як осторонь. AUTOBOX реалізує такий тип ієрархіального моделювання, про який ви згадували, використовуючи підсумки GROUP як можливу серію водіння, щоб допомогти передбачити ДІТЕЙ за допомогою моделей SARMAX. Невизначеність прогнозів дитини також є кумулятивною функцією невизначеності у батька, включаючи можливість майбутнього імпульсу в обох. Радий бачити, як хтось інший застосовує такий підхід.
IrishStat

Amazon нещодавно відкрив джерело алгоритму DeepAR в рамках GluonTS, який використовує MxNet фреймворк, хоча мені здається, що документація трохи не вистачає на даний момент. aws.amazon.com/blogs/opensource/…
hardikudeshi

5

Проблема з масовими пристосуваннями, які були запропоновані, полягає в тому, що вони рівномірно не справляються з прихованою детермінованою структурою, такою як імпульси, зміна рівня / кроків, сезонні імпульси та тенденції часу або ефективно справляються із запропонованими користувачем причинними зв’язками за https: // autobox.com/pdfs/SARMAX.pdf

Крім того, час обчислення може бути серйозним ускладненням. AUTOBOX (який я допоміг розробити) має дуже складну фазу побудови моделі, яка архівує моделі, і дуже швидкий варіант прогнозування, який повторно використовує розроблену модель, скорочуючи час прогнозування на малу частку строгого часу розробки моделі, коригуючи новий прогноз для останніх дані, що спостерігаються після розробки та зберігання моделі. Це було реалізовано для проекту прогнозування магазину Annheuser-Busch на 600 000 магазинів для приблизно 50 предметів з урахуванням ціни та погоди.

Моделі можна оновлювати поступово, замінюючи попередні моделі за потребою.

Не потрібно параметричних обмежень АБО не опускати одночасного ефекту причинних змінних, як у VAR та VARIMA, одночасно покладаючись лише на минуле всіх рядів a la ARIMA.

Не потрібно мати лише 1 модель з 1 набором параметрів, оскільки моделі можуть і повинні бути налаштовані / оптимізовані під окремі серії.

На жаль, поки що немає рішення Python, але надія залишається вічною.


1
Звучить цікаво. Лише невеликий каламбур: навіть у чомусь такому простому, як VAR, кожна серія отримує власне рівняння, тому необхідність мати лише 1 модель з 1 набором параметрів не викликає особливих проблем. Якщо ви не запропонуєте кілька моделей для однієї серії, це може бути хорошою ідеєю з точки зору комбінацій прогнозів.
Річард Харді

мета: "підготувати єдину модель для прогнозування попиту на всі 1200 товарів? Я сприйняв це буквально як 1 тип рівняння з 1 набором фіксованих / глобальних параметрів, оцінених з усіх 1200 часових рядів". Можливо, я його перечитав
IrishStat

А може, я помилився.
Річард Харді

3

1200 виробів є головним рушієм розмірності вашої проблеми. Зараз у вас всього 25 періодів. Це дуже мало даних, недостатньо для того, щоб зробити будь-який аналіз покривного кореляційного аналізу. Іншими словами, у вас немає даних для одночасного прогнозування всіх продуктів, не зменшуючи розмірність. Це в значній мірі усуває всі VARMA та інші приємні теоретичні моделі. Не можна мати справу з коефіцієнтами цих моделей, їх занадто багато, щоб оцінити.

Розглянемо простий кореляційний аналіз. Вам знадобиться (1200x1200 + 1200) / 2 комірки в матриці коваріації / кореляції. У вас всього 25 точок даних. Матриця буде ранжирована до величезного ступеня. Що ти збираєшся робити? Загалом у вас є два прості підходи: окремі прогнози та факторна модель.

Перший підхід очевидний: ви запускаєте кожен продукт самостійно. Різниця полягає в групуванні їх за деякими ознаками, наприклад, сектором, таким як "закриття чоловіків".

di=jFjβji+eiFj

Якщо це екзогенний фактор, то вам потрібно буде отримати бета-версію, регресуючи серію за цими факторами окремо. Для PCA ви можете зробити надійний PCA і отримати перші кілька факторів з їх вагою, який ви бета-версії.

F^j


Я бачу, що ти вважаєш, що про 25 періодів робиться за дуже короткий часовий ряд, але що робити, якщо вони є місячними значеннями? Тоді в ОП є дані про два місячні дані, що достатньо, щоб зафіксувати деяку сезонність або хоча б використовувати просте експоненціальне згладжування, ні?
Скандер Х.

@SkanderH., 25 балів може бути достатньо для запуску однієї серії (тобто кожної серії самостійно) або сукупності. Моя думка полягає в тому, що недостатньо для запуску цього в системі.
Аксакал

Або це можуть бути екзогенні фактори, наприклад, ті, які ви отримали за допомогою PCA-аналізу. Можливо, ендогенний ?
Річард Харді

1

Я не впевнений, чи зацікавлені ви в хмарних рішеннях, але Amazon робить алгоритм, який вони називають "DeepAR", доступним через AWS SageMaker, як видно тут .

Цей алгоритм призначений спеціально для того, щоб можна було вивчити декілька вхідних часових рядів для створення прогнозів, включаючи статичні та динамічні характеристики; як видно з цього уривку з вищезгаданої пов’язаної сторінки:

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

На жаль, наскільки я можу сказати, вони не роблять цей алгоритм доступним для використання в режимі офлайн / самостійно.

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