L'APPROFONDIMENTO

Predire il futuro, fra machine learning e magia

Dai mercati azionari all’industria, la previsione di serie temporali occupa un posto sempre più rilevante nell’economia. Vediamo come l’intelligenza artificiale supera i limiti delle metodologie classiche (ma non sempre)

17 Set 2020
Francesco Amigoni

Politecnico di Milano, Dipartimento di Elettronica, Informazione e Bioingegneria

Davide Azzalini

Politecnico di Milano


Il desiderio di riuscire a produrre previsioni accurate di fenomeni futuri è un tratto che ha accompagnato il genere umano sin dai suoi albori. Fra le prime testimonianze ci sono le parole del profeta ebreo Isaia risalenti al 700 a.C.: “Annunciate ciò che avverrà nel futuro, e così sapremo che siete dei”. Oggi è l’Intelligenza artificiale a orientare gli sviluppi in questo ambito: vediamo come.

Prevedere il futuro dal passato

Il modo forse più ovvio per predire aspetti del futuro è fare riferimento al passato, cercando di individuare strutture ricorrenti in ciò che è accaduto per prevedere ciò che potrebbe accadere, assumendo che le stesse strutture si ripetano anche nel futuro.

Nella nostra società, l’analisi di sequenze di dati osservati ordinati temporalmente (serie temporali o serie storiche) è di fondamentale importanza in moltissimi campi, come per esempio in economia, per predire l’andamento dei mercati azionari e finanziari, in meteorologia, per produrre previsioni sulla temperatura dei prossimi giorni, in sismologia, per predire i possibili movimenti tellurici, e in diversi ambiti industriali, per prevedere volumi di vendite e corrispondenti volumi di produzione.

Spesso, i metodi per l’analisi delle serie temporali sono impiegati all’interno di sistemi più complessi e la loro importanza non è immediatamente evidente. Con qualche semplificazione, possiamo pensare a uno di questi metodi come composto da un modello che cattura le strutture ricorrenti introdotte più sopra e da un meccanismo per estrarre una o più predizioni da tale modello.

In pratica, un metodo di predizione di serie temporali può essere visto come qualcosa a cui forniamo in ingresso una sequenza di dati passati (ordinati temporalmente), per esempio la temperatura odierna e quella dei giorni della scorsa settimana in un determinato luogo, e che restituisce una predizione sul futuro, per esempio la temperatura prevista per domani.

Lo scopo di questo articolo non è quello di trattare esaustivamente tutti gli aspetti di questo sterminato argomento [1], ma di identificare una serie di parole chiave utili per chiunque si avvicini a questa disciplina e, inoltre, di delineare la collocazione che i metodi per la predizione delle serie storiche ricoprono oggigiorno all’interno del grande mondo dell’intelligenza artificiale e, più nello specifico, del machine learning.

Le parole chiave

Come per ogni altra attività di data analysis, anche per la predizione delle serie temporali il primo passo è quello che in inglese viene informalmente chiamato “Getting to know your data”, ovvero “Fare conoscenza con i propri dati”. Ciò si riferisce a una fase iniziale di analisi dei dati a disposizione (dataset) in modo da farsi un’idea di quale sia il modo migliore di affrontare la previsione. In aggiunta ai passi classici, come l’esplorazione e il data cleaning, quando si ha a che fare con serie storiche è necessario investigare alcuni aspetti aggiuntivi.

Più precisamente, è molto utile identificare alcune caratteristiche della serie di dati di cui si vogliono prevedere i successivi valori, in modo tale da scegliere il metodo di predizione più appropriato. La prima di queste caratteristiche è la presenza di stagionalità, ovvero, il ripetersi ciclico di comportamenti molto simili negli stessi periodi di un anno/settimana/giorno.

Per esempio, il consumo di energia elettrica è generalmente elevato durante il giorno, mentre è basso durante la notte, mentre le vendite aumentano durante il periodo natalizio per poi diminuire subito dopo. La seconda caratteristica è il trend, ovvero, il comportamento globale della serie una volta epurata da stagionalità e rumore (oscillazioni ad alta frequenza senza alcun contenuto informativo).

Spesso è possibile partizionare una serie storica in periodi di uptrend (trend crescente), downtrend (trend discendente) e periodi in cui la serie rimane “piatta”, definiti lateralità.

Stazionarietà e autocorrelazione

Un’altra caratteristica è la stazionarietà: una serie è detta stazionaria se le sue proprietà statistiche non cambiano con il passare del tempo. La stazionarietà è una caratteristica molto importante ai fini predittivi, in quanto le serie stazionarie sono molto “più facili” da prevedere perché rappresentano fenomeni pressoché invarianti al passare del tempo. Inoltre, alcuni modelli sono applicabili unicamente per serie stazionarie e, spesso, è possibile rendere stazionaria una serie attraverso la rimozione di trend e stagionalità.

C’è poi l’autocorrelazione, ovvero la similitudine tra i dati che compongono la serie e che si trovano a distanza (temporale) costante. Ad esempio, se consideriamo la serie storica del numero di ascolti su Spotify della canzone “Last Christmas” degli Wham!, questa serie avrà un’alta autocorrelazione a 365 giorni (corrispondente alla ovvia intuizione che ad ogni periodo natalizio abbiamo un picco).

Serie univariate e multivariate

Un’ultima caratteristica che menzioniamo riguarda il “contenuto” della serie: una serie è detta univariata se una singola caratteristica è osservata ad ogni istante temporale (per esempio, il consumo di energia elettrica giornaliero), mentre una serie è detta multivariata se, ad ogni istante, più caratteristiche sono osservate (per esempio, sia il consumo di energia elettrica giornaliero sia la corrispondente temperatura esterna). Sebbene la maggior parte dei metodi tratti serie univariate, l’utilizzo di molteplici osservazioni riferite allo stesso istante temporale permette spesso di ottenere predizioni più accurate, un esempio è il consumo di energia elettrica in un ufficio, che è fortemente correlato alla temperatura esterna.

Per valutare la bontà di un insieme di predizioni prodotte con un certo metodo si utilizza solitamente l’errore medio assoluto (MAE), che misura, in media, quanto ogni previsione è distante in valore assoluto dal suo valore realmente osservato, e il suo corrispettivo in percentuale (MAPE), più facilmente interpretabile in quanto indipendente dalla scala della grandezza misurata. Metodi caratterizzati da MAE e MAPE piccoli producono quindi predizioni accurate.

Modelli classici di previsione

Storicamente, è stata la comunità statistica a concentrarsi maggiormente sullo sviluppo di tecniche per la predizione di serie storiche. Più recentemente, anche la comunità informatica ha contribuito, spesso attraverso l’utilizzo di algoritmi inizialmente sviluppati per altri scopi più generali. Infatti, come vedremo in seguito, per poter utilizzare metodi di machine learning per prevedere serie storiche è spesso necessaria una riformulazione del problema.

In questo articolo, ci riferiremo ai metodi provenienti dalla comunità statistica con la dicitura “metodi classici”, mentre utilizzeremo “metodi di machine learning” per riferirci a quelli di ispirazione più informatica. È bene tenere a mente che in alcuni casi tale distinzione potrebbe non essere universalmente accettata; la discussione, o, per meglio dire, “guerra”, su dove giaccia il labile confine tra la statistica e il machine learning, e tra cosa appartenga all’ambito del statistical learning e cosa appartenga all’ambito del machine learning, esula dallo scopo di questo articolo (e, spesso, si riduce a questioni di campanilismo).

DIGITAL EVENT 13 OTTOBRE
Customer experience: tutti i vantaggi offerti dai processi di Digital Identity
CRM
Intelligenza Artificiale

I modelli classici più comuni sono costruiti a partire dalla combinazione di due componenti: una componente autoregressiva, il cui contributo corrisponde a una combinazione lineare (somma pesata) dei valori passati della serie storica, e una componente di media mobile, il cui contributo è una combinazione lineare degli errori di previsione del passato.

Oltre ai modelli AR, puramente autoregressivi e quelli MA, puramente a media mobile, abbiamo quelli ARMA, che integrano entrambi gli aspetti. Un semplicissimo modello AR(1), cioè AR di grado 1, permette di predire il prossimo valore Xt di una serie storica calcolando la somma fra una costante c, una frazione dell’ultimo valore osservato Xt-1 e un termine di errore t. I valori per c, e t sono determinati a partire dalla sequenza di valori della serie storica fornita come input in modo da rappresentarla al meglio. Salendo di complessità, troviamo i modelli ARIMA, che aggiungono uno step di differenziazione per rendere la serie stazionaria. I modelli SARIMA estendono i modelli ARIMA con la possibilità di modellare stagionalità. Infine, abbiamo i modelli SARIMAX, che permettono di trattare serie multivariate.

Lo “smoothing esponenziale

Un’altra famiglia di modelli classici è quella che si basa sullo smoothing esponenziale, che, con una brutta traduzione, potremmo chiamare “a lisciamento esponenziale”. Questi modelli assumono che il valore del prossimo punto delle serie sia una media mobile esponenziale dei valori dei punti precedenti. I modelli più semplici di questa famiglia vengono detti SES (smoothing esponenziale semplice), mentre ne esistono di più complessi, come il modello di Holt Winters, che, a differenza di quelli semplici, permettono di modellare anche trend e stagionalità.

Dal punto di vista metodologico, prima di impiegare modelli di machine learning, è buona pratica testare i modelli classici che abbiamo appena introdotto, soprattutto in quei casi in cui la serie in esame sia piuttosto regolare (mostri, cioè, un chiaro trend e/o stagionalità).

Modello classico e machine learning

Infatti, la potenza predittiva dei modelli classici è spesso più che sufficiente e, per serie relativamente semplici da prevedere, tali modelli possono superare in accuratezza modelli più complessi. Ciò detto, considerare i modelli classici come modelli semplici e poco potenti sarebbe assolutamente sbagliato, infatti, la comunità statistica è tuttora molto attiva nello sviluppo di modelli statistici classici sempre più evoluti. Un recente modello che merita una menzione è TBATS (Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components), che ha dimostrato di essere all’altezza anche dei più complessi modelli di machine learning.

Un recente e autorevole studio ha confrontato la bontà dei modelli classici rispetto a quelli di machine learning su più di 1000 serie storiche, concludendo che, quando si ha a che fare con serie univariate, i modelli classici risultano al momento ancora vincenti [2]. Esempi di problemi previsionali che coinvolgono serie univariate sono la previsione delle vendite future basandosi solamente su quelle passate e la previsione del valore finanziario di un’azione basandosi unicamente sul suo prezzo passato.

Modelli di machine learning

In generale, un modello di machine learning supervisionato apprende un modo per trasformare un input in un output partendo da tutte le coppie input-output presenti del dataset (fase di training), così che, quando presenteremo al modello un nuovo input, riceveremo il corrispondente output. Di norma, quando si utilizza un modello di machine learning per un task diverso dalla predizione di serie temporali, tutte le osservazioni contenute nel dataset vengono trattate in modo uguale. Ad esempio, se stiamo addestrando un modello di machine learning per prevedere il rischio per un paziente di sviluppare una certa patologia, tutti i dati dei pazienti che compongono il dataset sono considerati allo stesso modo, indipendentemente dal momento in cui sono stati inseriti nel dataset, perché ciò a cui siamo interessati è l’associazione fra un certo input ed uno specifico output.

Quando si utilizzano modelli di machine learning per predire serie temporali, questa assunzione non più è valida poiché una serie storica codifica una precisa dipendenza temporale tra le osservazioni che la compongono. In altre parole, la sequenza con cui si succedono i valori nella serie è importante e, se mescolassimo le osservazioni contenute in una seria storica, otterremo una serie storica completamente diversa, mentre se mescolassimo i pazienti nel dataset dell’esempio precedente non farebbe alcuna differenza.

Utilizzo della sliding window

Il modo più comune per aggirare questo ostacolo è trasformare il dataset in modo tale che, anche se mescolato, rappresenti ugualmente bene la nostra serie storica. Per fare ciò, possiamo utilizzare una sliding window, ovvero una finestra temporale che scorre lungo tutta la serie storica. In questo modo, nel caso in cui il task sia quello di prevedere il prossimo valore nel futuro, il nuovo dataset sarà composto dai dati contenuti in tutte le finestre, che rappresenteranno il nostro input, con la corrispondente osservazione appena successiva (output). Una volta costruito il modello, se volessimo predire il prossimo valore di una serie temporale, sarebbe sufficiente fornire al modello il contenuto dell’ultima finestra temporale osservata (cioè quella la cui ultima osservazione rappresenta il valore attuale) per ottenere la predizione. Per esempio, se consideriamo la semplicissima serie temporale composta dai seguenti valori:

1 2 3 4 1 3 5

e una finestra temporale di quattro valori, avremo i seguenti input con i corrispondenti output:

input 1 2 3 4 con output 1

input 2 3 4 1 con output 3

input 3 4 1 3 con output 5

che permettono di addestrare un modello in grado, fornendo in input l’ultima finestra temporale:

4 1 3 5

di fornire in output la predizione del prossimo valore della serie.

Una volta effettuata questa trasformazione è possibile utilizzare l’algoritmo regressivo (ovvero, il cui output è un valore numerico) di machine learning supervisionato che preferiamo per costruire un modello della serie temporale. Algoritmi che hanno dimostrato di funzionare particolarmente bene in molte applicazioni sono la versione regressiva delle random forest e delle support vector machine e i gradient boosted regression trees.

Quale algoritmo scegliere

Oggigiorno, gli algoritmi più popolari sono certamente quelli di deep learning nella cui famiglia, in aggiunta alle reti neurali classiche, troviamo le reti ricorrenti, specificamente sviluppate per trattare sequenze, e in particolare le loro versioni LSTM (Long Short-Term Memory) e GRU (Gated Recurrent Unit), note per la loro capacità di “ricordare” valori del passato per intervalli temporali arbitrariamente lunghi.

Attualmente, queste ultime, quando utilizzate in combinazione con reti convoluzionali (un tipo di rete neurale ispirato dall’organizzazione della corteccia visiva animale e capace di individuare regolarità nella vicinanza spaziale tra i valori), permettono di ottenere prestazioni migliori rispetto a molti altri algoritmi di machine learning. Ciò detto, è sempre bene ricordare che non esiste alcun algoritmo che sia sempre il migliore in tutte le possibili applicazioni e per tutti i possibili dataset.

Come nota generale potremmo inoltre dire che, rispetto ai modelli classici, nei modelli di machine learning l’integrazione di diversi tipi di valori è più facile e quindi sono più adatti per serie multivariate. Esempi di problemi previsionali che coinvolgono serie multivariate sono, come già abbiamo visto, prevedere il consumo di energia elettrica utilizzando sia i consumi passati che la temperatura esterna e le predizioni basate su dati fortemente correlati fra di loro, come quelli misurati da sensori come accelerometri e giroscopi.

Il business delle previsioni

Ultimamente, come per tutte le aree dell’intelligenza artificiale, la ricerca scientifica sulla predizione delle serie storiche non è più condotta solo in accademia, ma anche i grandi colossi industriali dell’high-tech hanno fatto numerosi investimenti in questa direzione, producendo notevoli risultati e rafforzando l’idea che essere in grado di produrre previsioni accurate è un tema di grandissimo interesse a livello di business.

Due esempi di successo sono Facebook, che ha recentemente rilasciato Prophet, una libreria (ovvero, una collezione di metodi algoritmici) che consente di modellare serie storiche considerando la loro stagionalità e le festività, e Uber, che lo scorso anno ha vinto la quarta edizione della M-competition, la più importante competizione di previsione di serie storiche, che viene tenuta all’incirca ogni dieci anni.

Tutti i rischi dell’utilizzo di algoritmi

Durante la storia ci sono stati periodi nei quali la previsione del futuro era vista con sospetto in quanto considerata vicina alla magia, come nella Roma di Costantino o nell’Inghilterra del diciottesimo secolo. Sebbene al giorno d’oggi non ci sia alcuna avversione, anzi, al contrario, si avverta un grande entusiasmo per l’intelligenza artificiale e il machine learning, talvolta la sensazione che si prova di fronte ad alcuni risultati appare essere la stessa, ovvero, che questi metodi contengano qualcosa di magico, a maggior ragione se si utilizzano algoritmi sviluppati e forniti da altri, per esempio quelli menzionati poco sopra di Facebook.

Utilizzare algoritmi senza comprenderne appieno il funzionamento (e i limiti) potrebbe rivelarsi molto rischioso e, anche quando utilizzati con coscienza, è sempre bene mantenere un atteggiamento almeno parzialmente scettico. La storia è lastricata di previsioni sbagliate, come quelle comunemente citate per cui non ci sarebbe stata alcuna ragione per volere un PC nella propria casa e che non ci sarebbe stato mercato globale per più di 5 computer.

È sempre bene ricordare che alcuni fenomeni non sono accuratamente prevedibili e che, nel dubbio, un metodo semplice è meglio di uno complesso. Infatti, in alcuni domini applicativi, l’algoritmo migliore risulta sorprendentemente essere quello naïve (ovvero, quello che prevede il prossimo valore di una serie temporale uguale all’ultimo osservato). In conclusione, vale una affermazione, dello statistico George Box, famoso, tra le altre cose, per il suo contributo all’analisi delle serie storiche: “Tutti i modelli sono sbagliati, ma alcuni sono utili”, proprio ad indicare che ogni modello è sempre una semplificazione della realtà, solo a volte sufficientemente utile.

Note

[1] Hyndman, R. J. e Athanasopoulos, G.; Forecasting: Principles and Practice, 2nd edition; OTexts, 2018.

[2] Makridakis, S., Spiliotis, E. e Assimakopoulos, V.; Statistical and Machine Learning Forecasting Methods: Concerns and Ways Forward; PLOS ONE, 13(3): e0194889, 2018.

[3] https://machinelearningmastery.com/time-series-forecasting/

[4] https://machinelearningmastery.com/time-series-forecasting-supervised-learning/

WEBINAR
Blockchain, Iot, AI per una Supply Chain intelligente e più efficiente
Blockchain
Intelligenza Artificiale

@RIPRODUZIONE RISERVATA

Articolo 1 di 4