Previsione di serie temporali con TensorFlow: componenti, modelli e passaggi

Pubblicato: 2021-05-02

Sommario

Che cos'è la previsione delle serie temporali?

Sai che l'Asia del Pacifico è il mercato del deep learning in più grande crescita a livello globale con un CAGR (Compound Annual Growth Rate) di oltre il 40%? La previsione di TensorFlow delle serie temporali è un concetto importante nel deep learning e nel machine learning. Tutti i modelli di deep learning/ML hanno un rispettivo set di dati che è una raccolta di osservazioni. Queste osservazioni spesso includono una componente temporale. Le serie temporali organizzano le osservazioni in sequenza nel tempo, aggiungendo così una nuova dimensione al set di dati, ovvero il tempo.

Si può pensare a cosa si otterrà aumentando la dimensionalità del loro set di dati? Bene, l'aggiunta di una dimensione temporale al tuo set di dati creerà un livello dettagliato di dipendenza tra le osservazioni. Il risultato viene quindi previsto con l'aiuto della previsione di serie temporali delle osservazioni precedenti.

L'uso di dati di serie temporali (dati storici) per prevedere il futuro è chiamato previsione di serie temporali. Si dovrebbe anche garantire che il futuro sia completamente sconosciuto e possa essere previsto solo sulla base di dati storici.

I dati delle serie temporali vengono analizzati per sviluppare modelli che descrivono i dati in modo efficace. La serie temporale è scomposta in diverse componenti per lo sviluppo di modelli apt. Una volta sviluppati i modelli che meglio descrivono i dati storici, questi vengono utilizzati per la previsione. Non bisogna confondere l'analisi delle serie storiche con la previsione delle serie temporali, poiché quest'ultima entra in azione solo quando la prima è completata.

Componenti della serie storica

Prima di conoscere le previsioni di TensorFlow per serie temporali , è necessario avere familiarità con il componente di una serie temporale. Una serie temporale viene scomposta in quattro componenti durante l'analisi delle serie temporali. Questi componenti aiutano a comprendere correttamente il set di dati. Le quattro componenti di una serie storica sono le seguenti:

  • Tendenze : il comportamento di una serie/set di dati nel tempo è spiegato dalle tendenze. Il comportamento crescente e decrescente di una serie temporale è spiegato dalle tendenze.
  • Livello – Il livello è il valore base della serie storica, considerando che la rappresentazione della serie è una linea retta. Molti esperti definiscono anche il livello come il valore medio della serie.
  • Stagionalità – I comportamenti della serie che si ripetono nel tempo sono chiamati stagionalità. Alcuni esperti definiscono anche la stagionalità come fluttuazioni periodiche.
  • Rumore : ogni set di dati contiene alcuni punti dati/valori anomali che il modello delle serie temporali non è in grado di spiegare. Questi set di dati possiedono proprietà imprevedibili e non possono essere mappati tramite analisi/previsione di serie temporali.

Si dovrebbe notare che una serie temporale deve avere un livello e un po' di rumore. Tuttavia, le tendenze e la stagionalità in una serie temporale sono facoltative.

Perché TensorFlow?

Sebbene sul mercato siano disponibili molti framework per la previsione delle serie temporali, i professionisti della tecnologia profonda preferiscono TensorFlow tra tutti i framework disponibili. TensorFlow è scritto in Python, C++ e CUDA che sono tra i linguaggi di programmazione ampiamente utilizzati. TensorFlow è una libreria software open source progettata appositamente per l'apprendimento automatico e il deep learning.

TensorFlow ci aiuta nella creazione di modelli ML durante l'analisi delle serie temporali che verranno utilizzati per la previsione. Offre agli utenti la creazione di vari tipi di modelli come CNN (Convolutional Neural Network), RNN (Recurrent Neural Network), ecc. TensorFlow può aiutarti a prevedere un passo temporale singolo o multiplo a seconda dell'utente e del set di dati. Durante la previsione di TensorFlow per serie temporali , è possibile:

  • Prevedi una singola caratteristica/dimensione per un singolo intervallo di tempo.
  • Prevedi tutte le dimensioni del set di dati per un singolo intervallo di tempo.
  • Previsione per più passaggi in un colpo solo (facendo tutte le previsioni contemporaneamente).
  • Previsione per più passaggi in cui viene effettuata una previsione alla volta (autoregressiva).

Impostazione dei dati per la previsione di serie temporali

Prima della previsione delle serie temporali, dobbiamo preparare i dati di conseguenza. L'impostazione per la previsione delle serie temporali include vari processi come l'estrazione dei dati, la visualizzazione, l'esplorazione , la pulizia, ecc. Vediamo i passaggi alla base dell'impostazione dei dati per la previsione delle serie temporali:

  • Il passaggio di base è importare i dati o estrarli. È necessario disporre di un set di dati da cui verranno estratte informazioni dettagliate utilizzando la previsione delle serie temporali.
  • Il passaggio successivo è la pulizia dei dati, in cui si rimuovono i punti dati duplicati o irrilevanti. In questo passaggio vengono gestiti anche i dati mancanti. Se sono stati rilevati valori anomali in anticipo, rimuoverli dal set di dati. Gli errori strutturali possono essere corretti anche durante la pulizia dei dati.
  • Le quantità in una serie temporale che variano nel tempo sono dette segnali. Questi segnali rappresentano anche vari eventi fisici in una serie temporale. Ad esempio, se esiste una serie temporale di descrizioni meteorologiche di qualsiasi luogo in giorni diversi, i segnali sarebbero eventi fisici come temperatura, precipitazioni, ecc. Procedi convertendo i segnali nel formato sin cos.
  • Oltre a convertire i segnali nel formato sin cos, convertire l'ora e la data in secondi. Una volta che hai finito, traccia la funzione tempo e sin cos.
  • Prima di prevedere e addestrare i nostri dati, divideremo i dati in base al tempo per un'ulteriore semplificazione.
  • I dati devono ora essere normalizzati prima dell'allenamento. Il passaggio più semplice per la normalizzazione dei dati consiste nel sottrarre la media del set di dati da ciascun punto dati e quindi dividerlo per la deviazione standard.
  • Una volta terminata la normalizzazione dei dati, è necessario verificare la distorsione dei dati. La distorsione dei dati è definita come una condizione in cui alcuni elementi del set di dati sono fortemente rappresentati rispetto ad altri elementi. I dati distorti si traducono in una minore precisione insieme ad analisi distorte. Puoi tracciare un grafico violino per rimuovere qualsiasi distorsione dei dati presente nel tuo set di dati.

Finestratura dei dati

Ti starai chiedendo che ci sono molti processi coinvolti prima della previsione delle serie temporali. Ebbene, i giovani appassionati di tecnologia dovrebbero sapere che la preparazione dei dati è un passaggio cruciale prima della formazione o dell'analisi dei dati. La finestratura dei dati è l'ultimo passaggio nell'impostazione dei dati per la previsione di TensorFlow per serie temporali . La finestratura dei dati aiuta a utilizzare i dati con vari modelli senza alcuna preoccupazione.

Ad esempio, se un modello prevede 1 ora nel futuro, è necessaria una finestra di 6 ore di dati storici per prevedere in modo efficace. La finestra dei dati storici viene definita "larghezza di input" mentre la finestra dei dati da prevedere viene definita "offset" durante la finestra dei dati.

Checkout: i progetti Tensorflow più popolari

Modelli TensorFlow a passo singolo

Quando disponi del set di dati nella sua forma più semplice e prevedi solo un passaggio temporale in futuro, utilizzerai i modelli a passaggio singolo di TensorFlow. Ad esempio, se hai creato una finestra di dati di "ore", la previsione per un passaggio temporale, significa che stai prevedendo un'ora nel futuro. In TensorFlow viene creato un oggetto 'WindowGenerator' per sviluppare coppie a passaggio singolo, ad esempio input ed etichetta.

Si consiglia inoltre di creare un modello di base prima di addestrare il modello. La creazione di un modello di base ti aiuterà a confrontare il modello iniziale a passaggio singolo con i futuri modelli complicati. Ad esempio, se si prevede la temperatura per 1 ora futura, creare un modello di riferimento che restituisca la temperatura attuale come previsione (nessuna modifica).

Poiché le temperature cambiano lentamente nel tempo, è possibile che non ci siano variazioni di temperatura dopo un'ora. Si noti che il modello di base non sarà efficace quando si prevedono più passaggi temporali.

Un altro esempio di creazione di un modello timestep singolo utilizzando TensorFlow consiste nell'inserire una trasformazione lineare tra input e output. Assicurarsi che l'output dipenda solo dal singolo timestep da valutare durante la creazione di un modello lineare utilizzando TensorFlow. Il modello denso è un altro modello a passaggio singolo creato utilizzando TensorFlow.

Le reti neurali di convoluzione tramite TensorFlow possono essere utilizzate anche per prevedere un singolo passaggio temporale. Un livello di convoluzione in TensorFlow richiede più passaggi temporali come input per la previsione di un passaggio temporale. Gli RNN sono anche ampiamente utilizzati per la previsione di serie temporali.

Anche lo stato interno della macchina salta da un passaggio temporale all'altro perché gli RNN elaborano una serie temporale passo dopo passo (per impostazione predefinita). La previsione di TensorFlow per serie temporali tramite RNN è una buona scelta poiché i modelli RNN tendono a ricordare una lunga storia di input (dati storici).

Modelli Multi-Step TensorFlow

Nei modelli a più fasi, la previsione viene effettuata su un intervallo di fasi temporali. A differenza di un modello a passaggio singolo, un modello a più passaggi prevede un intervallo di valori futuri utilizzando dati storici. I modelli multi-step possono prevedere l'intera serie temporale futura contemporaneamente tramite la previsione a colpo singolo. È inoltre possibile utilizzare la previsione autoregressiva, in cui il modello effettua una previsione a passo singolo alla volta. Il risultato della previsione a passo singolo nella previsione autoregressiva funge da input per la previsione del passo temporale successivo.

Conclusione

La previsione di TensorFlow delle serie temporali fornisce risultati accurati rispetto ad altri framework. Abbiamo discusso alcuni dei modelli a passaggio singolo (CNN, RNN, Dense, ecc.) che possono essere utilizzati per la previsione a passaggio singolo tramite TensorFlow.

Puoi anche prevedere una serie di valori futuri utilizzando i modelli a più fasi. Si dovrebbe anche notare che la preparazione dei dati è un passaggio chiave prima della previsione di TensorFlow delle serie temporali . Puoi saperne di più sulla previsione delle serie temporali in DL (Deep Learning) e ML optando per il programma di certificazione avanzato di upGrad in DL & ML . Inizia ad imparare la previsione di serie temporali con TensorFlow!

Quali sono i limiti dell'utilizzo di TensorFlow?

Sebbene TensorFlow riduca la lunghezza del codice, rende anche il codice un po' complesso. Rispetto ai suoi concorrenti, TensorFlow è lento e anche meno utilizzabile. TensorFlow è al passo con i tempi quando si tratta di offrire loop simbolici per sequenze indefinite. TensorFlow ha solo il supporto per GPU NVIDIA e il supporto per la programmazione GPU Python. Non ha altre forme di sostegno. Non ha molti vantaggi per gli utenti del sistema operativo Windows.

L'ampiezza delle discontinuità ai bordi di ogni sequenza finita registrata dal digitalizzatore viene ridotta mediante windowing. Un sistema a finestre consente a molte app di condividere la visualizzazione grafica e le risorse di presentazione di un computer contemporaneamente. Potresti voler utilizzare più app contemporaneamente su un computer con un'interfaccia utente grafica (GUI).

È difficile imparare TensorFlow?

TensorFlow è facile per alcune persone, mentre altri lo considerano difficile da imparare. Se hai una conoscenza preliminare di vari linguaggi di programmazione e conosci varie tecniche di apprendimento automatico, allora imparare TensorFlow sarà facile per te. Tuttavia, il livello di difficoltà dipende anche dal tuo interesse. Se sei veramente interessato a TensorFlow, impararlo non sarà un compito molto difficile.