Extrém esemény előrejelzés LSTM Autoencoderekkel

Javítsa az előrejelzési teljesítményt egy erős Neural Network architektúra fejlesztésével

Marco Cerliani

2019. május 22. · 8 perc olvasás

A szélsőséges események előrejelzése minden rémálom minden Data Scientist számára. Arou n d nagyon érdekes forrásokat találtam, amelyek ezzel a problémával foglalkoznak. Személy szerint szó szerint beleszeretek az Uber Researchers által kiadott megközelítésbe. Dolgozatukban (két változat elérhető itt és itt) kifejlesztettek egy ML megoldást az utazók keresletének jövőbeni előrejelzésére. Módszertanuk lelkiismeretessége, jó magyarázata és könnyű megvalósítása miatt vonta el a figyelmemet. Tehát az a célom, hogy felfedezésüket python nyelven reprodukáljam. Nagyon elégedett vagyok ezzel a kihívással, és végül bővítettem tudásomat a regresszió előrejelzéséhez.

autoencoderekkel

A bejegyzés legfontosabb elvihetőségei a következőképpen foglalhatók össze:

  • Készítsen stabil megközelítést a Keras modellek értékeléséhez és összehasonlításához (ugyanakkor elkerülve a súlymag-generátor problémáját);
  • Vezessen be egy egyszerű és okos LSTM Autoencodert új funkciók létrehozása;
  • Javítsa az előrejelzés teljesítményét idősorokhoz könnyű trükkökkel (lásd a fenti lépést);
  • Foglalkozzon a beágyazott adatkészlettel, azaz olyan problémák, ahol különböző entitásokhoz tartozó megfigyelések vannak (például különböző üzletek/motorok/emberek idősorai stb.) ... ebben az értelemben csak egy nagy teljesítményű modellt fejlesztünk ki mindenki számára!

De tartsd meg Kalmot, és haladjunk lépésről lépésre.

Az Ubernél a megtett utak pontos előrejelzése (különösen különleges események esetén) számos fontos előnyt nyújt: hatékonyabb vezetőkiosztás, ami a várakozók rövidített várakozási idejét eredményezi, költségvetés-tervezés és egyéb kapcsolódó feladatok.

Annak érdekében, hogy nagy pontossággal jósolhassák a járművezetői igényeket az utazásmegosztás iránt, az Uber Researchers kifejlesztett egy nagy teljesítményű modellt az idősorok előrejelzéséhez. Képesek egyetlen modellt beilleszteni, sok heterogén idősorral, különböző helyekről/városokból érkezve. Ez a folyamat lehetővé teszi számunkra a releváns időminták kinyerését. Végül képesek voltak előrejelezni a keresletet, általánosítva a különböző helyszíneket/városokat, felülmúlva a klasszikus előrejelzési módszereket.

Ehhez a feladathoz az Uber a különböző városok közötti napi kirándulások belső adatkészletét használta, beleértve a további szolgáltatásokat; azaz időjárási információk és városi szintű információk. Céljuk volt, hogy a múltbeli megfigyelések rögzített ablakából előrejelezzék a másnapi igényeket.

Sajnos ilyen adatok nem állnak rendelkezésünkre, ezért Kaggle rajongóként a kedves Avokádó árak adatkészletet választottuk. Ezek az adatok megmutatják az avokádó korábbi kétféle árát, valamint az eladások mennyiségét az Egyesült Államok több piacán.

Választásunk egy beágyazott, időbeli függőségű adatkészlet szükségességének volt köszönhető: minden egyes amerikai piacra vannak idősorok, összesen 54, ez a szám 108-ra növekszik, ha figyelembe vesszük az egyes típusokhoz egy (a hagyományos és az organikus) idősort. Ezt az adatszerkezetet azért emelik ki fontosnak az Uber Kutatók, mert ez lehetővé teszi modellünk számára a fontos láthatatlan összefüggések felfedezését. Ezenkívül a sorok közötti összefüggés előnyökkel jár az LSTM Autoencoder számára a funkciók kibontása során.

Modellünk felépítéséhez a rendelkezésre álló árak idősorát használtuk fel 2017 végéig. 2018 első 2 hónapját tesztkészletként tároljuk és használjuk. Elemzésünk során figyelembe vesszük az összes regresszort is. A megfigyeléseket gyenge gyakorisággal mutatjuk be, ezért célunk: egy fix múltbeli ablak (4 hét) alapján megjósolni a közelgő gyengén árat.

Az exponenciális növekedés és a trendirányú magatartás hiánya miatt nincs szükségünk az ársorok méretezésére.

Előrejelzési feladatunk megoldása érdekében megismételjük az Uber által javasolt új modellarchitektúrát, amely egyetlen modellt biztosít a heterogén előrejelzéshez. Amint az az alábbi ábrán látható, a modell először a szolgáltatás automatikus kivonatolásával prímálja a hálózatot, kiképezve egy LSTM Autoencodert, amely kritikus fontosságú a bonyolult idősor-dinamika skálán történő rögzítéséhez. A jellemzővektorokat ezután összefűzik az új bemenettel, és az előrejelzés céljából az LSTM Forecaster-be táplálják.

Az előrejelzési munkafolyamatunk könnyen elképzelhető: megvan a kezdeti heti árak árajánlata a különböző piacok számára. Elkezdjük rajtuk képezni az LSTM Autoencoderünket; ezután eltávolítjuk a kódolót, és funkcióalkotóként használjuk. A második és egyben utolsó lépés az előrejelzéshez szükséges előrejelzési LSTM modell kiképzéséhez. A valós/meglévő regresszorok és a korábbi mesterségesen előállított funkciók alapján képesek vagyunk megadni a jövő heti avokádóár-előrejelzést.

Ezt a logikát könnyedén létrehozhatjuk Kerassal.

Az LSTM automatikus kódolóinkat egy egyszerű LSTM kódoló réteg alkotja, amelyet egy másik egyszerű LSTM dekóder követ. Ne felejtsd el a TimeDistributed réteg végén. Meg fogja érteni a lemorzsolódás hasznát az értékelés során, ezen a ponton ártalmatlanok, bízz bennem!

Kiszámoljuk a funkciók kinyerését és összefűzzük az eredményt más változókkal. Ezen a ponton tettem egy kis eltérést az Uber megoldástól: azt javasolják, hogy a kódolónkkal kinyert jellemzővektorokat manipulálják, aggregálva őket együttes technikával (pl. Átlagolással). Úgy döntöttem, hogy engedem őket eredetinek és szabadnak. Azért választom, mert ez lehetővé teszi számomra, hogy jobb eredményeket érjek el kísérleteimmel.

Végül a predikciós modell egy másik egyszerű LSTM-alapú ideghálózat:

Végül szinte készen állunk arra, hogy néhány eredményt láthassunk és előrejelzéseket tegyünk. Az utolsó lépések egy rivális modell létrehozását és az eredmények összehasonlítására szolgáló robusztus előrejelzési módszertan következményeinek meghatározását foglalják magukban.

Személy szerint a kétféle eljárás értékelésének legjobb módja az, hogy minél jobban megismételjük őket, hogy csak a valódi érdeklődésre számot tartó helyeken jelöljük meg a figyelmet. Ebben a megvalósításban az LSTM Autoencoder teljesítményét szeretném bemutatni, mint eszköz az idősor-előrejelzés releváns szolgáltatásainak létrehozásához. Ebben az értelemben a módszertanunk jóságának értékeléséhez úgy döntöttem, hogy kidolgozok egy új modellt az ár előrejelzésére, ugyanazzal a szerkezettel, mint a korábbi előrejelzésünk NN.

Az egyetlen különbség a modell1 és a modell2 között azok a tulajdonságok, amelyeket bemenetként kaptak: a1 modell megkapja az kódoló kimenetét és a külső regresszorokat; A model2 megkapja a múltbeli nyers árakat, valamint a külső regresszorokat.

Az idősoros előrejelzés kritikus jellegű az érdeklődési terület rendkívüli változékonysága szempontjából. Ezen túlmenően, ha megpróbál egy modellt felépíteni a Neural Network alapján, akkor az eredményeket szintén belső inicializálásnak kell alávetni. Ennek a hátránynak a leküzdésére számos megközelítés létezik a bizonytalanság becsléséhez: a Bayesistől a bootstrap elméleten alapuló megközelítésekig.

Munkájuk során az Uber kutatói a Bootstrap és a Bayes megközelítéseket ötvözve egyszerű, robusztus és szoros bizonytalanságot hoznak létre, jó lefedettséggel és bizonyítható konvergencia tulajdonságokkal.

Ez a technika rendkívül egyszerű és praktikus ... közvetve már megvalósítottuk! Amint az az alábbi ábrán látható, az előremenő folyamat során a lemorzsolódást minden kódolóra és az előrejelző hálózatra alkalmazzák. Ennek eredményeként a kódoló véletlenszerű lemorzsolódása intelligensen zavarja a bemenetet a beágyazási térben, amely figyelembe veszi a modell esetleges specifikációit, és tovább terjed a predikciós hálózaton keresztül.

Python nyelven beszélve egyszerűen hozzá kell adnunk az ideghálózatunkba edzhető lemorzsolódó rétegeket, és azokat újra kell aktiválnunk a jóslás során (Keras a becslés idején a lemorzsolódás csökkentésére szolgál). Itt az általam használt egyszerűsített funkció, amely tömöríti: a lemorzsolódás aktiválása, összefűzéssel és előrejelzéssel rendelkezik, egy hajtásban.

A végső értékeléshez meg kell ismételnünk a fenti függvény hívását, és el kell tárolnunk az eredményeket. Kiszámítom az előrejelzés pontozását az egyes interakcióknál (az átlagos abszolút hibát választottam).

Be kell állítanunk az értékelés kiszámításának számát (esetünkben 100-szor). A tárolt pontszámokkal kiszámíthatjuk az átlagot, a szórást és a MAE relatív bizonytalanságát.

Ugyanezt az eljárást alkalmazzuk a „rivális modellünkre”, amelyet csak az LSTM predikciós hálózat készített. A pontszámok átlagolása és a bizonytalanság kiszámítása után a végeredmények a következők: 0,118 MAE (0,0012 MAE bizonytalanság) az LSTM Autoencoder + LSTM Forecaster esetében és 0,124 MAE (0,0015 MAE bizonytalanság) az egyetlen LSTM Forecaster esetében. 5% -os végső javulást regisztrálunk az előrejelzés pontosságában, hasonló mértékű bizonytalansággal. Azt állíthatjuk, hogy az LSTM Autoencoderünk jó fegyver fontos, láthatatlan funkciók kivonására az idősorokból. Az alábbiakban beszámolok a különböző piacok pontozási teljesítményéről mind az organikus, mind a hagyományos avokádó típusok esetében.

A képzés során fenntartom magam, hogy kizárjak egy teljes piacot (’Albany’ régió). Ez azért van, mert láthatatlan sorozatokon akarom tesztelni Hálózatunk erejét. Ismét regisztráljuk a teljesítmény javulását mind az organikus, mind a hagyományos piaci szegmensekben.

Ebben a bejegyzésben az Ubernél kifejlesztett end-to-end neurális hálózati architektúrát replikálom a speciális esemény előrejelzés céljából. Hangsúlyozni szeretném: az LSTM Autoencoder ereje a funkciókivonó szerepében; ennek a megoldásnak a skálázhatósága az általánosítás érdekében, elkerülve, hogy minden idősorhoz több modellt képezzenek; a stabil és jövedelmező módszer biztosításának képessége az ideghálózat értékelésére.

Megjegyzem azt is, hogy ez a fajta megoldás jól áll, ha megfelelő számú idősor áll a rendelkezésére, amelyek közös viselkedést mutatnak ... Nem fontos, hogy ezek azonnal láthatók legyenek, az Autoencoder teszi ezt nekünk.