Blog.

Time Series Data: serie storiche


Autore
Andrea Provino
Data
Tempo di lettura
5 minuti
Categoria
Data Science, machine-learning

time-series-analysis-data-science-machine-learning-blog-model

Le serie temporali, o storiche (time-series data) sono sequenze di valori ordinati nel tempo e contrassegnati da un momento storico.

Parecchi business producono dati di natura finanziaria e commerciale con un’impronta indelebile: l’esatto momento in cui sono generati.

Capiamo perché è importante porre un occhio di riguardo a questa particolare natura dei dati.

Time Series Data

Comprendere le serie storiche e imparare creare dei modelli si rivela fondamentale in molti contesti perché ci consente di prevedere tendenze o comportamenti futuri e agire di conseguenza.

Ecco quella che definiamo analisi predittiva (i.e. so cosa accadrà) e analisi prescrittiva (i.e. ti dico come agire).

Ora, per risolvere problemi che coinvolgono il time series data esistono diversi approcci. Quelli più comuni sono tre:

  • Auto-Regressive Integrated Moving Average (ARIMA)
  • Exponential Smoothing
  • Fourier Transforms

A un livello macroscopico distinguiamo metodi di tipo univariato (i più diffusi) e multivariato. (univariate and multivariate).

Univariate analysis

Per cui se volessi prevedere le vendite che il mio business potrebbe generare a Marzo mi basterebbe riconoscere pattern in quelle passate e inferire partendo da esse.

Tradotto, ho una sola variabile che cambia nel tempo e suppongo che il suo valore sia strettamente legato all’ora, al giorno, al mese o all’anno.

Avrai certamente intuito il problema.

Se l’ipotesi di partenza non fosse verificata l’andamento della variabile dipenderebbe da altri fattori che attualmente stiamo scartando.

Inoltre alcuni dei più comuni metodi di tipo univariato richiedono che il time series sia stazionario (stationarity). Tradotto, che abbia costante media e varianza.

Come risolviamo il problema? Con l‘analisi multivariata e feature engineering

Multivariate analysis

Entrano in gioco il big player: machine learning.

Attraverso il machine learning siamo in grado di generare modelli complessi capaci di cogliere la relazione nascosta, il pattern, tra le serie storiche.

Questi modelli dalle previsioni più accurate, rispetto ai precedenti di tipo univariato, permettono di considerare anche altri feature legati al time series data.

Parlando di features… Sappiamo che un bravo data scientist padroneggia l’arte di crearne di nuove.

Feature Engineering Times Series

Per esperienza personale ti posso assicurare che le date sono tra le tipologie di dato di più difficile maneggio.

Una parola, un testo, un nome in ambito informatico è una stringa. A nessuno importa cosa scrivi. (Non è proprio così, ma per il momento fingiamo che lo sia)

Un numero? È un numero! Al massimo hai qualche limitazione sulla lunghezza (32 o 64 bit) o sulla natura (intera o in virgola mobile).

La data, quella si che è un patata bollente.

Perché?

Facciamo un esempio banale ma efficace.

Digressione: date e orari

Hai un e-commerce, attivo h24. Un tale acquista un prodotto esattamente alle 00:00 del 10 Marzo. Ora. In Italia sono le 00:00 del 10 Marzo, ma in Inghilterra sono le 23:00 del 9 Marzo.

Quando inizi a prendere a calci e pugni le sigle internazionali scopri che la faccenda si complica ulteriormente.

Hai presente l’ora legale e solare? Ah.

In inverno il CET (Centra European Time) si allinea con il fuso UTC+1 (Universal Time Code, o Temps universel coordonné)

Quando d’estate l’Italia entra in ora legale, il fuso orario passa al CEST (Central European Summer Time) e si allinea con il fuso UTC+2.

Tutto questo per dire che spesso chi salva i dati non sa cosa stia facendo.

Digressione a parte, un sistema di machine learning non è n grado di gestire una data che in formato ISOString appare come:

2020-02-20T11:33:22.528Z

Da questa stringa è possibile estrarre un grande elenco di features:

  • Day of month
  • Day of week
  • Day of year
  • Weekend or weekday
  • Payday
  • Holiday
  • Quarter
  • Start of quarter
  • End of quarter
  • Days to month-end
  • Days from month start
  • Days to holiday
  • Days from holiday
  • Season of year
  • N period lagged date (e.g. yesterday, last week, last month, last quarter, etc.)
  • Rolling mean, min, max and etc. 

Ognuna di queste feature cattura un componente del time series consentendoci di creare il nostro accurato modello predittivo, individuando quei valori che influenzano maggiormente il risultato finale.

In questo modo risolviamo la necessita di avere media e varianza stazionaria, che abbiamo identificato in precedenza.

Training vs Test Set

Un’ultima cosa prima di concludere la nostra introduzione al time series data.

In passato abbiamo ribadito più volte quanto sia fondamentale avere un dataset con cui valutare le prestazioni del nostro modello prima di rilasciarlo in produzione.

Un metodo comunemente impiegato è quello di dividere il dataset originario in uno di testing e di training.

Il problema in questo caso è il metodo con cui effettuarne la divisione.

Metodo 1

Il primo consiste semplicemente nel trovare un cut-off point e separare i due gruppi di dati. Qui l’importante è mantenere l’ordine dei dati. Qualora questo non fosse mantenuto, ostacoleremmo la corretta generalizzazione da parte del modello.

Metodo 2

Il secondo è definito di windowing. Alleniamo il nostro modello su un piccolo range di date e lo testiamo su quello immediatamente successivo. Questo crea una finestra a scorrimento di lettura sulla serie storica.

Un metodo concettualmente simile al cross-validation che invece di selezionare casualmente il sottoinsieme di dati, mantiene l’ordine e discrimina con la data.

Time Series Algorithm

Prima di salutarti, ho un ultimo contenuto da condividere con te.

Datanest, azienda che fornisce Data Science as a Service, ha prodotto questa lista di metodi per costruire modelli sulle sterie storiche.

Puoi trovare l’articolo originale qui.

Un caldo abbraccio, Andrea

Taggeddata sciencedatasetteoria


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum