Чи можливо автоматизувати прогнозування часових рядів?


17

Я хотів би побудувати алгоритм, який міг би проаналізувати будь-який часовий ряд і «автоматично» вибрати найкращий традиційний / статистичний метод прогнозування (та його параметри) для аналізованих даних часових рядів.

Чи можна було б зробити щось подібне? Якщо так, чи можете ви дати мені кілька порад, як можна підійти до цього?


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

3
Ні. Немає способу визначити, яка модель найкраща. Python не є актуальним у цій дискусії. Проте є спроби з хорошими результатами. Наприклад проект github.com/facebook/prophet . Він також має зв'язування Python.
Cagdas Ozgenc

3
Я голосую за те, щоб залишити відкритим, тому що вважаю, що це розумне питання - навіть якщо відповідь "ні". Я б запропонував видалити python з назви, тому що це не актуально або особливо для теми тут.
mkt - Відновіть Моніку

1
Я видалив python із назви, як було запропоновано. Дякую за відповіді.
StatsNewbie123

2
Дивіться теорему "без безкоштовного обіду".
AdamO

Відповіді:


19

Спочатку потрібно зазначити, що підхід, окреслений IrishStat, характерний для моделей ARIMA, а не для будь-якого загального набору моделей.

Щоб відповісти на ваше головне питання "Чи можливо автоматизувати прогнозування часових рядів?":

Так. У моєму полі прогнозування попиту це робить більшість комерційних пакетів прогнозування. Кілька пакетів з відкритим вихідним кодом зробити це , а також, в першу чергу auto.arima Роб Гайндман () (автоматизоване прогнозування ARIMA) і ETS () (автоматизованим експоненціальне прогнозування згладжує) функція з відкритого джерела Forecast пакета в R дивіться тут докладно про ці дві функції . Існує також реалізація Python auto.arima під назвою Pyramid , хоча, на мій досвід, вона не настільки зріла, як пакети R.

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

Однак є головне застереження: всі ці методи працюють у межах однієї сімейства моделей. Вони вибирають найкращу можливу модель серед набору моделей ARIMA, або найкращу можливу модель серед набору моделей експоненціального згладжування.

Це набагато складніше зробити це, якщо ви хочете вибрати з різних моделей сімейства, наприклад, якщо ви хочете вибрати найкращу модель від ARIMA, Експонентне розгладження та метод Theta. Теоретично це можна зробити так само, як ви робите в межах однієї сімейства моделей, тобто використовуючи інформаційні критерії. Однак на практиці потрібно обчислювати AIC або BIC точно однаково для всіх розглянутих моделей, і це є суттєвим завданням. Можливо, краще використовувати перехресну перевірку часових рядів або перевірку вибірки замість інформаційних критеріїв, але це буде набагато більш обчислювально (і втомливо кодувати).

Пакет Prophet Facebook також автоматизує генерування прогнозів на основі загальних моделей адитивів . Однак Prophet підходить лише для однієї єдиної моделі, хоча і дуже гнучкої моделі з багатьма параметрами. Прогнозоване припущення Пророка полягає в тому, що GAM є "єдиною моделлю для управління всіма ними", що може бути теоретично не виправданим, але є дуже прагматичним і корисним для реальних сценаріїв.

Ще одне застереження, яке стосується всіх вищезазначених методів: Імовірно, ви хочете робити автоматичне прогнозування часових рядів, оскільки ви хочете прогнозувати кілька часових рядів, занадто багато для аналізу вручну. В іншому випадку ви можете просто зробити власні експерименти і знайти найкращу модель самостійно. Потрібно пам’ятати, що автоматизований підхід до прогнозування ніколи не знайде кращої моделі для кожного часового ряду - це дасть досить хорошу модель в середньому за весь часовий ряд, але все ж можливо, що деякі з цих часових рядів матимуть кращі моделі, ніж обрані автоматизованим методом. Дивіться цю публікаціюдля прикладу цього. Простіше кажучи, якщо ви збираєтеся працювати з автоматичним прогнозуванням - вам доведеться терпіти "досить хороші" прогнози замість найкращих можливих прогнозів для кожного часового ряду.


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

Що робити, якщо алгоритм повинен бути застосований до більш конкретної галузі, наприклад прогнозування бізнесу (наприклад, для планування виробництва та управління запасами)? Ви вважаєте, що це може досягти кращих результатів?
StatsNewbie123

2
@JoanaClaudino, так, це було б простіше - ось суть того, що роблять пакети прогнозування комерційного попиту. Але це простіше, тому що зазвичай, обмежуючи себе одним конкретним доменом бізнесу, ви можете обмежитися однією конкретною сімейством моделей (часові ряди, що надходять з одного бізнес-домену, матимуть схожі характеристики з точки зору сезонності, щільності даних тощо). . звідси можна з упевненістю припустити, що одна сім'я підійде для всіх)
Скандер Х.

Гаразд, я зрозумів це зараз. Ще раз дякую за таку чудову допомогу.
StatsNewbie123

10

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

Ви попросили поради, і я вважаю, що це може бути хорошим для початку.

Я б запропонував вам написати код, щоб дотримуватись / імітувати цю блок-схему / робочий процес. "Найкращу модель" можна знайти, оцінивши вказаний вами критерій ... це може бути MSE / AIC вбудованих даних або це може бути MAPE / SMAPE утримуваних даних або будь-який критерій на ваш вибір.

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

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

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

Мене попросили дати подальший напрямок щодо того, як слід займатися автоматизацією моделювання часових рядів (або моделювання в цілому) /stats//search?q=peeling+an+onion містить деякі мої вказівки щодо "лущення лука" і пов'язані з ним завдання.

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

Моделі повинні бути досить складними (досить фантазійними), але не надто складними (фантазійними). Якщо припустити, що прості методи працюють зі складними проблемами, не узгоджується з науковим методом за Роджером Беконом і тоннами послідовників Бекона. Як колись сказав Роджер Бекон, і я часто перефразовував: займатися наукою - це пошук повторних зразків. Виявити аномалії - це визначити значення, які не відповідають повторним шаблонам. Бо хто знає шляхи Природи, легше помітить її відхилення, а з іншого боку, хто знає її відхилення, більш точно опише її шляхи. Правила вивчають, спостерігаючи, коли нинішні правила відмовляються. У спірті pf Бекона, виявляючи, коли визначена в даний час "найкраща модель / теорія" є неадекватною, можна потім перейти до "кращого представлення"

З моїх слів "Tukey запропонував дослідницький аналіз даних (EDA), який запропонував схеми вдосконалення моделі на основі очевидних недоліків моделі, запропонованих даними". Це серце AUTOBOX та науки. EDA призначений для того, щоб побачити, що дані можуть сказати нам, поза межами формального завдання моделювання чи тестування гіпотез.

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


Дуже дякую. Ваша відповідь надзвичайно корисна!
StatsNewbie123

Дякую, IrishStat. Це проникливе. Чи виправдано ми коли-небудь зберігати параметр на відміну від "видалити параметр", незважаючи на те, що параметр не є статистично значущим?
ColorStatistics

1
Так. якщо це дає більш "приємну відповідь". Коефіцієнт нахилу, який не відрізняється від 0,0, може забезпечити більш реалістичний (якщо не є статистично значущим) прогноз, інакше перенесення надлишкових коефіцієнтів є нелогічним і викликає підвищену невизначеність прогнозу дисперсії. Деякі автори, не в змозі розібратися з тестами на необхідність та достатність сліпо / наївно, припускають, що ідентифікація моделі - це ступінчастий процес, тоді як Box і Jenkins (і всі інші!) Переймаються тим, щоб зробити модель такою складною, як це потрібно, але не надмірно складною. Альберт Е., JW Tukey та ін.
IrishStat

3
"Цей запропонований підхід автоматизованого прогнозування повинен знайти найкращу модель для кожного часового ряду, адаптувавши форму моделі, тобто налаштовуючи її так, як індивідуальний костюм." Це досить вагоме твердження - якщо точно, це означає, що такий підхід виграє змагання M3, M4. Має це?
Скандер Х.

1
@ joana-claudino Я особливо зацікавлений у вашому проекті ISEG, оскільки я також зацікавлений у розробці Python версії запропонованих нами процедур. Звичайно, це буде поза сайтом від SE.
IrishStat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.