Panoramica dei metodi di previsione in AutoML
Questo articolo descrive i metodi usati da AutoML in Azure Machine Learning per preparare i dati delle serie temporali e creare modelli di previsione. Per istruzioni ed esempi relativi al training dei modelli di previsione in AutoML, vedere Configurare AutoML per la previsione delle serie temporali.
Metodi di previsione in AutoML
AutoML usa diversi metodi per prevedere i valori delle serie temporali. Questi metodi possono essere classificati in due categorie:
- Modelli di serie temporali che usano valori cronologici della quantità di destinazione per eseguire stime in futuro
- Regressione, o esplicativa, modelli che usano variabili predictor per prevedere i valori della destinazione
Si supponga di dover prevedere la domanda giornaliera di un determinato marchio di succo d'arancia da un negozio di alimentari. Per l'espressione, lasciare che $y_t$ rappresenti la domanda di questo marchio al giorno $t$. Un modello time series stima la domanda a $t+1$ usando una funzione della domanda cronologica con l'espressione seguente:
$y_{t+1} = f(y_t, y_{t-1}, \ldots, y_{t-s})$
La funzione $f$ ha spesso parametri ottimizzati usando la domanda osservata dal passato. Anche la quantità di cronologia usata da $f$ per eseguire stime, $s$, può essere considerata un parametro del modello.
Il modello time series nell'esempio di domanda di succo d'arancia potrebbe non essere abbastanza accurato perché usa solo informazioni sulla domanda passata. Esistono molti altri fattori che possono influenzare la domanda futura, ad esempio prezzo, giorno della settimana e periodi di vacanza. Si consideri un modello di regressione che usa queste variabili predictor con l'espressione seguente:
$y = g(\text{price}, \text{day of week}, \text{holiday})$
Anche in questo caso, la funzione $g$ ha in genere un set di parametri, inclusi i valori che regolano la regolarizzazione, che AutoML si adatta usando valori precedenti della domanda e dei predittori. Si omette $t$ dall'espressione per sottolineare che il modello di regressione usa modelli di correlazione tra variabili definite contemporaneamente per eseguire stime. Per stimare $y_{t+1}$ da $g$, è necessario sapere quale giorno della settimana corrisponde a $t+1$, se il giorno è una festività e il prezzo del succo d'arancia il giorno $t+1$. Le prime due informazioni sono facili da identificare usando un calendario. Un prezzo al dettaglio è comunemente impostato in anticipo, quindi il prezzo del succo d'arancia è probabilmente noto anche un giorno in anticipo. Tuttavia, il prezzo potrebbe non essere noto 10 giorni in futuro. È importante comprendere che l'utilità di questa regressione è limitata da quanto tempo in futuro sono necessarie previsioni, dette anche orizzonte di previsione e in quale grado si conoscono i valori futuri dei predittori.
Importante
I modelli di regressione di previsione di AutoML presuppongono che tutte le funzionalità fornite dall'utente siano note in anticipo, almeno fino all'orizzonte di previsione.
I modelli di regressione dei previsione di AutoML possono anche essere aumentati per usare i valori cronologici della destinazione e dei predittori. Il risultato è un modello ibrido con caratteristiche di un modello di serie temporale e un modello di regressione puro. Le quantità cronologiche sono variabili di stima aggiuntive nella regressione denominate quantità differite. L'ordine del ritardo fa riferimento a quanto risale il valore noto. Ad esempio, il valore corrente di un ritardo di due ordini della destinazione per l'esempio di domanda di succo d'arancia è la domanda di succo osservata da due giorni fa.
Un'altra differenza notevole tra i modelli time series e i modelli di regressione è il modo in cui generano previsioni. Le relazioni di ricorsione definiscono in genere modelli di serie temporali che producono previsioni una alla volta. Per prevedere molti periodi in anticipo, eseguono l'iterazione fino all'orizzonte di previsione, reinserendo le previsioni precedenti nel modello per generare la previsione successiva con un periodo di anticipo in base alle esigenze. Al contrario, i modelli di regressione sono considerati previsioni dirette che generano tutte le previsioni fino all'orizzonte in un singolo tentativo. I previsionatori diretti possono essere preferibili ai metodi ricorsivi, perché i modelli ricorsivi generano un errore di stima composta quando inseriscono le previsioni precedenti nel modello. Quando sono incluse funzionalità di ritardo, AutoML apporta alcune importanti modifiche ai dati di training in modo che i modelli di regressione possano funzionare come previsioni dirette. Per altre informazioni, vedere Funzionalità di ritardo per la previsione delle serie temporali in AutoML.
Modelli di previsione in AutoML
AutoML in Machine Learning implementa i modelli di previsione seguenti. Per ogni categoria, i modelli sono elencati approssimativamente in ordine di complessità dei modelli che possono incorporare, noti anche come capacità del modello. Un modello Naive, che prevede semplicemente l'ultimo valore osservato, ha bassa capacità mentre la rete temporale convoluzionale (TCNForecaster), una rete neurale profonda (DNN) con potenzialmente milioni di parametri ottimizzabili, ha una capacità elevata.
Modelli Time Series | Modelli di regressione |
---|---|
Naive, Seasonal Naive, Average, Seasonal Average, ARIMA(X), Exponential Smoothing | Linear SGD, LARS LASSO, Elastic Net, Prophet, K Nearest Neighbors, Decision Tree, Random Forest, Extremely Randomized Trees, Gradient Boosted Trees, LightGBM, XGBoost, TCNForecaster |
AutoML include anche modelli di insieme che creano combinazioni ponderate dei modelli con prestazioni migliori per migliorare ulteriormente l'accuratezza. Per la previsione, si usa un insieme di voto morbido in cui la composizione e i pesi vengono trovati usando l'algoritmo di selezione dell'ensemble Caruana.
Nota
Esistono due importanti avvertenze per gli ensemble di modelli di previsione:
- Il TCN non può attualmente essere incluso negli ensemble.
- Per impostazione predefinita, AutoML disabilita il metodo stack ensemble , incluso con le attività di regressione e classificazione predefinite in AutoML. Lo stack ensemble adatta un metamodello alle previsioni del modello migliore per trovare i pesi dell'ensemble. Durante il benchmarking interno, questa strategia ha una maggiore tendenza a adattarsi ai dati delle serie temporali. Questo risultato può comportare una scarsa generalizzazione, quindi l'insieme dello stack è disabilitato per impostazione predefinita. È possibile abilitare l'ensemble nella configurazione autoML, in base alle esigenze.
Come AutoML usa i dati
AutoML accetta i dati delle serie temporali in formato tabulare "wide". Ogni variabile deve avere una propria colonna corrispondente. AutoML richiede che una colonna sia l'asse temporale per il problema di previsione. Questa colonna deve essere analizzabile in un tipo datetime. Il set di dati delle serie temporali più semplice è costituito da una colonna temporale e da una colonna di destinazione numerica. La destinazione è la variabile che si intende prevedere in futuro. La tabella seguente illustra i valori di esempio per questo formato:
timestamp | quantity |
---|---|
2012-01-01 | 100 |
2012-01-02 | 97 |
2012-01-03 | 106 |
... | ... |
2013-12-31 | 347 |
In casi più complessi, il set di dati potrebbe contenere altre colonne allineate all'indice temporale:
timestamp | SKU | price | annunciato | quantity |
---|---|---|---|---|
2012-01-01 | JUICE1 | 3.5 | 0 | 100 |
2012-01-01 | BREAD3 | 5.76 | 0 | 47 |
2012-01-02 | JUICE1 | 3.5 | 0 | 97 |
2012-01-02 | BREAD3 | 5.5 | 1 | 68 |
... | ... | ... | ... | ... |
2013-12-31 | JUICE1 | 3.75 | 0 | 347 |
Il secondo esempio include uno SKU, un prezzo al dettaglio e un flag per indicare se un articolo è stato annunciato oltre al timestamp e alla quantità di destinazione. Il secondo set di dati rivela due serie: una per lo SKU JUICE1 e una per lo SKU BREAD3. La colonna SKU è una colonna ID serie temporale perché il raggruppamento in base a questi valori di colonna produce due gruppi che contengono una singola serie. Prima dello sweep del modello, AutoML esegue la convalida di base della configurazione e dei dati di input e aggiunge funzionalità ingegnerizzate.
Requisiti di lunghezza dei dati
Per eseguire il training di un modello di previsione, è necessario disporre di una quantità sufficiente di dati cronologici. Questa quantità di soglia varia in base alla configurazione del training. Se si forniscono dati di convalida, il numero minimo di osservazioni di training necessarie per ogni serie temporale viene espresso come segue:
$T_{\text{user validation}} = H + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$
In questa espressione $H$ è l'orizzonte di previsione, $l_{\text{max}}$ è l'ordine massimo di ritardo e $s_{\text{window}}$ è la dimensione della finestra per le funzionalità di aggregazione in sequenza. Se si usa la convalida incrociata, il numero minimo di osservazioni viene espresso nel modo seguente:
$T_{\text{CV}} = 2H + (n_{\text{CV}} - 1) n_{\text{step}} + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$
In questa versione, $n_{\text{CV}}$ è il numero di riduzioni di convalida incrociata e $n_{\text{step}}$ è la dimensione del passaggio CV o l'offset tra le riduzioni cv. La logica di base di queste formule è che è necessario avere sempre almeno un orizzonte di osservazioni di training per ogni serie temporale, incluso un riempimento per i ritardi e le suddivisioni di convalida incrociata. Per altre informazioni sulla convalida incrociata per la previsione, vedere Selezione del modello in AutoML.
Gestione dei dati mancanti
I modelli time series in AutoML richiedono osservazioni con spaziatura regolare nel tempo, che includono casi come osservazioni mensili o annuali in cui il numero di giorni tra le osservazioni può variare. Prima dell'avvio del processo di modellazione, AutoML deve assicurarsi che non siano presenti valori di serie mancanti e che le osservazioni siano regolari. Di conseguenza, esistono due casi di dati mancanti:
- Manca un valore per alcune celle nei dati tabulari.
- Manca una riga , che corrisponde a un'osservazione prevista in base alla frequenza della serie temporale.
Nel primo caso, AutoML imputa valori mancanti usando tecniche configurabili comuni. La tabella seguente mostra un esempio di riga prevista mancante:
timestamp | quantity |
---|---|
2012-01-01 | 100 |
2012-01-03 | 106 |
2012-01-04 | 103 |
... | ... |
2013-12-31 | 347 |
Questa serie ha una frequenza giornaliera, ma non c'è osservazione per il 2 gennaio 2012 (2012-01-02). In questo caso, AutoML tenta di compilare i dati aggiungendo una nuova riga per il valore mancante. Il nuovo valore per la quantity
colonna e qualsiasi altra colonna nei dati vengono quindi imputati come gli altri valori mancanti. Per eseguire questo processo, AutoML deve riconoscere la frequenza della serie per poter colmare le lacune di osservazione, come illustrato in questo caso. AutoML rileva automaticamente questa frequenza o, facoltativamente, l'utente può specificarla nella configurazione.
Il metodo di imputazione per fornire valori mancanti può essere configurato nell'input. Nella tabella seguente sono elencati i metodi predefiniti:
Tipo di colonna | Metodo di imputazione predefinito |
---|---|
Destinazione | Riempimento in avanti (ultima osservazione riportata) |
Funzionalità numerica | Valore mediano |
I valori mancanti per le funzionalità categoriche vengono gestiti durante la codifica numerica includendo un'altra categoria corrispondente a un valore mancante. L'imputazione è implicita in questo caso.
Definizione delle funzionalità automatizzata
AutoML aggiunge in genere nuove colonne ai dati utente per aumentare l'accuratezza della modellazione. Le funzionalità ingegneriate possono includere elementi predefiniti o facoltativi.
Funzionalità predefinite ingegneriate:
- Caratteristiche del calendario derivate dall'indice temporale, ad esempio il giorno della settimana
- Funzionalità categoriche derivate dagli ID serie temporale
- Codifica di tipi categorici in tipo numerico
Funzionalità ingegneriate facoltative:
- Funzionalità dell'indicatore per le festività associate a una determinata area
- Ritardi della quantità di destinazione
- Ritardi delle colonne delle funzionalità
- Aggregazioni di finestre in sequenza, ad esempio la media mobile, della quantità di destinazione
- scomposizione stagionale ((scomposizione stagionale e di tendenza tramite Loess (STL))
È possibile configurare la definizione delle funzionalità da AutoML SDK usando la classe ForecastingJob o dall'interfaccia Web studio di Azure Machine Learning.
Rilevamento e gestione di serie temporali non stazionarie
Una serie temporale in cui la variazione media e varianza nel tempo viene chiamata non fissa. Le serie temporali che presentano tendenze stocastiche sono non stazionistiche per natura.
L'immagine seguente presenta una visualizzazione per questo scenario. Il grafico traccia una serie che in genere tende verso l'alto. Se si calcolano e si confrontano i valori medi (medi) per la prima e la seconda metà della serie, è possibile identificare le differenze. La media della serie nella prima metà del tracciato è inferiore alla media nella seconda metà. Il fatto che la media della serie dipende dall'intervallo di tempo in esame è un esempio dei momenti variabili nel tempo. In questo scenario, la media di una serie è il primo momento.
L'immagine successiva mostra un grafico che traccia la serie originale nelle prime differenze, $\Delta y_{t} = y_t - y_{t-1}$. La media della serie è approssimativamente costante nell'intervallo di tempo, mentre la varianza sembra variare. Questo scenario illustra un esempio di serie oraria di primo ordine:
I modelli di regressione AutoML non possono gestire intrinsecamente le tendenze stocastiche o altri problemi noti associati a serie temporali non stazioni. Di conseguenza, l'accuratezza della previsione out-of-sample può essere scarsa quando sono presenti tali tendenze.
AutoML analizza automaticamente un set di dati time series per determinarne il livello o la stazione. Quando vengono rilevate serie temporali non stazioni, AutoML applica automaticamente una trasformazione differenziante per attenuare gli effetti del comportamento non stationary.
Sweep dei modelli
Dopo aver preparato i dati con la gestione dei dati mancanti e la progettazione delle funzionalità, AutoML esegue lo sweep su un set di modelli e iperparatori usando un servizio di raccomandazione del modello.
I modelli vengono classificati in base alle metriche di convalida o convalida incrociata e, facoltativamente, i modelli principali possono essere usati in un modello di insieme. Il modello migliore, o uno qualsiasi dei modelli sottoposti a training, può essere controllato, scaricato o distribuito per produrre previsioni in base alle esigenze. Per altre informazioni, vedere Sweep del modello e selezione per la previsione in AutoML.
Raggruppamento dei modelli
Quando un set di dati contiene più serie temporali, esistono diversi modi per modellare i dati. È possibile raggruppare i dati nelle colonne ID serie temporali ed eseguire il training di modelli indipendenti per ogni serie. Un approccio più generale consiste nel partizionare i dati in gruppi che possono contenere più serie (probabilmente correlate) ed eseguire il training di un modello per gruppo.
Per impostazione predefinita, la previsione di AutoML usa un approccio misto per il raggruppamento dei modelli. I modelli di serie temporali, oltre ad ARIMAX e Prophet, assegnano una serie a un gruppo, mentre altri modelli di regressione assegnano tutte le serie a un unico gruppo.
Ecco come ogni tipo di modello usa i gruppi:
Ogni serie in un gruppo separato (1:1):Naive, Stagionale Naive, Media, Media Stagionale, Smoothing Esponenziale, ARIMA, ARIMAX, Profeta
Tutte le serie nello stesso gruppo (N:1): Linear SGD, LARS LASSO, Elastic Net, K Nearest Neighbors, Decision Tree, Random Forest, Estremamente randomized Trees, Gradient Boosted Trees, LightGBM, XGBoost, TCNForecaster
I raggruppamenti di modelli più generali sono possibili usando la soluzione molti modelli in AutoML. Per altre informazioni, vedere Molti modelli - Notebook automatizzato di Machine Learning.