Въведение в модела с авторегресивни разпределени закъснения с помощта на Python.

Тук ще научите как да създавате модели за прогнозиране с многовариантни времеви редове.

Това е продължение на моята предишна публикация. Там описвам основните стъпки за контролирано обучение с едномерни времеви редове.

Въведение

Времевият ред е многовариантен, ако съдържа повече от една променлива.

Вижте фигура 1 за пример. Той показва месечен многовариантен времеви ред за продажбите на различни видове вина. Всеки тип вино е променлива във времевия ред.

Да предположим, че искате да прогнозирате една от променливите. Да речем, продажбите на пенливо вино (личен фаворит :-) ). Как можете да създадете модел, за да направите това?

Често срещан подход е тази променлива да се вземе и да се разглежда като едномерен времеви ред. Има много методи, предназначени за моделиране на тези серии. Примерите включват ARIMA, експоненциално изглаждане или Пророка на Facebook. „Авторегресивните подходи за машинно обучение се използват все повече“.

И все пак други променливи може да съдържат важни улики за бъдещите продажби на пенливо вино. Разгледайте корелационната матрица по-долу.

Продажбите на пенливо вино (втори ред) показват прилична корелация с продажбите на други вина.

Така че може би е добра идея да опитате да включите тези променливи в модела.

Можем да направим това с подход, наречен Авторегресивно разпределено забавяне (ARDL).

Авторегресивно разпределено забавяне

Авторегресия с едномерен времеви ред

Както подсказва името, моделът ARDL се основава на авторегресия.

Автоматичната регресия е гръбнакът на повечето модели с едномерни времеви редове. Работи в две основни стъпки.

Първо, трансформираме (едномерния) времеви ред от последователност от стойности в матрица. Ние правим това с метода time delay embedding. Въпреки фантастичното име, този подход е доста прост. Идеята е да се моделира всяка стойност въз основа на последните скорошни стойности преди нея. „Проверете предишната ми публикация за подробно обяснение и изпълнение“.

След това изграждаме регресионен модел. Бъдещите стойности представляват целевата променлива. „Обяснителните променливи са последните скорошни стойности“.

Многовариантният случай

Идеята е подобна за многомерни времеви редове. Но вие също добавяте миналите стойности на други променливи към обяснителните променливи. Това води до метода, наречен автоматично регресивни разпределени забавяния. Името Разпределени закъснения се отнася до използването на закъсненията на допълнителни променливи.

Сглобяване на всичко. Бъдещите стойности на променлива във времева серия зависят от нейните собствени закъснения и закъсненията на други променливи.

Нека кодираме този метод, за да стане ясно.

Hands On

Многовариантните времеви редове често се отнасят до данни за продажбите на много свързани продукти. Ще използваме времевия ред на продажбите на вино като пример. Можете да го получите от тук или тук. И все пак подходът ARDL е приложим и към други области освен търговията на дребно.

Трансформиране на времевите редове

Започваме с трансформиране на времевия ред с помощта на скрипта по-долу.

Прилагаме функцията time_delay_embeddingкъм всяка променлива във времевия ред (редове 18–22). Резултатите са обединени в един кадър с данни на pandas в ред 23.

Обяснителните променливи (X) са последните 12 известни стойности на всяка променлива във всяка времева стъпка (ред 29). Ето как изглеждат те за изоставането t-1 (други закъснения са пропуснати за краткост):

Целевите променливи са определени в ред 30. Те се отнасят до бъдещите 6 стойности на продажбите на пенливо вино:

Изграждане на модел

След като подготвите данните, вие сте готови да изградите модел. По-долу прилагам прост цикъл на обучение и тестване с помощта на произволна гора.

След като настроим модела (ред 11), получаваме прогнозите в тестовия набор (ред 14). Моделът получава средна абсолютна грешка от 288,13.

Избор на брой лагове

Използвахме 12 лага на всяка променлива като обяснителни променливи. Това беше дефинирано в параметъра n_lagsна функцията time_delay_embedding.

Как трябва да зададете стойността на този параметър?

Трудно е да се каже предварително колко стойности трябва да бъдат включени. Това зависи от входните данни и конкретната променлива.

Лесен начин да се подходи към това е да се използва избор на функции. Първо, започнете със справедливо количество стойности. След това намалете този брой според оценките за важност или ефективността на прогнозиране.

Ето опростена версия на този процес. Първите 10 характеристики са избрани според оценките за важност на Случайните гори. След това цикълът на обучение и тестване се повтаря.

Първите 10 функции показват по-добро прогнозиране от всички оригинални предиктори. Ето важността на тези функции:

Както се очакваше, забавянията на целевата променлива (Sparkling) са най-важни. Но някои забавяния на други променливи също са от значение.

Разширения към ARDL

Множество целеви променливи

Имахме за цел да прогнозираме една променлива (пенливо вино). Ами ако се интересуваме от прогнозиране на няколко?

Това би довело до метод, наречен Vector Auto-Regressive (VAR).

Подобно на ARDL, всяка променлива се моделира въз основа на своите закъснения и закъсненията на други променливи. VAR се използва, когато искате да предвидите много променливи, а не само една.

Връзка с моделите за глобално прогнозиране

Струва си да се отбележи, че ARDL не е същото като „модел за глобално прогнозиране“.

В случая на ARDL информацията за всяка променлива се добавя към обяснителните променливи. Броят на променливите обикновено е малък и с еднакъв размер.

Глобалните модели за прогнозиране обединяват историческите наблюдения на много времеви редове. Моделът отговаря на тези наблюдения. И така, всяка нова серия се добавя като нови наблюдения. Освен това глобалните модели за прогнозиране обикновено включват до хиляди времеви редове. В предишна публикация описвам как работят моделите за глобално прогнозиране. Това са все по-често използвани подходи за прогнозиране.

Вземане

  • Многомерен динамичен ред съдържа две или повече променливи;
  • Методът ARDL може да се използва за контролирано обучение с многовариантни времеви редове;
  • Оптимизирайте броя на забавянията, като използвате стратегии за избор на функции.
  • Използвайте VAR метод, ако искате да предвидите повече от една променлива.

Благодаря за четенето и ще се видим в следващата история!

Препратки

[1] Rob Hyndman и Yangzhuoran Yang (2018). tsdl: Библиотека с данни за времеви редове. v0.1.0. https://pkg.yangzhuoranyang.com/tsdl/