Mitmemõõtmeline aegridade prognoosimine LSTM-idega Keras

Mitmemõõtmeline aegridade prognoosimine LSTM-idega Keras

Närvivõrgud, nagu pikaajalised lühiajalise mälu (LSTM) korduvad närvivõrgud, suudavad probleeme peaaegu sujuvalt modelleerida mitme sisendmuutujaga.

See on suur eelis aegridade prognoosimisel, kus klassikalisi lineaarseid meetodeid võib olla raske kohandada mitme muutuja või mitme sisendi prognoosimise probleemidega.

Selles õpetuses saate teada, kuidas saate LSTM-mudel mitmemõõtmeliste aegridade prognoosimiseks Kerase süvaõppe raamatukoguga.

Pärast selle õpetuse täitmist saate teada:

  • Kuidas teisendada toores andmekogum millekski, mida saaksime kasutada aegridade prognoosimiseks.
  • Kuidas koostada andmeid ja sobitada LSTM mitmemõõtmeliste aegridade prognoosimise probleemide jaoks.
  • Kuidas prognoosida ja tulemus uuesti algsesse üksusesse skaleerida.

Alustage oma projekti minu uue raamatuga Sügav õppimine ajasarjade prognoosimiseks, sealhulgas samm-sammult õpetused ja Pythoni lähtekood failid kõigi näidete jaoks.

Alustame.

  • Uuendage august / 2017: Parandas vea, kus lõpliku RMSE arvutamisel võrreldi eelmise ajaetapiga obs-ga. Tänud, Songbin Xu ja David Righart.
  • Uuenda oktoober / 2017: Lisatud uus näide, kuidas treenida mitmel varasemal etapil populaarse nõudluse tõttu.
  • Uuenda sept / 2018: Ajakohastatud link andmekogumile.
  • Uuenda juuni / 2020: Parandatud puuduv import LSTM-i andmete ettevalmistamise näite jaoks.

Õpetuse ülevaade

See õpetus on jagatud 4 osaks; nemad on:

  1. Õhusaaste prognoosimine
  2. Põhiandmete ettevalmistamine
  3. Mitmemõõtmeline LSTM-i prognoosimudel
    1. LSTM-i andmete ettevalmistamine
    2. Määratlege ja sobitage mudel
    3. Hinnake mudelit
    4. Täielik näide
  4. Rong mitme viivitusajaga

Pythoni keskkond

Selles õpetuses eeldatakse, et teil on installitud Python SciPy keskkond. Soovitan teil selle juhendajaga kasutada Python 3-d.

Keras (2.0 või uuem) peab olema installitud kas TensorFlow või Theano taustaprogrammiga, Ideaalis Keras 2.3 ja TensorFlow 2.2 või uuemaga.

Juhend eeldab ka, et olete installinud scikit-learn, Pandas, NumPy ja Matplotlib.

Kui vajate oma keskkonnas abi, vaadake seda postitust:

Kas vajate abi Deep Learning for Time Series'ist?

Osale minu tasuta 7-päevasel e-posti krahhi kursusel (näidiskoodiga).

Klõpsake registreerumiseks ja hankige ka kursuse tasuta PDF-i e-raamatu versioon.

Laadige alla oma TASUTA minikursus

1. Õhusaaste prognoosimine

Selles õpetuses kasutame õhukvaliteedi andmekogumit.

See on andmekogum, mis annab USAs Hiinas Pekingis viie aasta jooksul iga tunni tagant iga tunni aja ilma ja reostuse taseme kohta aru.

Andmed hõlmavad kuupäeva-kellaaega, PM2,5 kontsentratsiooniks nimetatud reostust ja ilmastikuteavet, sealhulgas kastepunkti, temperatuuri, rõhku, tuule suunda, tuule kiirust ning lume ja vihma kumulatiivset tundide arvu. Algandmete täielik funktsioonide loend on järgmine:

  1. Ei: rea number
  2. aasta: selle rea andmete aasta
  3. kuu: selle rea andmete kuu
  4. päeval: selle rea andmete kuupäev
  5. tund: tund andmeid selles reas
  6. pm2.5: PM2,5 kontsentratsioon
  7. DEWP: Kastepunkt
  8. TEMP: Temperatuur
  9. PRES: Rõhk
  10. cbwd: Kombineeritud tuule suund
  11. Iws: Kumulatiivne tuule kiirus
  12. On: Lumetundide arv kokku
  13. Ir: Vihma kogunenud tunnid

Saame neid andmeid kasutada ja koostada prognoosimisprobleem, kus prognoosime eelmiste tundide ilmastikutingimusi ja reostust arvestades reostust järgmisel tunnil.

Seda andmekogumit saab kasutada teiste prognoosimisprobleemide raamistamiseks.
Kas teil on häid ideid? Andke mulle teada allpool toodud kommentaarides.

Andmekogumi saate alla laadida UCI masinõppehoidlast.

Uuenda, Olen siin peegeldanud andmekogumit, kuna UCI on muutunud ebausaldusväärseks:

Laadige andmestik alla ja asetage see oma praegusesse töökataloogi koos failinimega “toores.csv“.

2. Põhiandmete ettevalmistamine

Andmed pole kasutamiseks valmis. Enne peame selle ette valmistama.

Allpool on toored andmekogumi paar esimest rida.

Esimene samm on koondada kuupäeva ja kellaaja teave üheks kuupäevaks ja kellaajaks, et saaksime seda Pandase indeksina kasutada.

Kiire kontrolliga avastatakse pm 24,5 NA väärtused esimese 24 tunni jooksul. Seetõttu peame eemaldama esimese andmerea. Andmekogumis on hiljem ka mõned hajutatud „NA“ väärtused; saame need praegu märkida 0 väärtusega.

Allolev skript laadib toore andmekogumi ja sõelub kuupäeva-kellaaja teavet Pandas DataFrame indeksina. Veerust „Ei” loobutakse ja seejärel määratakse igale veerule selgemad nimed. Lõpuks asendatakse NA väärtused väärtusega „0“ ja esimesed 24 tundi eemaldatakse.

Veerust „Ei” loobutakse ja seejärel määratakse igale veerule selgemad nimed. Lõpuks asendatakse NA väärtused väärtusega „0“ ja esimesed 24 tundi eemaldatakse.

Näite käivitamine prindib teisendatud andmekogumi 5 esimest rida ja salvestab andmekogumi kaustasaaste.csv“.

Nüüd, kui meil on andmed hõlpsasti kasutatavas vormis, saame luua iga seeria kohta kiire graafiku ja vaadata, mis meil on.

Allolev kood laadib uuesaaste.csv”Faili ja joonistab iga seeria eraldi alamplotina, välja arvatud tuule kiiruse dir, mis on kategooriline.

Näite käitamisel luuakse graafik 7 alamplotiga, mis näitavad iga muutuja 5 aasta andmeid.

Õhusaaste aegridade reagraafikud

Õhusaaste aegridade reagraafikud

3. Mitmemõõtmeline LSTM-i prognoosimudel

Selles jaotises sobitame probleemiga LSTM-i.

LSTM-i andmete ettevalmistamine

Esimene samm on reostuse andmekogumi ettevalmistamine LSTM-i jaoks.

See hõlmab andmestiku kujundamist juhendatud õpiprobleemina ja sisendmuutujate normaliseerimist.

Raamime juhendatud õppeprobleemi reostuse prognoosimiseks praegusel tunnil

See sõnastus on otsene ja just selle demonstratsiooni jaoks. Mõned alternatiivsed ravimvormid, mida võiksite uurida, on järgmised:

  • Prognoosige järgmise tunni reostus ilmastikutingimuste ja viimase 24 tunni reostuse põhjal.
  • Ennustage reostust järgmiseks tunniks nagu ülal ja arvestades järgmise tunni „eeldatavaid“ ilmastikutingimusi.

Andmekogumi saame teisendada, kasutades seeria_valvatud () ajaveebipostituses välja töötatud funktsioon:

Esitekssaaste.csv”Andmekogum on laaditud. Tuule suuna funktsioon on sildikodeeritud (täisarv kodeeritud). See võib tulevikus olla ühe kuumaga kodeeritud, kui olete huvitatud selle uurimisest.

Järgmisena normaliseeritakse kõik funktsioonid, seejärel muudetakse andmestik juhendatud õppeprobleemiks. Seejärel eemaldatakse prognoositava tunni

Koodide täielik loetelu on esitatud allpool.

Samuti võite olla huvitatud