Prognoza serii temporale cu TensorFlow: componente, modele și pași

Publicat: 2021-05-02

Cuprins

Ce este prognoza serii temporale?

Știți că Asia Pacific este cea mai mare piață de deep learning în creștere la nivel global, cu o CAGR (Rata anuală de creștere compusă) de peste 40%? Predicția TensorFlow în serie de timp este un concept important în deep learning și ML. Toate modelele de deep learning/ML au un set de date respectiv care este o colecție de observații. Aceste observații includ adesea o componentă de timp. Seria temporală aranjează observațiile secvenţial în timp, adăugând astfel o nouă dimensiune setului de date, adică timpul.

Se poate gândi ce se va realiza prin creșterea dimensionalității setului lor de date? Ei bine, adăugarea unei dimensiuni de timp la setul de date va crea un nivel detaliat de dependență între observații. Rezultatul este apoi prezis cu ajutorul prognozei în serie de timp a observațiilor anterioare.

Utilizarea datelor din serii temporale (date istorice) pentru prezicerea viitorului se numește prognoză în serie de timp. De asemenea, ar trebui să ne asigurăm că viitorul ar trebui să fie complet necunoscut și poate fi prezis doar pe baza datelor istorice.

Datele din seria temporală sunt analizate pentru a dezvolta modele care descriu datele în mod eficient. Seria temporală este descompusă în mai multe componente pentru dezvoltarea modelelor apt. Odată ce modelele care descriu cel mai bine datele istorice sunt dezvoltate, acestea sunt apoi utilizate pentru prognoză. Nu trebuie să confundăm analiza seriilor temporale cu prognoza seriilor temporale, deoarece aceasta din urmă intră în acțiune numai atunci când prima este finalizată.

Componentele seriei temporale

Înainte de a cunoaște prognoza TensorFlow în serie de timp , ar trebui să fiți familiarizați cu componenta unei serii de timp. O serie de timp este descompusă în patru componente în timpul analizei seriilor de timp. Aceste componente ajută la înțelegerea corectă a setului de date. Cele patru componente ale unei serii de timp sunt după cum urmează:

  • Tendințe – Comportamentul unei serii/set de date în timp este explicat prin tendințe. Comportamentul crescător și descrescător al unei serii de timp este explicat prin tendințe.
  • Nivel – Nivel este valoarea de bază a seriei de timp, având în vedere că reprezentarea seriei este o linie dreaptă. Mulți experți definesc, de asemenea, nivelul ca fiind valoarea medie a seriei.
  • Sezonalitate – Comportamentele serialului care se repetă în timp se numesc sezonalitate. Unii experți numesc și sezonalitatea ca fluctuații periodice.
  • Zgomot – Fiecare set de date conține niște puncte de date/outliere pe care modelul de serie de timp nu le poate explica. Aceste seturi de date posedă proprietăți imprevizibile și nu pot fi mapate prin analiză/prognoză în serie de timp.

Ar trebui să rețineți că o serie de timp trebuie să aibă un nivel și ceva zgomot. Cu toate acestea, tendințele și sezonalitatea într-o serie de timp sunt opționale.

De ce TensorFlow?

Deși există multe cadre disponibile pe piață pentru prognoza serii de timp, profesioniștii din domeniul tehnologiei profunde preferă TensorFlow din toate cadrele disponibile. TensorFlow este scris în Python, C++ și CUDA, care se numără printre limbajele de programare utilizate pe scară largă. TensorFlow este o bibliotecă de software open-source concepută special pentru învățarea automată și învățarea profundă.

TensorFlow ne ajută să construim modele ML în timpul analizei seriilor temporale care vor fi folosite pentru prognoză. Oferă utilizatorilor să construiască diferite tipuri de modele, cum ar fi CNN (Rețea neuronală convoluțională), RNN (rețea neuronală recurentă), etc. TensorFlow vă poate ajuta să prognozați un singur pas de timp sau mai mulți, în funcție de utilizator și de setul de date. În timp ce prognozele TensorFlow din seria temporală , puteți:

  • Prognozați o singură caracteristică/dimensiune pentru un singur pas de timp.
  • Estimați toate dimensiunile setului de date pentru un singur pas de timp.
  • Prognoza pentru mai mulți pași într-o singură lovitură (efectuând toate predicțiile simultan).
  • Prognoza pentru mai mulți pași în care se face o predicție la un moment dat (autoregresiv).

Configurarea datelor pentru prognoza serii temporale

Înainte de prognoza seriilor temporale, trebuie să pregătim datele în consecință. Configurarea pentru prognoza serii temporale include diferite procese, cum ar fi extragerea datelor, vizualizarea, explorarea , curățarea etc. Să vedem pașii din spatele configurării datelor pentru prognoza serii temporale:

  • Pasul de bază este să importați sau să extrageți datele. Trebuie să aveți un set de date din care vor fi extrase informații bogate folosind prognoza în serie de timp.
  • Următorul pas este curățarea datelor, în care eliminați punctele de date duplicate sau irelevante. Datele lipsă sunt, de asemenea, tratate la acest pas. Dacă există valori aberante descoperite devreme, eliminați-le din setul de date. Erorile structurale pot fi remediate și prin curățarea datelor.
  • Mărimile dintr-o serie temporală care variază în timp sunt denumite semnale. Aceste semnale reprezintă, de asemenea, diferite evenimente fizice dintr-o serie temporală. De exemplu, dacă există o serie temporală de descrieri meteorologice ale oricărei locații în diferite zile, atunci semnalele ar fi evenimentele fizice precum temperatura, precipitațiile etc. Continuați prin conversia semnalelor în format sin cos.
  • Împreună cu conversia semnalelor în format sin cos, convertiți ora și data în secunde. După ce ați terminat, reprezentați grafic timpul și funcția sin cos.
  • Înainte de a prognoza și de a instrui datele noastre, vom împărți datele în funcție de timp pentru o simplificare suplimentară.
  • Datele urmează să fie acum normalizate înainte de antrenament. Cel mai simplu pas pentru normalizarea datelor este scăderea mediei setului de date din fiecare punct de date și apoi împărțirea acesteia la abaterea standard.
  • Odată ce ați terminat cu normalizarea datelor, trebuie să verificați dacă există părtinire a datelor. Prejudicierea datelor este definită ca o condiție în care unele elemente ale setului de date sunt puternic reprezentate în comparație cu alte elemente. Datele părtinitoare au ca rezultat o acuratețe mai scăzută, împreună cu analize distorsionate. Puteți trasa o diagramă de vioară pentru a elimina orice părtinire a datelor prezentă în setul dvs. de date.

Fereastră de date

Trebuie să vă întrebați că există o mulțime de procese implicate înainte de prognozarea seriilor temporale. Ei bine, tinerii pasionați de tehnologie ar trebui să știe că pregătirea datelor este un pas crucial înainte de a antrena sau de a analiza datele. Fereastra de date este ultimul pas în configurarea datelor pentru prognoza TensorFlow în serie de timp . Fereastra de date ajută la utilizarea datelor cu diferite modele fără nicio problemă.

De exemplu, dacă un model prezice 1 oră în viitor, aveți nevoie de o fereastră de 6 ore de date istorice pentru a estima eficient. Fereastra de date istorice este denumită „lățimea de intrare”, în timp ce fereastra de date care trebuie prezisă este denumită „offset” în timpul ferestrei de date.

Checkout: Cele mai populare proiecte Tensorflow

Modele TensorFlow cu un singur pas

Când aveți setul de date în cel mai simplu mod și preziceți doar pentru un singur pas în viitor, veți folosi modelele cu un singur pas ale TensorFlow. De exemplu, dacă ați creat o fereastră de date de „ore”, atunci estimați pentru un pas de timp, ceea ce înseamnă că anticipați o oră în viitor. Un obiect „WindowGenerator” este creat în TensorFlow pentru a dezvolta perechi într-un singur pas, adică, intrare și etichetă.

De asemenea, este sugerat să creați un model de bază înainte de a vă antrena modelul. Crearea unui model de bază vă va ajuta să comparați modelul inițial într-un singur pas cu viitoarele modele complicate. De exemplu, dacă estimați temperatura pentru o oră în viitor, atunci creați un model de referință care returnează temperatura actuală ca predicție (fără modificare).

Deoarece temperaturile se schimbă lent în timp, este posibil să nu existe nicio modificare a temperaturii după o oră. Rețineți că modelul de referință nu va fi eficient atunci când preziceți mai mulți pași de timp.

Un alt exemplu de creare a unui model cu un singur pas de timp folosind TensorFlow este inserarea unei transformări liniare între intrare și ieșire. Asigurați-vă că rezultatul depinde numai de un singur pas de timp care trebuie evaluat în timpul creării unui model liniar folosind TensorFlow. Modelul dens este un alt model într-un singur pas creat folosind TensorFlow.

Rețelele neuronale de convoluție prin TensorFlow pot fi, de asemenea, utilizate pentru predicție pentru un singur pas de timp. Un strat de convoluție în TensorFlow va lua mai mulți pași de timp ca intrare pentru predicția pentru un pas de timp. RNN-urile sunt, de asemenea, utilizate pe scară largă pentru prognoza seriilor temporale.

Starea internă a mașinii sare, de asemenea, de la un pas de timp la altul, deoarece RNN-urile procesează o serie de timp pas cu pas (în mod implicit). Prognoza TensorFlow în serie de timp prin RNN este o alegere bună, deoarece modelele RNN tind să-și amintească o istorie lungă de intrări (date istorice).

Modele în mai mulți pași TensorFlow

În modelele cu mai mulți pași, predicția se face pe o serie de pași de timp. Spre deosebire de un model cu un singur pas, un model cu mai mulți pași prezice o serie de valori viitoare folosind date istorice. Modelele în mai mulți pași pot prezice întreaga serie temporală viitoare dintr-o dată prin predicție cu o singură lovitură. De asemenea, puteți utiliza predicția autoregresivă, în care modelul face o predicție cu un singur pas la un moment dat. Rezultatul predicției într-un singur pas în predicția autoregresivă funcționează ca intrare pentru predicția pasului următor.

Concluzie

Predicția TensorFlow în serie de timp oferă rezultate precise în comparație cu alte cadre. Am discutat câteva dintre modelele cu un singur pas (CNN, RNN, Dense etc.) care pot fi utilizate pentru predicția într-un singur pas prin TensorFlow.

De asemenea, puteți prezice o serie de valori viitoare utilizând modele în mai mulți pași. De asemenea, ar trebui să rețineți că pregătirea datelor este un pas cheie înainte de predicția TensorFlow în serie de timp . Puteți afla mai multe despre predicția seriilor temporale în DL (Deep Learning) și ML, optând pentru programul de certificat avansat al upGrad în DL și ML . Începeți să învățați prognoza serii cronologice cu TensorFlow!

Care sunt limitările utilizării TensorFlow?

Deși TensorFlow scade lungimea codului, acesta îl face și un pic complex. În comparație cu concurenții săi, TensorFlow este lent și, de asemenea, mai puțin utilizabil. TensorFlow este în urmă cu vremurile când vine vorba de a oferi bucle simbolice pentru secvențe nedefinite. TensorFlow are doar suport pentru GPU NVIDIA și suport pentru programare GPU Python. Nu are alte forme de sprijin. Nu are multe avantaje pentru utilizatorii sistemului de operare Windows.

Amplitudinea discontinuităților la marginile fiecărei secvențe finite înregistrate de digitizor este redusă prin windowing. Un sistem de ferestre permite multor aplicații să partajeze afișajul grafic și resursele de prezentare ale unui computer în același timp. Este posibil să doriți să utilizați mai multe aplicații simultan pe un computer cu o interfață grafică de utilizator (GUI).

Este greu să înveți TensorFlow?

TensorFlow este ușor pentru unii oameni, în timp ce unii consideră că este greu de învățat. Dacă aveți cunoștințe anterioare despre diferite limbaje de programare și sunteți familiarizat cu diferite tehnici de învățare automată, atunci învățarea TensorFlow vă va fi ușor. Cu toate acestea, nivelul de dificultate depinde și de interesul tău. Dacă ești cu adevărat interesat de TensorFlow, învățarea acestuia nu va fi o sarcină foarte dificilă.