Подобрете резултатите от прогнозирането, развивайки силна архитектура на невронната мрежа

Марко Черлиани

22 май 2019 г. · 8 минути четене

Справянето с прогнозирането на екстремни събития е чест кошмар за всеки Data Scientist. Оглеждайки се, открих много интересни ресурси, които се занимават с този проблем. Лично аз буквално се влюбвам в подхода, издаден от Uber Research. В своите статии (две версии са налични тук и тук) те разработиха ML решение за ежедневно прогнозиране на бъдещото търсене на пътници. Тяхната методология открадна вниманието ми за неговата гениалност, добро обяснение и лесно изпълнение. Така че целта ми е да възпроизведа откритието им на питоничен език. Много съм доволен от това предизвикателство и в крайна сметка подобрих знанията си за прогнозиране на регресията.

прогнозиране

Най-важните изводи от тази публикация могат да бъдат обобщени като:

  • Разработете стабилен подход за оценка и сравнение на моделите на Keras (избягване в същото време на проблема с теглото генератор на семена);
  • Внедрете прост и интелигентен LSTM Autoencoder за създаване на нови функции;
  • Подобрете представянето на прогнозата за прогнозиране за времеви редове с лесни трикове (вижте стъпка по-горе);
  • Справете се с вложения набор от данни, т.е. проблеми, при които имаме наблюдения, които принадлежат на различни обекти (например времеви серии от различни магазини/двигатели/хора и т.н.) ... в този смисъл ние разработваме само модел с висока производителност за всички!

Но пазете Kalm и нека продължим стъпка по стъпка.

В Uber точната прогноза за завършени пътувания (особено по време на специални събития) осигурява поредица от важни предимства: по-ефективно разпределение на водача, водещо до намалено време на изчакване за състезателите, планиране на бюджета и други свързани задачи.

За да достигнат високо точни прогнози за търсенето на шофьори за споделяне на пътувания, изследователите на Uber разработиха високоефективен модел за прогнозиране на времеви редове. Те могат да се поберат (един изстрел) на един модел с много разнородни времеви редове, идващи от различни места/градове. Този процес ни позволява да извлечем подходящи времеви модели. В крайна сметка те успяха да прогнозират търсенето, обобщавайки за различни места/градове, надминавайки класическите методи за прогнозиране.

За тази задача Uber използва вътрешен набор от данни за ежедневни пътувания между различни градове, включително допълнителни функции; т.е. информация за времето и информация на ниво град. Те имаха за цел да прогнозират търсенето на следващия ден от фиксиран прозорец от минали наблюдения.

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

Изборът ни се дължи на необходимостта от вложен набор от данни с временна зависимост: имаме времеви редове за всеки щатски пазар, общо 54, число, което нараства до 108, ако вземем предвид една времева редица за всеки тип (конвенционални и органични). Тази структура от данни е подчертана като важна от изследователите на Uber, тъй като позволява на нашия модел да открива важни невидими отношения. Също така, корелацията между сериите носи предимства за нашия LSTM Autoencoder по време на процеса на извличане на функции.

За да изградим нашия модел, ние използвахме времевите редове на цените, с които разполагаме до края на 2017 г. Първите 2 месеца на 2018 г. се съхраняват и използват като набор от тестове. За нашия анализ ще вземем предвид и всички предоставени регресори. Наблюденията са показани със слаба честота, така че нашата цел е: като се има предвид фиксиран отминал период (4 седмици) от функции, да се предскаже предстоящата слабо цена.

Поради липсата на експоненциален растеж и тенденциозно поведение, не е необходимо да мащабираме ценовите си серии.

За да решим нашата задача за прогнозиране, ние възпроизвеждаме новата архитектура на модела, предложена от Uber, която предоставя един модел за хетерогенно прогнозиране. Както показва фигурата по-долу, моделът първо грундира мрежата чрез автоматично извличане на функции, обучавайки LSTM Autoencoder, което е от решаващо значение за улавяне на сложна динамика от времеви редове в мащаб. След това векторите на характеристиките се обединяват с новия вход и се подават към LSTM Forecaster за прогнозиране.

Нашият работен процес за прогнозиране е лесно да си представим: ние имаме първоначалните прозорци на седмични цени за различни пазари. Започваме да обучаваме нашия LSTM Autoencoder върху тях; След това премахваме кодера и го използваме като създател на функции. Втората и последна стъпка, необходима за обучение на прогнозен LSTM модел за прогнозиране. Въз основа на реални/съществуващи регресори и предишните изкуствено генерирани функции, ние сме в състояние да предоставим прогноза за цената на авокадо през следващата седмица.

Лесно пресъздаваме тази логика с Keras.

Нашите LSTM Autoencoders са съставени от прост LSTM енкодер слой, последван от друг прост LSTM декодер. Не забравяйте в края на TimeDistributed слоя. Ще разберете полезността на отпадащите по време на оценката, в този момент те са безвредни, повярвайте ми!

Изчисляваме извличане на характеристики и обединяваме резултата с други променливи. В този момент направих малко отклонение от решението на Uber: те предлагат да се манипулират векторите на характеристиките, извлечени от нашия енкодер, като ги агрегира чрез ансамблерна техника (напр. Усредняване). Реших да ги оставя оригинални и безплатни. Правя този избор, защото ми позволява да постигна по-добри резултати в експериментите си.

В крайна сметка, моделът за предсказване е друга проста невронна мрежа, базирана на LSTM:

И накрая, почти сме готови да видим някои резултати и да направим прогнози. Последните стъпки включват създаването на съперничещ модел и определянето на последиците от надеждна методология за прогнозиране за сравнение на резултатите.

Лично най-добрият начин да се оценят две различни процедури е да се възпроизвеждат колкото е възможно повече, за да се отбележи вниманието само в точките на реалния интерес. В това изпълнение искам да покажа доказателства за мощността на LSTM Autoencoder като инструмент за създаване на съответни функции за прогнозиране на времеви редове. В този смисъл, за да оценя добротата на нашата методология, реших да разработя нов модел за прогнозиране на цените със същата структура като предишната ни прогноза NN.

Единствената разлика между model1 и model2 е характеристиките, които са получили като вход: model1 получава изхода на енкодера плюс външните регресори; model2 получава минали сурови цени плюс външните регресори.

Прогнозирането на времеви редове е от решаващо значение за изключителната променливост на интересуващата област. Освен това, ако се опитате да изградите модел, базиран на Neural Network, вашите резултати също подлежат на вътрешна инициализация на тежестта. За да се преодолее този недостатък, съществуват редица подходи за оценка на несигурността: от байесовски до такива, базирани на теорията за началния ремък.

В своята работа изследователите на Uber комбинират Bootstrap и Bayesian подходи, за да създадат проста, стабилна и строга несигурност, обвързана с добро покритие и доказани свойства на конвергенция.

Тази техника е изключително проста и практична ... косвено вече я внедрихме! Както можете да видите на фигурата по-долу, по време на процеса на пренасочване, отпадането се прилага към всички слоеве както в кодера, така и в мрежата за прогнозиране. В резултат на това случайното отпадане в кодера смущава интелигентно входа в пространството за вграждане, което отчита потенциалната погрешна спецификация на модела и се разпространява допълнително през мрежата за прогнозиране.

Питонично говорене, ние просто трябва да добавим обучими отпадащи слоеве в нашата невронна мрежа и да ги активираме отново по време на прогнозиране (Keras използваше за намаляване на отпадането по време на прогнозиране). Тук опростената функция, която използвах, която компресира: активирането на отпадането, включва обединяване и прогнозиране всичко в едно изстрелване.

За окончателната оценка трябва да повторим извикването на горната функция и да съхраним резултатите. Също така изчислявам оценяването на прогнозата при всяко взаимодействие (избрах Mean Absolute Error).

Трябва да зададем броя изчисления на оценката (100 пъти в нашия случай). Със съхранените резултати можем да изчислим средното, стандартното отклонение и относителната несигурност на MAE.

Повторяваме същата процедура за нашия „съперничещ модел“, направена само от мрежата за прогнозиране на LSTM. След осредняване на резултатите и изчислителна несигурност, крайните резултати са: 0,118 MAE (0,0012 MAE несигурност) за LSTM Autoencoder + LSTM Forecaster и 0,124 MAE (0,0015 MAE несигурност) за единичен LSTM Forecaster. Регистрираме общо окончателно подобрение от 5% в точността на прогнозата със сходна степен на несигурност. Можем да твърдим, че нашият LSTM Autoencoder е добро оръжие за извличане на важни невидими функции от времеви редове. По-долу отчитам също резултатите за оценяване на различни пазари както за органични, така и за конвенционални видове авокадо.

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

В тази публикация репликирам архитектура на невронна мрежа от край до край, разработена в Uber за прогнозиране на специални събития. Искам да подчертая: силата на LSTM Autoencoder в ролята на екстрактор на функции; мащабируемостта на това решение, за да се обобщи добре, като се избягва обучението на множество модели за всеки времеви ред; способността да се осигури стабилен и доходоносен метод за оценка на невронната мрежа.

Също така отбелязвам, че този вид решение е подходящ, когато имате на разположение достатъчен брой времеви редове, които споделят често срещано поведение ... Не е важно те да се виждат веднага, Autoencoder прави това за нас.