Previsione delle serie temporali in Snowflake tramite SQL
La previsione della domanda, la catena di approvvigionamento e la gestione dell'inventario, la pianificazione finanziaria sono importanti per le operazioni aziendali. Modelstar ti consente di farlo in Snowflake, con solo 1 riga di SQL.
Che cos'è la previsione delle serie temporali e i suoi casi d'uso?
La previsione delle serie temporali è una tecnica per prevedere i valori in base a dati storici campionati nel tempo.
La previsione è rudimentale per la gestione
Le previsioni possono aiutare le aziende a prendere decisioni aziendali adeguate sulla gestione della catena di approvvigionamento, la gestione dell'inventario (su quanto e quando rifornire), la pianificazione finanziaria, la roadmap dei prodotti e la strategia di assunzione, ecc. Con risultati di previsione accurati e tempestivi, la gestione aziendale può avere una migliore comprensione di come allocare le risorse o sfruttare i vantaggi.
Sfide tecniche per la previsione
La previsione è un'applicazione dell'analisi delle serie temporali. Ci sono diversi componenti da considerare:
- Stagionalità: cambiamenti periodici nel tempo. Esempio: le vacanze estive e invernali sono annuali o il consumo di caffè più elevato al mattino è giornaliero.
- Trend: continui cambiamenti non periodici. Esempio: crescita delle vendite dell'azienda negli ultimi 5 anni.
- Eventi dirompenti: cambiamenti improvvisi. Può essere guidato sia da fattori prevedibili, come le vacanze o la manutenzione del servizio, sia da problemi imprevedibili, come errori casuali o bug.
Sfide tecniche dell'implementazione
Python ha un ricco ecosistema per implementare algoritmi di apprendimento automatico e previsione. La nuova funzionalità Snowpark di Snowflake che porta Python nel tuo data warehouse, utilizzando UDF per eseguire Python in SQL, è un punto di svolta per le trasformazioni che puoi eseguire sui tuoi dati. Tuttavia, può essere scoraggiante e richiedere molto tempo se si desidera implementare una soluzione end-end per eseguire previsioni. Modelstar risolve questo problema fornendo una soluzione semplificata per portare i superpoteri di Python in SQL.
Modelstar è un progetto open source ed è basato sulle funzionalità lanciate di recente da Snowflake, come Snowpark. Gestisce automaticamente le dipendenze, gli artefatti del modello e l'I/O di file nel calcolo Snowflake.
L'SQL 1-liner per le previsioni
Modelstar ti consente di spedire e gestire modelli di previsione e visualizzare i risultati della modellazione con 1 riga di SQL all'interno di Snowflake. Sotto il cofano, Modelstar fornisce algoritmi di previsione predefiniti e li espone come procedura memorizzata SQL nel database. In questo esempio, useremo univariate_time_series_forecast
( API doc ). Questa API si basa su una libreria open source Prophet , che è uno degli algoritmi di previsione più utilizzati nell'industria.
Questa esercitazione fornisce i passaggi per creare un modello di previsione delle serie temporali e un report. Copre:
- Concetto di base: sui casi d'uso e sulla tecnologia delle previsioni di vendita.
- Strumento CLI Modelstar: Guida all'installazione di Modelstar
univariate_time_series_forecast
Sintassi SQL: l'1 riga SQL per fare previsioni- Rapporto previsionale: risultati previsionali pronti per essere consumati dai team aziendali
Preparazione per il viaggio
Questa è una guida rapida per configurare Modelstar se sei un utente Modelstar per la prima volta.
Passo #1: Installa Modelstar
$ pip install modelstar
Verificare l'installazione con un rapido controllo della versione:
$ modelstar --version
Step #2: Inizializza un progetto
$ modelstar init forecast_project
Ora vedrai una forecast_project
cartella creata nella tua directory di lavoro.
Passaggio 3: configurazione della sessione
All'interno della forecast_project
cartella, trova il file modelstar.config.yaml
e aprilo con il tuo editor preferito. Aggiungi le informazioni e le credenziali del tuo account Snowflake. Sentiti libero di nominare la sessione con qualsiasi nome. In questo esempio, usiamo snowflake-test
. Le credenziali in questo file vengono utilizzate per connettersi al data warehouse di Snowflake. (Nota: non eseguire il commit del file modelstar.config.yaml nel tuo CI/CD, controllo della versione.)
# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
- name: snowflake-test
connector: snowflake
config:
account: WQA*****
username: <username>
password: <password>
database: MODELSTAR_TEST
schema: PUBLIC
stage: test
warehouse: COMPUTE_WH
Passaggio n. 4: Ping Fiocco
Ora possiamo avviare una sessione Modelstar dal tuo terminale. All'interno della directory del progetto Modelstar appena generato (nel nostro esempio, è ./forecast_project/
), esegui questo:
$ modelstar use snowflake-test
Un ping di successo dovrebbe portare a qualcosa del genere:
Passaggio 5: registra l'algoritmo di previsione su Snowflake
Modelstar fornisce l'algoritmo di previsione pronto all'uso e gestisce le dipendenze per questo algoritmo, quindi non dovresti farlo tu. Per renderlo disponibile nel tuo magazzino Snowflake, esegui il seguente comando:
$ modelstar register forecast:univariate_time_series_forecast
Passaggio 6: carica i dati di vendita di esempio su Snowflake (facoltativo, se stai utilizzando il tuo set di dati )
Se desideri provare l'algoritmo di previsione su un set di dati di vendita di esempio, esegui questo comando per creare una tabella di dati nel tuo data warehouse. Puoi saltare questo passaggio se desideri utilizzare i tuoi dati.
$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE
Costruisci un modello di previsione utilizzando un SQL 1- lineare
Esegui questo script in un foglio
Utilizzare il seguente comando in Snowflake per creare il modello di previsione (l'esempio seguente utilizza i dati di esempio caricati nel passaggio n. 6):
CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');
Per eseguire l'algoritmo di previsione sui propri dati
Sotto il cofano, l'algoritmo di previsione viene eseguito all'interno di Snowflake come Stored Procedure. Richiede i seguenti parametri:
Per configurare il tuo periodo di previsione, consulta questo documento API per un elenco completo degli alias unità.
Controlla il risultato
Al termine dell'addestramento del modello, nella finestra Risultati fiocco di neve, un'esecuzione riuscita dovrebbe produrre una stringa json simile a questa:
{
"return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
"run_id": "3NvQXnHQqUdYG4Fu"
}
Controlla la tabella
Controlliamo la tabella dei risultati della corsa usando:
SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;
DS
(datetime
): dataoraY_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(float): legami media, inferiore e superiore del valore previsto (vedereUncertainty Intervals
la sezione Glossario per il loro significato).
Un report che registra le informazioni sull'esecuzione, con gli artefatti di machine learning, viene generato automaticamente con Modelstar. Per controllare il rapporto, esegui semplicemente questo comando nel tuo computer locale:
$ modelstar check <run_id>
Come menziona, un rapporto verrà visualizzato nel tuo browser:
Cosa c'è nel rapporto
Il rapporto comprende 3 sezioni:
- Meta informazioni di questa corsa
- Grafico previsionale: per verificare la qualità della modellazione e prevedere i risultati.
- Analisi dei componenti: per illustrare la tendenza e la stagionalità che il tuo modello ha "appreso", includendo una tendenza generale e la stagionalità annuale e settimanale (modelli ciclici su 1 anno/settimana).
Previsione nel campione e fuori dal campione: dalla previsione nel campione, puoi verificare quanto bene il modello di previsione si adatta ai dati effettivi. La previsione fuori campione mostra la previsione del futuro.
Intervalli di incertezza: la banda tra i limiti superiore e inferiore. Significa che c'è una probabilità dell'80% che il valore reale rientri in quell'intervallo. Un requisito di certezza più elevato porta a una banda più ampia (vedi l'articolo di Bartosz ). L'incertezza cresce anche man mano che ci addentriamo nel futuro, portando a una banda allargata in funzione del tempo.
Conclusione
La previsione è rudimentale per la gestione aziendale. Il nostro obiettivo era fornire una funzione di previsione a Snowflake per addestrare un modello di Machine Learning e fare previsioni utilizzandolo. Abbiamo ottenuto tutto questo con solo 1 riga di SQL. Insieme a questo, viene generato un rapporto di esecuzione contenente i dettagli dell'esecuzione insieme all'analisi di previsione. Ciò è stato reso possibile da Modelstar .
Dai un'occhiata al repository GitHub di Modelstar : qui , aggiungilo a stella per essere aggiornato sulle ultime novità. In caso di bug, problemi o richieste di funzionalità per il tuo caso d'uso, contatta Github o apri un problema su GitHub .
- Deposito GitHub:https://github.com/modelstar-labs/modelstar
- Documentazione:https://modelstar.io/docs/quickstart/