Як застосувати Нейронну мережу до прогнозування часових рядів?


83

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

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




@solartic, просто цікаво, ти успішно реалізував цей метод?
Saggy Manatee and Swan Folk

Відповіді:


102

Ось простий рецепт, який може допомогти вам почати писати код і тестувати ідеї ...

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

  1. Дослідницький аналіз даних: застосуйте деякі традиційні методи аналізу часових рядів для оцінки залежності відставання в даних (наприклад, автокореляція та часткові графіки автокореляції, перетворення, диференціювання). Скажімо, що ви вважаєте, що значення для даного місяця співвідноситься з даними за останні три місяці, але не набагато перевищує це.
  2. Розподіліть ваші дані на навчальні та валідаційні набори: Візьміть перші 24 бали як свої навчальні значення, а решта - як набір перевірки.
  3. Створіть схему нейронної мережі: Ви отримаєте значення останніх трьох місяців у якості вхідних даних і хочете передбачити значення наступного місяця. Отже, вам потрібна нейронна мережа з вхідним шаром, що містить три вузли, і вихідним шаром, що містить один вузол. Напевно, у вас повинен бути прихований шар, що має принаймні пару вузлів. На жаль, вибір кількості прихованих шарів та їх відповідної кількості вузлів - це не те, для чого існують чіткі вказівки. Я б почав з малого, як 3: 2: 1.
  4. Створіть схеми тренувань: у кожного шаблону тренувань буде чотири значення, причому перші три відповідають вхідним вузлам, а останнє визначає, яке правильне значення для вихідного вузла. Наприклад, якщо вашими даними про навчання є значення тоді
    x1,x2,x24
    pattern1:x1,x2,x3,x4
    pattern2:x2,x3,x4,x5
    pattern21:x21,x22,x23,x24
  5. Тренуйте нейронну мережу за цими схемами
  6. Перевірте мережу на наборі валідації (місяці 25-36): Тут ви перейдете до трьох значень, які нейронна мережа потребує для вхідного шару, і побачите, що встановлюється вихідний вузол. Отже, щоб побачити, наскільки добре навчена нейронна мережа може передбачити значення 32 місяця, ви перейдете у значеннях за 29, 30 та 31 місяці

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

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

Я настійно рекомендую завітати на веб-сайт neural_forecasting , який містить багато інформації про змагання з прогнозування нейронної мережі. Мотиви сторінка особливо корисна.


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

1
Чудова відповідь. Я вважаю це дуже корисним. Пояснення високого рівня - це саме те, що я хотів. @rossdavidh: Хороший бал +1.
солартичний

2
Було б чудово отримати тут кілька прикладних кодів.
Лео Леопольд Герц 준영

1
Цікавою річчю буде багатовимірний набір даних часового ряду разом з регресорами ..
Томмазо Герріні

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