Previsione del tempo di impatto l’altro modo per la previsione probabilistica delle serie temporali.

Previsione del tempo di impatto è un altro metodo per la previsione probabilistica delle serie temporali.

Quanto tempo ci vuole per raggiungere un valore specifico?

Foto di Mick Haupt su Unsplash

La capacità di fare previsioni accurate è fondamentale per ogni applicazione di previsione delle serie temporali. Seguendo questo scopo, i data scientist sono abituati a scegliere i migliori modelli che minimizzano gli errori dal punto di vista delle previsioni. Questo è corretto ma potrebbe non essere sempre il miglior approccio efficace.

I data scientist dovrebbero anche considerare la possibilità di sviluppare modelli di previsione probabilistica. Questi modelli producono, insieme alle stime dei punti, anche bande di affidabilità superiori e inferiori in cui è probabile che cadano le future osservazioni. Nonostante la previsione probabilistica sembri essere una prerogativa delle soluzioni statistiche o di deep learning, qualsiasi modello può essere utilizzato per produrre previsioni probabilistiche. Il concetto è spiegato in uno dei miei post precedenti in cui ho introdotto la previsione conforme come modo per stimare gli intervalli di previsione con qualsiasi modello scikit-learn.

Sicuramente, una previsione a punto è considerevolmente più facile da comunicare agli stakeholder non tecnici. Allo stesso tempo, la possibilità di generare KPI sull’affidabilità delle nostre previsioni è un valore aggiunto. Un output probabilistico può contenere più informazioni per supportare la decisione. Comunicare che c’è il 60% di possibilità di pioggia nelle prossime ore potrebbe essere più informativo che riferire quanti millimetri di pioggia cadranno.

In questo post, proponiamo una tecnica di previsione, nota come previsione del tempo di impatto, utilizzata per stimare quando si verificherà un evento o una condizione specifica. Si rivela essere accurata poiché è basata sulla previsione conforme, interpretabile perché ha un’interpretazione probabilistica e riproducibile con qualsiasi tecnica di previsione.

Introduzione alla previsione del tempo di impatto

La previsione del tempo di impatto è un concetto comunemente usato in vari campi. Si riferisce a prevedere o stimare il tempo che ci vuole affinché accada un certo evento o una certa condizione, spesso nel contesto del raggiungimento di una soglia o di un livello specifico.

Stagionalità simulata e tendenza [immagine dell'autore]
Serie storica simulata (stagionalità + trend) con un esempio di livello di tempo di impatto [immagine dell'autore]

Le applicazioni più conosciute del tempo di impatto si riferiscono a campi come l’analisi della affidabilità e l’analisi della sopravvivenza. Si tratta di stimare il tempo che ci vuole per un sistema o un processo per sperimentare un evento specifico, come un guasto o il raggiungimento di uno stato particolare. In finanza, il tempo di impatto viene spesso applicato per determinare quale sia la probabilità di un segnale / indice che segue una direzione desiderata.

In generale, la previsione del tempo di impatto implica fare previsioni sul tempo che ci vuole per un evento particolare, che segue dinamiche temporali, per verificarsi.

Dalle previsioni a punto alle previsioni probabilistiche

Per stimare correttamente i tempi di impatto, dobbiamo partire dalle previsioni a punto. Come primo passo, scegliamo l’algoritmo di previsione desiderato. Per questo articolo, adottiamo un semplice stimatore ricorsivo facilmente disponibile in stile scikit-learn da tspiral.

Punti dati previsti rispetto ai dati reali nel set di test [immagine dell'autore]
model = ForecastingCascade(    Ridge(),    lags=range(1,24*7+1),    use_exog=False,)

Il nostro obiettivo è quello di produrre distribuzioni di previsione per ogni punto previsto da cui estrarre informazioni probabilistiche. Ciò viene fatto seguendo un approccio a tre fasi e facendo uso della teoria alla base della previsione conforme:

  • Le previsioni vengono raccolte sul set di addestramento attraverso la cross-validazione e poi messe insieme in media.
CV = TemporalSplit(n_splits=10, test_size=y_test.shape[0])pred_val_matrix = np.full(    shape=(X_train.shape[0], CV.get_n_splits(X_train)),    fill_value=np.nan,    dtype=float,)for i, (id_train, id_val) in enumerate(CV.split(X_train)):        pred_val = model.fit(        X_train[id_train],         y_train[id_train]    ).predict(X_train[id_val])        pred_val_matrix[id_val, i] = np.array(        pred_val, dtype=float    )pred_val = np.nanmean(pred_val_matrix, axis=1)
  • I punteggi di conformità vengono calcolati sui dati di addestramento come residui assoluti dalle previsioni incrociate e dai valori reali.
conformity_scores  = np.abs(    np.subtract(        y_train[~np.isnan(pred_val)],         pred_val[~np.isnan(pred_val)]    ))
  • Le future distribuzioni di previsione vengono ottenute aggiungendo i punteggi di conformità alle previsioni di test.
pred_test = model.fit(    X_train,     y_train).predict(X_test)estimated_test_distributions = np.add(    pred_test[:, None], conformity_scores)
Distribuzione prevista sui dati di test [immagine dell'autore]

Seguendo la procedura sopra descritta, otteniamo una collezione di traiettorie plausibili che i valori futuri possono seguire. Abbiamo tutto ciò di cui abbiamo bisogno per fornire una rappresentazione probabilistica delle nostre previsioni.

Dalle previsioni probabilistiche alle previsioni di tempo di impatto

Per ogni punto temporale futuro, viene registrato quante volte i valori nelle distribuzioni di test stimati superano una soglia predefinita (il nostro livello di obiettivo di impatto). Questo conteggio viene trasformato in una probabilità semplicemente normalizzando il numero di valori in ogni distribuzione di test stimata.

Infine, viene applicata una trasformazione all’array di probabilità per avere una serie di probabilità monotone crescenti.

THRESHOLD = 40prob_test = np.mean(estimated_test_distributions > THRESHOLD, axis=1)prob_test = pd.Series(prob_test).expanding(1).max()
Punti dati previsti rispetto a reali dati di test più probabilità di tempo di impatto [immagine dell'autore]

Qualunque sia l’evento che stiamo cercando di prevedere, possiamo generare una curva di probabilità semplicemente partendo dalle previsioni puntuali. L’interpretazione rimane semplice, ossia per ogni punto temporale previsto possiamo derivare la probabilità che la nostra serie di obiettivi raggiunga un livello predefinito.

Riassunto

In questo post, abbiamo introdotto un modo per fornire risultati probabilistici ai nostri modelli di previsione. Non richiede l’applicazione di strani e intensivi metodi di stima aggiuntivi. Semplicemente partendo da un problema di previsione puntuale, è possibile aggiungere una panoramica probabilistica del compito applicando un approccio di tempo di impatto.

VERIFICA IL MIO REPO GITHUB

Rimani in contatto: Linkedin