Configurare AutoML per eseguire il training di un modello di previsione delle serie temporali con Python (SDKv1)

SI APPLICA A:Python SDK azureml v1

Questo articolo illustra come configurare il training AutoML per i modelli di previsione delle serie temporali con Machine Learning automatizzato di Machine Learning in Azure Machine Learning Python SDK.

A tale scopo, è necessario:

  • Preparare i dati per la modellazione di serie temporali.
  • Configurare parametri di serie temporali specifici in un AutoMLConfig oggetto .
  • Eseguire stime con dati di serie temporali.

Per un'esperienza con poco codice, vedere Esercitazione: Prevedere la domanda con Machine Learning automatizzato per un esempio di previsione delle serie temporali usando Machine Learning automatizzato nel studio di Azure Machine Learning.

A differenza dei metodi classici delle serie temporali, in ML automatizzato, i valori delle serie temporali precedenti vengono "pivotati" per diventare dimensioni aggiuntive per il regressore insieme ad altri predittori. Questo approccio incorpora più variabili contestuali e la relazione reciproca durante il training. Poiché più fattori possono influenzare una previsione, questo metodo si allinea perfettamente con scenari di previsione reali. Ad esempio, quando si prevedono vendite, interazioni di tendenze cronologiche, tasso di cambio e prezzo tutti determinano congiuntamente il risultato delle vendite.

Prerequisiti

Per questo articolo è necessario,

Dati di training e convalida

La differenza più importante tra un tipo di attività di regressione di previsione e un tipo di attività di regressione all'interno di Machine Learning automatizzato include una funzionalità nei dati di training che rappresenta una serie temporale valida. Una serie temporale regolare presenta una frequenza ben definita e coerente e un valore in ogni punto di esempio in un intervallo di tempo continuo.

Importante

Quando si esegue il training di un modello per la previsione di valori futuri, assicurarsi che tutte le funzionalità usate nel training possano essere usate quando si eseguono stime per l'orizzonte previsto. Ad esempio, durante la creazione di una previsione della richiesta, includere una funzionalità per il prezzo dei titoli azionari corrente potrebbe aumentare notevolmente l'accuratezza del training. Se, tuttavia, si vogliono effettuare previsioni con un orizzonte lungo, potrebbe non essere possibile stimare in modo accurato i valori dei titoli azionari futuri corrispondenti ai punti futuri della serie temporale e l'accuratezza del modello potrebbe risentirne.

È possibile specificare dati di training separati e dati di convalida direttamente nell'oggetto AutoMLConfig . Altre informazioni sull'oggetto AutoMLConfig.

Per la previsione di serie temporali, per impostazione predefinita viene usata solo la convalida roCV (Rolling Origin Cross Validation). La convalida incrociata dell'origine in sequenza divide la serie in dati di training e convalida usando un punto di origine. Scorrere l'origine nel tempo comporta la generazione di riduzioni della convalida incrociata. Questa strategia mantiene l'integrità dei dati delle serie temporali ed elimina il rischio di perdita di dati.

Diagramma che mostra le riduzioni di convalida incrociata separa i set di training e di convalida in base alle dimensioni dei passaggi di convalida incrociata.

Passare i dati di training e convalida come set di dati al parametro training_data. Impostare il numero di riduzioni di convalida incrociata con il parametro n_cross_validations e impostare il numero di periodi tra due riduzioni di convalida incrociata consecutive con cv_step_size. È anche possibile lasciare vuoti entrambi i parametri e AutoML li imposterà automaticamente.

SI APPLICA A:Python SDK azureml v1

automl_config = AutoMLConfig(task='forecasting',
                             training_data= training_data,
                             n_cross_validations="auto", # Could be customized as an integer
                             cv_step_size = "auto", # Could be customized as an integer
                             ...
                             **time_series_settings)

È anche possibile usare i propri dati di convalida. Per altre informazioni, vedere Configurare le divisioni dei dati e la convalida incrociata in AutoML.

Altre informazioni su come AutoML applica la convalida incrociata per impedire l'overfitting dei modelli.

Configurare l'esperimento

L'oggetto AutoMLConfig definisce le impostazioni e i dati necessari per un'attività di Machine Learning automatizzato. La configurazione per un modello di previsione è simile alla configurazione di un modello di regressione standard, ma alcuni modelli, opzioni di configurazione e procedure di definizione delle caratteristiche esistono in modo specifico per i dati delle serie temporali.

Modelli supportati

Machine Learning automatizzato tenta automaticamente modelli e algoritmi diversi come parte del processo di creazione e ottimizzazione del modello. Come utente, non è necessario specificare l'algoritmo. Per gli esperimenti di previsione, sia i modelli time series nativi che i modelli di Deep Learning fanno parte del sistema di raccomandazione.

Suggerimento

I modelli di regressione tradizionali vengono testati anche come parte del sistema di raccomandazione per gli esperimenti di previsione. Vedere un elenco completo dei modelli supportati nella documentazione di riferimento dell'SDK.

Impostazioni di configurazione

Analogamente a un problema di regressione, si definiscono parametri di training standard, come il tipo di attività, il numero di iterazioni, i dati di training e il numero di convalide incrociate. Le attività di previsione richiedono i time_column_name parametri e forecast_horizon per configurare l'esperimento. Se i dati includono più serie temporali, ad esempio i dati di vendita per più archivi o dati energetici in stati diversi, Machine Learning automatizzato rileva automaticamente questa situazione e imposta automaticamente il time_series_id_column_names parametro (anteprima). È anche possibile includere parametri aggiuntivi per configurare meglio l'esecuzione, vedere la sezione configurazioni facoltative per altri dettagli su ciò che può essere incluso.

Importante

L'identificazione automatica delle serie temporali è attualmente disponibile in anteprima pubblica. Questa versione di anteprima viene fornita senza un contratto di servizio. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.

Nome parametro Descrizione
time_column_name Usato per specificare la colonna datetime nei dati di input usati per compilare la serie temporale e dedurne la frequenza.
forecast_horizon Definisce il numero di periodi che si desidera prevedere. L'orizzonte è espresso in unità della frequenza della serie temporale. Le unità si basano sull'intervallo temporale dei dati di training, ad esempio mensile o settimanale, che il modulo di previsione deve prevedere.

Il codice seguente,

  • Sfrutta la ForecastingParameters classe per definire i parametri di previsione per il training dell'esperimento
  • Imposta l'oggetto sul time_column_nameday_datetime campo nel set di dati.
  • Imposta su forecast_horizon 50 per stimare l'intero set di test.
from azureml.automl.core.forecasting_parameters import ForecastingParameters

forecasting_parameters = ForecastingParameters(time_column_name='day_datetime', 
                                               forecast_horizon=50,
                                               freq='W')
                                              

Questi forecasting_parameters vengono quindi passati all'oggetto standard AutoMLConfig insieme al tipo di attività, alla forecasting metrica primaria, ai criteri di uscita e ai dati di training.

from azureml.core.workspace import Workspace
from azureml.core.experiment import Experiment
from azureml.train.automl import AutoMLConfig
import logging

automl_config = AutoMLConfig(task='forecasting',
                             primary_metric='normalized_root_mean_squared_error',
                             experiment_timeout_minutes=15,
                             enable_early_stopping=True,
                             training_data=train_data,
                             label_column_name=label,
                             n_cross_validations="auto", # Could be customized as an integer
                             cv_step_size = "auto", # Could be customized as an integer
                             enable_ensembling=False,
                             verbosity=logging.INFO,
                             forecasting_parameters=forecasting_parameters)

La quantità di dati necessari per eseguire correttamente il training di un modello di previsione con Machine Learning automatizzato è influenzata dai forecast_horizonvalori , n_cross_validationse target_lags o target_rolling_window_size specificati durante la configurazione di AutoMLConfig.

La formula seguente calcola la quantità di dati cronologici necessari per costruire le funzionalità delle serie temporali.

Dati cronologici minimi necessari: (2x forecast_horizon) + #n_cross_validations + max(max(target_lags), target_rolling_window_size)

Viene Error exception generato un oggetto per qualsiasi serie nel set di dati che non soddisfa la quantità di dati cronologici necessaria per le impostazioni pertinenti specificate.

Passaggi di definizione delle funzionalità

In ogni esperimento di Machine Learning automatizzato, le tecniche di ridimensionamento automatico e normalizzazione vengono applicate ai dati per impostazione predefinita. Queste tecniche sono tipi di funzionalità che aiutano determinati algoritmi sensibili alle funzionalità su scale diverse. Altre informazioni sui passaggi di definizione delle funzionalità predefinite in Definizione delle funzionalità in AutoML

Tuttavia, i passaggi seguenti vengono eseguiti solo per forecasting i tipi di attività:

  • Rilevare la frequenza di campionamento della serie temporale (ad esempio, ogni ora, giorno, settimana) e creare nuovi record per i momenti mancanti per rendere la serie continua
  • Imputare i valori mancanti nell'oggetto di destinazione (tramite il caricamento in diretta) e nelle colonne di funzioni (usando i valori della colonna mediana)
  • Creare funzionalità basate su identificatori di serie temporali per abilitare gli effetti fissi in serie diverse
  • Creare funzionalità basate sul tempo per facilitare l'apprendimento di modelli stagionali
  • Codificare variabili categoriche su quantità numeriche
  • Rilevare le serie temporali non fisse e differirle automaticamente per attenuare l'impatto delle radici delle unità.

Per visualizzare l'elenco completo delle possibili funzionalità ingegnerizzate generate dai dati delle serie temporali, vedere Classe TimeIndexFeaturizer.

Nota

I passaggi di definizione delle funzionalità di Machine Learning automatizzato (normalizzazione delle funzionalità, gestione dei dati mancanti, conversione dei valori di testo in formato numerico e così via) diventano parte del modello sottostante. Quando si usa il modello per le previsioni, gli stessi passaggi di definizione delle funzionalità applicati durante il training vengono automaticamente applicati ai dati di input.

Personalizzare le funzionalità

È anche possibile personalizzare le impostazioni di definizione delle funzionalità per assicurarsi che i dati e le funzionalità usati per eseguire il training del modello di Machine Learning comportino stime pertinenti.

Le personalizzazioni supportate per forecasting le attività includono:

Personalizzazione Definizione
Aggiornamento dello scopo della colonna Eseguire l'override del tipo di funzionalità rilevato automaticamente per la colonna specificata.
Aggiornamento dei parametri del trasformatore Aggiornare i parametri per il trasformatore specificato. Attualmente supporta Imputer (fill_value e mediano).
Eliminazione delle colonne Specifica le colonne da eliminare dalla definizione delle funzionalità.

Per personalizzare le funzionalità con l'SDK, specificare "featurization": FeaturizationConfig nell'oggetto AutoMLConfig . Altre informazioni sulle funzionalità personalizzate.

Nota

La funzionalità di rilascio delle colonne è deprecata a partire dalla versione 1.19 dell'SDK. Eliminare colonne dal set di dati come parte della pulizia dei dati, prima di usarle nell'esperimento di Machine Learning automatizzato.

featurization_config = FeaturizationConfig()

# `logQuantity` is a leaky feature, so we remove it.
featurization_config.drop_columns = ['logQuantitity']

# Force the CPWVOL5 feature to be of numeric type.
featurization_config.add_column_purpose('CPWVOL5', 'Numeric')

# Fill missing values in the target column, Quantity, with zeroes.
featurization_config.add_transformer_params('Imputer', ['Quantity'], {"strategy": "constant", "fill_value": 0})

# Fill mising values in the `INCOME` column with median value.
featurization_config.add_transformer_params('Imputer', ['INCOME'], {"strategy": "median"})

Se si usa il studio di Azure Machine Learning per l'esperimento, vedere come personalizzare le funzionalità in studio.

Configurazioni facoltative

Sono disponibili configurazioni facoltative aggiuntive per le attività di previsione, ad esempio l'abilitazione del Deep Learning e la specifica di un'aggregazione della finestra in sequenza di destinazione. Un elenco completo dei parametri aggiuntivi è disponibile nella documentazione di riferimento di ForecastingParameters SDK.

Aggregazione dei dati di destinazione della frequenza &

Sfruttare la frequenza, freqil parametro , per evitare errori causati da dati irregolari, ovvero dati che non seguono una cadenza impostata, ad esempio dati orari o giornalieri.

Per dati altamente irregolari o per esigenze aziendali variabili, gli utenti possono facoltativamente impostare la frequenza di previsione desiderata, freqe specificare per target_aggregation_function aggregare la colonna di destinazione della serie temporale. Sfruttare queste due impostazioni nell'oggetto AutoMLConfig consente di risparmiare tempo per la preparazione dei dati.

Le operazioni di aggregazione supportate per i valori delle colonne di destinazione includono:

Funzione Descrizione
sum  Somma dei valori di destinazione
mean  Media o media dei valori di destinazione
min Valore minimo di una destinazione
max Valore massimo di una destinazione

Abilita Deep Learning

Nota

Il supporto di DNN per la previsione in Machine Learning automatizzato è in anteprima e non è supportato per le esecuzioni locali o le esecuzioni avviate in Databricks.

È anche possibile applicare deep learning con reti neurali profonde, DNN, per migliorare i punteggi del modello. Il Deep Learning di Machine Learning automatizzato consente di prevedere i dati univariati e multivariati della serie temporale.

I modelli di Deep Learning hanno tre funzionalità intrinseche:

  1. Possono imparare da mapping arbitrari da input a output
  2. Supportano più input e output
  3. Possono estrarre automaticamente modelli nei dati di input che si estendono su sequenze lunghe.

Per abilitare l'apprendimento enable_dnn=True avanzato, impostare nell'oggetto AutoMLConfig .

automl_config = AutoMLConfig(task='forecasting',
                             enable_dnn=True,
                             ...
                             forecasting_parameters=forecasting_parameters)

Avviso

Quando si abilita DNN per gli esperimenti creati con l'SDK, le spiegazioni migliori del modello sono disabilitate .

Per abilitare DNN per un esperimento AutoML creato nel studio di Azure Machine Learning, vedere le impostazioni del tipo di attività nella procedura relativa all'interfaccia utente di Studio.

Aggregazione della finestra in sequenza di destinazione

Spesso le informazioni migliori a disposizione di un modulo di previsione sono date dal valore recente della destinazione. Le aggregazioni delle finestre in sequenza di destinazione consentono di aggiungere un'aggregazione in sequenza di valori di dati come funzionalità. La generazione e l'uso di queste funzionalità come dati contestuali aggiuntivi facilitano l'accuratezza del modello di training.

Si supponga, ad esempio, di voler stimare la domanda di energia. È possibile aggiungere una funzionalità di finestra mobile di tre giorni per tenere conto dei cambiamenti termico degli spazi riscaldati. In questo esempio creare questa finestra impostando target_rolling_window_size= 3 nel AutoMLConfig costruttore .

La tabella mostra la progettazione delle funzionalità risultante che si verifica quando viene applicata l'aggregazione delle finestre. Le colonne per il valore minimo, massimo e la somma vengono generate in una finestra scorrevole di tre in base alle impostazioni definite. Ogni riga ha una nuova funzionalità calcolata, nel caso del timestamp per l'8 settembre 2017 4:00 i valori massimi, minimi e somma vengono calcolati usando i valori della domanda per l'8 settembre 2017 1:00 - 3:00. Questa finestra su base tre scorre in avanti per popolare i dati per le righe rimanenti.

finestra in sequenza di destinazione

Visualizzare un esempio di codice Python che applica la funzionalità di aggregazione della finestra in sequenza di destinazione.

Gestione di serie brevi

Machine Learning automatizzato considera una serie temporale una serie breve se non sono presenti punti dati sufficienti per eseguire le fasi di training e convalida dello sviluppo del modello. Il numero di punti dati varia per ogni esperimento e dipende dalla max_horizon, dal numero di divisioni di convalida incrociata e dalla lunghezza del lookback del modello, ovvero dal numero massimo di cronologia necessario per costruire le funzionalità delle serie temporali.

Machine Learning automatizzato offre la gestione di serie brevi per impostazione predefinita con il short_series_handling_configuration parametro nell'oggetto ForecastingParameters .

Per abilitare la gestione di serie brevi, è necessario definire anche il freq parametro . Per definire una frequenza oraria, verrà impostato freq='H'. Visualizzare le opzioni della stringa di frequenza visitando la sezione Oggetti DataOffset della pagina Serie temporali pandas. Per modificare il comportamento predefinito, short_series_handling_configuration = 'auto'aggiornare il parametro nell'oggetto short_series_handling_configurationForecastingParameter .

from azureml.automl.core.forecasting_parameters import ForecastingParameters

forecast_parameters = ForecastingParameters(time_column_name='day_datetime', 
                                            forecast_horizon=50,
                                            short_series_handling_configuration='auto',
                                            freq = 'H',
                                            target_lags='auto')

Nella tabella seguente vengono riepilogate le impostazioni disponibili per short_series_handling_config.

Impostazione Descrizione
auto Valore predefinito per la gestione delle serie brevi.
- Se tutte le serie sono brevi, aggiungere i dati.
- Se non tutte le serie sono brevi, eliminare la serie breve.
pad Se short_series_handling_config = pad, machine learning automatizzato aggiunge valori casuali a ogni breve serie trovata. Di seguito sono elencati i tipi di colonna e gli elementi con cui vengono riempiti:
- Colonne oggetto con NaN
- Colonne numeriche con 0
- Colonne booleane/logiche con False
- La colonna di destinazione viene riempita con valori casuali con media pari a zero e deviazione standard pari a 1.
drop Se short_series_handling_config = drop, ml automatizzato elimina la serie breve e non verrà usato per il training o la stima. Le stime per queste serie restituiranno NaN.
None Nessuna serie riempita o rilasciata

Avviso

La spaziatura interna può influire sull'accuratezza del modello risultante, poiché vengono introdotti dati artificiali solo per superare il training senza errori. Se molte delle serie sono brevi, è anche possibile che si verifichi un impatto sui risultati della spiegazione

Rilevamento e gestione di serie temporali non fisse

Una serie temporale i cui momenti (media e varianza) cambiano nel tempo viene chiamato non stazionario. Ad esempio, le serie temporali che presentano tendenze stocastiche non sono fisse per natura. Per visualizzare questo problema, l'immagine seguente traccia una serie che in genere tende verso l'alto. A questo punto, calcolare e confrontare i valori medi (medi) per il primo e la seconda metà della serie. Coincidono? In questo caso, la media della serie nella prima metà del tracciato è significativamente inferiore rispetto alla seconda metà. Il fatto che la media della serie dipende dall'intervallo di tempo che si sta esaminando, è un esempio dei momenti variabili nel tempo. Qui, la media di una serie è il primo momento.

Diagramma che mostra le vendite al dettaglio per una serie temporale non stazionaria.

Si esaminerà quindi l'immagine seguente, che traccia la serie originale nelle prime differenze, $x_t = y_t - y_{t-1}$ dove $x_t$ è la modifica delle vendite al dettaglio e $y_t$ e $y_{t-1}$ rappresentano rispettivamente la serie originale e il primo ritardo. La media della serie è approssimativamente costante indipendentemente dall'intervallo di tempo che si sta esaminando. Questo è un esempio di una serie temporale stazioni di primo ordine. Il motivo per cui è stato aggiunto il primo termine dell'ordine è perché il primo momento (media) non cambia con l'intervallo di tempo, lo stesso non può essere detto sulla varianza, che è un secondo momento.

Diagramma che mostra le vendite al dettaglio per una serie temporale debolemente stazionaria.

I modelli di Machine Learning autoML non possono gestire intrinsecamente le tendenze stocastiche o altri problemi noti associati a serie temporali non fisse. Di conseguenza, l'accuratezza della previsione fuori campione sarà "scarsa" se tali tendenze sono presenti.

AutoML analizza automaticamente il set di dati delle serie temporali per verificare se è fisso o meno. Quando vengono rilevate serie temporali non fisse, AutoML applica automaticamente una trasformazione differenziante per attenuare l'impatto di serie temporali non fisse.

Eseguire l'esperimento

Quando l'oggetto AutoMLConfig è pronto, è possibile inviare l'esperimento. Al termine del modello, recuperare l'iterazione di esecuzione migliore.

ws = Workspace.from_config()
experiment = Experiment(ws, "Tutorial-automl-forecasting")
local_run = experiment.submit(automl_config, show_output=True)
best_run, fitted_model = local_run.get_output()

Eseguire previsioni con il modello migliore

Usare l'iterazione del modello migliore per prevedere i valori per i dati che non sono stati usati per eseguire il training del modello.

Valutazione dell'accuratezza del modello con una previsione in sequenza

Prima di inserire un modello nell'ambiente di produzione, è necessario valutarne l'accuratezza in un set di test mantenuto dai dati di training. Una procedura consigliata è una cosiddetta valutazione in sequenza che esegue il rollforward del forecaster sottoposto a training nel tempo nel set di test, calcolando le metriche degli errori in diverse finestre di stima per ottenere stime statisticamente affidabili per alcuni set di metriche scelte. Idealmente, il set di test per la valutazione è lungo rispetto all'orizzonte di previsione del modello. Le stime dell'errore di previsione potrebbero altrimenti essere statisticamente rumorose e, pertanto, meno affidabili.

Si supponga, ad esempio, di eseguire il training di un modello sulle vendite giornaliere per stimare la domanda fino a due settimane (14 giorni) in futuro. Se sono disponibili dati cronologici sufficienti, è possibile riservare i mesi finali anche a un anno dei dati per il set di test. La valutazione in sequenza inizia generando una previsione di 14 giorni per le prime due settimane del set di test. Il forecaster viene quindi avanzato da un certo numero di giorni nel set di test e si generano altre previsioni di 14 giorni dalla nuova posizione. Il processo continua fino a raggiungere la fine del set di test.

Per eseguire una valutazione in sequenza, chiamare il rolling_forecast metodo di fitted_model, quindi calcolare le metriche desiderate nel risultato. Si supponga, ad esempio, di avere funzionalità del set di test in un dataframe pandas denominato test_features_df e che il set di test valori effettivi della destinazione in una matrice numpy denominata test_target. Una valutazione in sequenza che usa l'errore quadratico medio è illustrata nell'esempio di codice seguente:

from sklearn.metrics import mean_squared_error
rolling_forecast_df = fitted_model.rolling_forecast(
    test_features_df, test_target, step=1)
mse = mean_squared_error(
    rolling_forecast_df[fitted_model.actual_column_name], rolling_forecast_df[fitted_model.forecast_column_name])

In questo esempio, le dimensioni dei passaggi per la previsione in sequenza vengono impostate su uno, il che significa che il forecaster è avanzato un periodo o un giorno nell'esempio di stima della domanda, a ogni iterazione. Il numero totale di previsioni restituite da rolling_forecast dipende quindi dalla lunghezza del set di test e da questa dimensione del passaggio. Per altri dettagli ed esempi, vedere la documentazione di rolling_forecast() e il notebook Forecasting away from training data (Previsione da dati di training).

Previsione nel futuro

La funzione forecast_quantiles() consente specifiche di quando devono essere avviate le stime, a differenza del predict() metodo , in genere usato per le attività di classificazione e regressione. Il metodo forecast_quantiles() genera per impostazione predefinita una previsione punto o una previsione mediana che non ha un cono di incertezza. Per altre informazioni, vedere il notebook Forecasting away from training data (Previsione da dati di training).

Nell'esempio seguente vengono innanzitutto sostituiti tutti i valori di y_pred con NaN. L'origine della previsione è alla fine dei dati di training in questo caso. Se, tuttavia, si sostituisce solo la seconda metà di y_pred con NaN, la funzione lascia i valori numerici nella prima metà non modificati, ma prevede i valori NaN nella seconda metà. La funzione restituisce sia i valori previsti, che le funzionalità allineate.

È anche possibile usare il forecast_destination parametro nella forecast_quantiles() funzione per prevedere i valori fino a una data specificata.

label_query = test_labels.copy().astype(np.float)
label_query.fill(np.nan)
label_fcst, data_trans = fitted_model.forecast_quantiles(
    test_dataset, label_query, forecast_destination=pd.Timestamp(2019, 1, 8))

Spesso i clienti vogliono comprendere le stime in un quantile specifico della distribuzione. Ad esempio, quando la previsione viene usata per controllare l'inventario, ad esempio articoli alimentari o macchine virtuali per un servizio cloud. In questi casi, il punto di controllo è di solito qualcosa di simile a "vogliamo che l'articolo sia in magazzino e non esaurisca il 99% del tempo". Di seguito viene illustrato come specificare i quantili da visualizzare per le stime, ad esempio il 50° o il 95° percentile. Se non si specifica un quantile, come nell'esempio di codice precedente, vengono generate solo le stime del 50° percentile.

# specify which quantiles you would like 
fitted_model.quantiles = [0.05,0.5, 0.9]
fitted_model.forecast_quantiles(
    test_dataset, label_query, forecast_destination=pd.Timestamp(2019, 1, 8))

È possibile calcolare metriche del modello come l'errore quadratico medio radice (RMSE) o l'errore MAPE (Mean Absolute Percentage Error) per stimare le prestazioni dei modelli. Per un esempio, vedere la sezione Evaluate del notebook Bike share demand .

Dopo aver determinato l'accuratezza complessiva del modello, il passaggio successivo più realistico consiste nell'usare il modello per prevedere valori futuri sconosciuti.

Fornire un set di dati nello stesso formato del set di test test_dataset, ma con datetime futuri e il set di stime risultante, corrisponde ai valori previsti per ogni passaggio della serie temporale. Si supponga che gli ultimi record della serie temporale nel set di dati si riferiscano al giorno 31/12/2018. Per prevedere la domanda per il giorno successivo (o il numero di periodi necessario per prevedere, <= forecast_horizon), creare un singolo record di serie temporali per ogni archivio per 01/01/2019.

day_datetime,store,week_of_year
01/01/2019,A,1
01/01/2019,A,1

Ripetere i passaggi necessari per caricare i dati futuri in un dataframe e quindi eseguire best_run.forecast_quantiles(test_dataset) per stimare i valori futuri.

Nota

Le stime in-sample non sono supportate per la previsione con Machine Learning automatizzato quando target_lags e/o target_rolling_window_size sono abilitate.

Previsione su larga scala

Esistono scenari in cui un singolo modello di Machine Learning non è sufficiente e sono necessari più modelli di Machine Learning. Ad esempio, la stima delle vendite per ogni singolo negozio per un marchio o la personalizzazione di un'esperienza per singoli utenti. La creazione di un modello per ogni istanza può causare risultati migliorati in molti problemi di Machine Learning.

Il raggruppamento è un concetto nella previsione delle serie temporali che consente di combinare una serie temporale per eseguire il training di un singolo modello per gruppo. Questo approccio può essere particolarmente utile se si dispone di serie temporali che richiedono smoothing, riempimento o entità nel gruppo che possono trarre vantaggio dalla cronologia o dalle tendenze di altre entità. Molti modelli e previsioni gerarchiche delle serie temporali sono soluzioni basate su Machine Learning automatizzato per questi scenari di previsione su larga scala.

Molti modelli

La soluzione molti modelli di Azure Machine Learning con Machine Learning automatizzato consente agli utenti di eseguire il training e gestire milioni di modelli in parallelo. Molti modelli L'acceleratore di soluzioni sfrutta le pipeline di Azure Machine Learning per eseguire il training del modello. In particolare, vengono usati un oggetto Pipeline e ParalleRunStep e richiedono parametri di configurazione specifici impostati tramite ParallelRunConfig.

Il diagramma seguente illustra il flusso di lavoro per la soluzione molti modelli.

Diagramma dei concetti di molti modelli

Il codice seguente illustra i parametri chiave che gli utenti devono configurare i numerosi modelli eseguiti. Per un esempio di previsione di molti modelli, vedere il notebook di Machine Learning automatizzato

from azureml.train.automl.runtime._many_models.many_models_parameters import ManyModelsTrainParameters

partition_column_names = ['Store', 'Brand']
automl_settings = {"task" : 'forecasting',
                   "primary_metric" : 'normalized_root_mean_squared_error',
                   "iteration_timeout_minutes" : 10, #This needs to be changed based on the dataset. Explore how long training is taking before setting this value 
                   "iterations" : 15,
                   "experiment_timeout_hours" : 1,
                   "label_column_name" : 'Quantity',
                   "n_cross_validations" : "auto", # Could be customized as an integer
                   "cv_step_size" : "auto", # Could be customized as an integer
                   "time_column_name": 'WeekStarting',
                   "max_horizon" : 6,
                   "track_child_runs": False,
                   "pipeline_fetch_max_batch_size": 15,}

mm_paramters = ManyModelsTrainParameters(automl_settings=automl_settings, partition_column_names=partition_column_names)

Previsione gerarchica delle serie temporali

Nella maggior parte delle applicazioni, i clienti hanno la necessità di comprendere le previsioni a livello macro e micro dell'azienda; stimare le vendite di prodotti in diverse posizioni geografiche o comprendere la domanda prevista di forza lavoro per organizzazioni diverse in un'azienda. La possibilità di eseguire il training di un modello di Machine Learning per prevedere in modo intelligente i dati della gerarchia è essenziale.

Una serie temporale gerarchica è una struttura in cui ogni serie univoca viene disposta in una gerarchia in base alle dimensioni, ad esempio geografia o tipo di prodotto. L'esempio seguente mostra i dati con attributi univoci che formano una gerarchia. La nostra gerarchia è definita da: il tipo di prodotto, ad esempio cuffie o tablet, la categoria di prodotto che suddivide i tipi di prodotto in accessori e dispositivi e l'area in cui vengono venduti i prodotti.

Tabella dati non elaborata di esempio per i dati gerarchici

Per visualizzare ulteriormente questo valore, i livelli foglia della gerarchia contengono tutte le serie temporali con combinazioni univoche di valori di attributo. Ogni livello superiore nella gerarchia considera una dimensione minore per la definizione della serie temporale e aggrega ogni set di nodi figlio dal livello inferiore a un nodo padre.

Oggetto visivo gerarchia per i dati

La soluzione serie temporale gerarchica è basata sulla soluzione Molti modelli e condivide una configurazione simile.

Il codice seguente illustra i parametri chiave per configurare le esecuzioni di previsione delle serie temporali gerarchiche. Per un esempio end-to-end, vedere il notebook di Machine Learning automatizzato gerarchico.


from azureml.train.automl.runtime._hts.hts_parameters import HTSTrainParameters

model_explainability = True

engineered_explanations = False # Define your hierarchy. Adjust the settings below based on your dataset.
hierarchy = ["state", "store_id", "product_category", "SKU"]
training_level = "SKU"# Set your forecast parameters. Adjust the settings below based on your dataset.
time_column_name = "date"
label_column_name = "quantity"
forecast_horizon = 7


automl_settings = {"task" : "forecasting",
                   "primary_metric" : "normalized_root_mean_squared_error",
                   "label_column_name": label_column_name,
                   "time_column_name": time_column_name,
                   "forecast_horizon": forecast_horizon,
                   "hierarchy_column_names": hierarchy,
                   "hierarchy_training_level": training_level,
                   "track_child_runs": False,
                   "pipeline_fetch_max_batch_size": 15,
                   "model_explainability": model_explainability,# The following settings are specific to this sample and should be adjusted according to your own needs.
                   "iteration_timeout_minutes" : 10,
                   "iterations" : 10,
                   "n_cross_validations" : "auto", # Could be customized as an integer
                   "cv_step_size" : "auto", # Could be customized as an integer
                   }

hts_parameters = HTSTrainParameters(
    automl_settings=automl_settings,
    hierarchy_column_names=hierarchy,
    training_level=training_level,
    enable_engineered_explanations=engineered_explanations
)

Notebook di esempio

Per esempi di codice dettagliati sulla configurazione di previsione avanzata, vedere i notebook di esempio della previsione, tra cui:

Passaggi successivi