Previsione delle serie temporali in Snowflake tramite SQL

Nov 25 2022
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.

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.

Panoramica dell'output del blog. Immagine per autore.

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_forecastSintassi SQL: l'1 riga SQL per fare previsioni
  • Rapporto previsionale: risultati previsionali pronti per essere consumati dai team aziendali
Rapporto sulla nostra produzione. Immagine per autore.

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_projectcartella creata nella tua directory di lavoro.

Passaggio 3: configurazione della sessione

All'interno della forecast_projectcartella, trova il file modelstar.config.yamle 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:

Uscita console. Immagine per autore.

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

Uscita console. Immagine per autore.

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');

Fiocco di neve Snowsight. Immagine per autore.

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): dataora
  • Y_FORECAST, YHAT_LOWER, YHAT_UPPER(float): legami media, inferiore e superiore del valore previsto (vedere Uncertainty Intervalsla sezione Glossario per il loro significato).
  • Fiocco di neve Snowsight. Immagine per autore.

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:

Rapporto Modelstar. Immagine per autore.

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.
  • Rapporto Modelstar. Immagine per autore.
  • 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).
  • Rapporto Modelstar. Immagine per autore.

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/