20 KiB
Въведение в прогнозиране на времеви серии
Скица от Tomomi Imura
В този урок и следващия ще научите малко за прогнозиране на времеви серии, интересна и ценна част от репертоара на ML учените, която е малко по-малко известна от други теми. Прогнозирането на времеви серии е като „кристално кълбо“: въз основа на миналото представяне на променлива, като например цена, можете да предвидите нейната бъдеща потенциална стойност.
🎥 Кликнете върху изображението по-горе за видео за прогнозиране на времеви серии
Тест преди лекцията
Това е полезна и интересна област с реална стойност за бизнеса, предвид директното ѝ приложение към проблеми като ценообразуване, инвентаризация и въпроси, свързани с веригата на доставки. Въпреки че техниките за дълбоко обучение започнаха да се използват за получаване на повече прозрения за по-добро прогнозиране на бъдещото представяне, прогнозиране на времеви серии остава област, която е силно информирана от класическите ML техники.
Полезната учебна програма за времеви серии на Penn State може да бъде намерена тук
Въведение
Да предположим, че управлявате масив от интелигентни паркинг метри, които предоставят данни за това колко често се използват и за колко време през определен период.
Какво ако можете да предвидите, въз основа на миналото представяне на метъра, неговата бъдеща стойност според законите на търсенето и предлагането?
Точното прогнозиране кога да действате, за да постигнете целта си, е предизвикателство, което може да бъде решено чрез прогнозиране на времеви серии. Това може да не направи хората щастливи, ако бъдат таксувани повече в натоварени времена, когато търсят паркинг място, но със сигурност би било начин за генериране на приходи за почистване на улиците!
Нека разгледаме някои от типовете алгоритми за времеви серии и започнем с тетрадка, за да почистим и подготвим данни. Данните, които ще анализирате, са взети от състезанието за прогнозиране GEFCom2014. Те се състоят от 3 години почасови стойности за електрическо натоварване и температура между 2012 и 2014. Въз основа на историческите модели на електрическо натоварване и температура, можете да предвидите бъдещи стойности на електрическо натоварване.
В този пример ще научите как да прогнозирате една стъпка напред, използвайки само исторически данни за натоварване. Преди да започнете обаче, е полезно да разберете какво се случва зад кулисите.
Някои дефиниции
Когато срещнете термина „времеви серии“, трябва да разберете неговото използване в няколко различни контекста.
🎓 Времеви серии
В математиката „времеви серии са поредица от точки с данни, индексирани (или изброени, или графично представени) в хронологичен ред. Най-често времеви серии са последователност, взета в последователни равномерно разпределени точки във времето.“ Пример за времеви серии е дневната затваряща стойност на Dow Jones Industrial Average. Използването на графики на времеви серии и статистическо моделиране често се среща в обработка на сигнали, прогнозиране на времето, предсказване на земетресения и други области, където събитията се случват и точките с данни могат да бъдат графично представени във времето.
🎓 Анализ на времеви серии
Анализът на времеви серии е анализът на гореспоменатите данни за времеви серии. Данните за времеви серии могат да приемат различни форми, включително „прекъснати времеви серии“, които откриват модели в еволюцията на времеви серии преди и след прекъсващо събитие. Видът анализ, необходим за времевите серии, зависи от естеството на данните. Самите данни за времеви серии могат да приемат формата на поредица от числа или символи.
Анализът, който трябва да се извърши, използва разнообразие от методи, включително честотен домейн и времеви домейн, линейни и нелинейни, и други. Научете повече за многото начини за анализиране на този тип данни.
🎓 Прогнозиране на времеви серии
Прогнозирането на времеви серии е използването на модел за предсказване на бъдещи стойности въз основа на модели, показани от предварително събрани данни, както са се случили в миналото. Въпреки че е възможно да се използват регресионни модели за изследване на данни за времеви серии, с времеви индекси като x променливи на графика, такива данни най-добре се анализират с помощта на специални типове модели.
Данните за времеви серии са списък от подредени наблюдения, за разлика от данни, които могат да бъдат анализирани чрез линейна регресия. Най-често срещаният модел е ARIMA, акроним, който означава „Автокорелативен Интегриран Движещ Среден“.
ARIMA модели „свързват настоящата стойност на серията с минали стойности и минали грешки в прогнозите.“ Те са най-подходящи за анализиране на данни във времеви домейн, където данните са подредени във времето.
Съществуват няколко типа ARIMA модели, за които можете да научите тук и които ще разгледате в следващия урок.
В следващия урок ще изградите ARIMA модел, използвайки Унивариантни времеви серии, които се фокусират върху една променлива, която променя стойността си във времето. Пример за този тип данни е този набор от данни, който записва месечната концентрация на CO2 в обсерваторията Mauna Loa:
CO2 | YearMonth | Year | Month |
---|---|---|---|
330.62 | 1975.04 | 1975 | 1 |
331.40 | 1975.13 | 1975 | 2 |
331.87 | 1975.21 | 1975 | 3 |
333.18 | 1975.29 | 1975 | 4 |
333.92 | 1975.38 | 1975 | 5 |
333.43 | 1975.46 | 1975 | 6 |
331.85 | 1975.54 | 1975 | 7 |
330.01 | 1975.63 | 1975 | 8 |
328.51 | 1975.71 | 1975 | 9 |
328.41 | 1975.79 | 1975 | 10 |
329.25 | 1975.88 | 1975 | 11 |
330.97 | 1975.96 | 1975 | 12 |
✅ Идентифицирайте променливата, която се променя във времето в този набор от данни.
Характеристики на данните за времеви серии, които трябва да се вземат предвид
Когато разглеждате данни за времеви серии, може да забележите, че те имат определени характеристики, които трябва да вземете предвид и да смекчите, за да разберете по-добре техните модели. Ако разглеждате данните за времеви серии като потенциално предоставящи „сигнал“, който искате да анализирате, тези характеристики могат да се разглеждат като „шум“. Често ще трябва да намалите този „шум“, като компенсирате някои от тези характеристики с помощта на статистически техники.
Ето някои концепции, които трябва да знаете, за да работите с времеви серии:
🎓 Тенденции
Тенденциите се определят като измерими увеличения и намаления във времето. Прочетете повече. В контекста на времеви серии става въпрос за това как да използвате и, ако е необходимо, да премахнете тенденциите от вашите времеви серии.
Сезонността се определя като периодични колебания, като например празнични пикове, които могат да повлияят на продажбите. Разгледайте как различни типове графики показват сезонността в данните.
🎓 Аномалии
Аномалиите са далеч от стандартната вариация на данните.
🎓 Дългосрочен цикъл
Независимо от сезонността, данните могат да показват дългосрочен цикъл, като например икономически спад, който продължава повече от година.
🎓 Постоянна вариация
С течение на времето някои данни показват постоянни колебания, като например енергийно потребление през деня и нощта.
🎓 Резки промени
Данните могат да показват резка промяна, която може да изисква допълнителен анализ. Например, резкото затваряне на бизнеси поради COVID предизвика промени в данните.
✅ Ето примерен график на времеви серии, показващ дневните разходи за валута в играта през няколко години. Можете ли да идентифицирате някоя от изброените характеристики в тези данни?
Упражнение - започване с данни за потребление на енергия
Нека започнем с изграждането на модел за времеви серии, за да прогнозираме бъдещо потребление на енергия въз основа на миналото потребление.
Данните в този пример са взети от състезанието за прогнозиране GEFCom2014. Те се състоят от 3 години почасови стойности за електрическо натоварване и температура между 2012 и 2014.
Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli и Rob J. Hyndman, "Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 2016.
-
В папката
working
на този урок, отворете файла notebook.ipynb. Започнете с добавяне на библиотеки, които ще ви помогнат да заредите и визуализирате данни:import os import matplotlib.pyplot as plt from common.utils import load_data %matplotlib inline
Забележете, че използвате файловете от включената папка
common
, която настройва вашата среда и обработва изтеглянето на данните. -
След това, разгледайте данните като dataframe, като извикате
load_data()
иhead()
:data_dir = './data' energy = load_data(data_dir)[['load']] energy.head()
Можете да видите, че има две колони, представляващи дата и натоварване:
load 2012-01-01 00:00:00 2698.0 2012-01-01 01:00:00 2558.0 2012-01-01 02:00:00 2444.0 2012-01-01 03:00:00 2402.0 2012-01-01 04:00:00 2403.0 -
Сега, начертайте данните, като извикате
plot()
:energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show()
-
Сега, начертайте първата седмица на юли 2014, като я предоставите като вход към
energy
в шаблона[от дата]: [до дата]
:energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show()
Прекрасна графика! Разгледайте тези графики и вижте дали можете да определите някоя от изброените характеристики. Какво можем да заключим, като визуализираме данните?
В следващия урок ще създадете ARIMA модел, за да направите прогнози.
🚀Предизвикателство
Направете списък на всички индустрии и области на изследване, които можете да си представите, че биха се възползвали от прогнозиране на времеви серии. Можете ли да си представите приложение на тези техники в изкуствата? В иконометрията? Екологията? Търговията на дребно? Индустрията? Финансите? Къде още?
Тест след лекцията
Преглед и самостоятелно обучение
Въпреки че няма да ги разгледаме тук, невронните мрежи понякога се използват за подобряване на класическите методи за прогнозиране на времеви серии. Прочетете повече за тях в тази статия
Задание
Визуализирайте още времеви серии
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.