Previsione di una singola serie temporale con un modello univariato


Questo tutorial insegna a utilizzare un modello di serie temporale univariata per prevedere il valore futuro di una determinata colonna in base ai valori storici. per quella colonna.

Questo tutorial prevede una singola serie temporale. I valori previsti vengono calcolati una volta per ogni punto temporale nei dati di input.

Questo tutorial utilizza i dati del pubblico Tabella di esempio bigquery-public-data.google_analytics_sample.ga_sessions. Questa tabella contiene dati di e-commerce offuscati del Google Merchandise Store.

Obiettivi

Questo tutorial ti guida nel completamento delle seguenti attività:

  • Creazione di un modello di serie temporali per prevedere il traffico del sito utilizzando l'istruzione CREATE MODEL.
  • Valutazione delle informazioni sulla media mobile integrata autoregressiva (ARIMA) nel modello utilizzando Funzione ML.ARIMA_EVALUATE.
  • Controllare i coefficienti del modello utilizzando la funzione ML.ARIMA_COEFFICIENTS.
  • Recuperare le informazioni sul traffico del sito previsto dal modello utilizzando la funzione ML.FORECAST.
  • Recuperare i componenti della serie temporale, come la stagionalità e la tendenza, utilizzando la funzione ML.EXPLAIN_FORECAST. Puoi esaminare questi componenti delle serie temporali per spiegare i valori previsti.

Costi

Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:

  • BigQuery
  • BigQuery ML

Per ulteriori informazioni sui costi di BigQuery, consulta la pagina Prezzi di BigQuery.

Per ulteriori informazioni sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. BigQuery viene attivato automaticamente nei nuovi progetti. Per attivare BigQuery in un progetto preesistente, vai a

    Enable the BigQuery API.

    Enable the API

Crea un set di dati

Crea un set di dati BigQuery per archiviare il tuo modello ML:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nel riquadro Explorer, fai clic sul nome del progetto.

  3. Fai clic su Visualizza azioni > Crea il set di dati.

    Crea il set di dati.

  4. Nella pagina Crea set di dati:

    • In ID set di dati, inserisci bqml_tutorial.

    • Per Tipo di località, seleziona Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).

      I set di dati pubblici sono archiviati nella US multiregione. Per semplicità, archivia il set di dati nella stessa posizione.

    • Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.

      Pagina Crea set di dati.

Visualizza i dati di input

Prima di creare il modello, puoi visualizzare facoltativamente i dati delle serie temporali di input per avere un'idea della distribuzione. Puoi farlo utilizzando Looker Studio.

Per visualizzare i dati delle serie temporali:

SQL

Nella seguente query GoogleSQL, L'istruzione SELECT analizza la colonna date dall'input tabella di tipo TIMESTAMP e la rinomina in parsed_date e utilizza la clausola SUM(...) e la clausola GROUP BY date per creare una clausola Valore totals.visits.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, incolla la seguente query e fai clic su Esegui:

    SELECT
    PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date,
    SUM(totals.visits) AS total_visits
    FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    GROUP BY date;
    1. Al termine della query, fai clic su Esplora i dati > Esplora con Looker Studio. Looker Studio si apre in una nuova scheda. Nella nuova scheda, completa i seguenti passaggi.

    2. In Looker Studio, fai clic su Inserisci > Grafico delle serie temporali:

    3. Nel riquadro Grafico, scegli la scheda Configurazione.

    4. Nella sezione Metrica, aggiungi il campo total_visits e rimuovi il la metrica predefinita Conteggio record. Il grafico risultante è simile al seguente:

      Result_visualization

      Dal grafico è possibile vedere che la serie temporale di input ha uno schema stagionale settimanale.

BigQuery DataFrames

Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.

import bigframes.pandas as bpd

# Start by loading the historical data from BigQuerythat you want to analyze and forecast.
# This clause indicates that you are querying the ga_sessions_* tables in the google_analytics_sample dataset.
# Read and visualize the time series you want to forecast.
df = bpd.read_gbq("bigquery-public-data.google_analytics_sample.ga_sessions_*")
parsed_date = bpd.to_datetime(df.date, format="%Y%m%d", utc=True)
visits = df["totals"].struct.field("visits")
total_visits = visits.groupby(parsed_date).sum()

# Expected output: total_visits.head()
# date
# 2016-08-01 00:00:00+00:00    1711
# 2016-08-02 00:00:00+00:00    2140
# 2016-08-03 00:00:00+00:00    2890
# 2016-08-04 00:00:00+00:00    3161
# 2016-08-05 00:00:00+00:00    2702
# Name: visits, dtype: Int64

total_visits.plot.line()

Il risultato è simile al seguente: Result_visualization

crea il modello di serie temporali

Crea un modello di serie temporali per prevedere le visite totali al sito come rappresentato dalla colonnatotals.visits e addestrarlo sui dati di Google Analytics 360.

Nella query seguente, OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) indica che viene creata Basato su ARIMA modello di serie temporale. L'opzione auto_arima del statement CREATE MODEL è impostata per impostazione predefinita su TRUE, pertanto l'algoritmo auto.ARIMA ottimizza automaticamente gli iperparametri nel modello. L'algoritmo adatta a decine di modelli candidati e sceglie il modello migliore, ovvero con il più basso Criterio delle informazioni Akaike (AIC). L'opzione data_frequency delle istruzioni CREATE MODEL è impostata per impostazione predefinita su AUTO_FREQUENCY, pertanto il processo di addestramento deduce automaticamente la frequenza dei dati della serie temporale di input. La Opzione decompose_time_series dell'istruzione CREATE MODEL per impostazione predefinita è TRUE, quindi le informazioni su i dati delle serie temporali vengono restituiti quando valuti il modello nel passaggio successivo.

Per creare il modello:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, incolla la seguente query e fai clic su Esegui:

    CREATE OR REPLACE MODEL `bqml_tutorial.ga_arima_model`
    OPTIONS
    (model_type = 'ARIMA_PLUS',
      time_series_timestamp_col = 'parsed_date',
      time_series_data_col = 'total_visits',
      auto_arima = TRUE,
      data_frequency = 'AUTO_FREQUENCY',
      decompose_time_series = TRUE
    ) AS
    SELECT
    PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date,
    SUM(totals.visits) AS total_visits
    FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    GROUP BY date;

    Il completamento della query richiede circa 4 secondi, dopodiché Il modello ga_arima_model viene visualizzato nel riquadro Explorer. Poiché la query utilizza un'istruzione CREATE MODEL per creare un modello, non vengono visualizzati i risultati della query.

Valutare i modelli candidati

Valuta i modelli di serie temporali utilizzando ML.ARIMA_EVALUATE personalizzata. La funzione ML.ARIMA_EVALUATE mostra le metriche di valutazione di tutti i modelli candidati valutati durante il processo di ottimizzazione automatica degli iperparametri.

Per valutare il modello:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, incolla la seguente query e fai clic su Esegui:

    SELECT
     *
    FROM
     ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.ga_arima_model`);

    I risultati dovrebbero essere simili ai seguenti:

    Output di ML.ARIMA_EVALUATE.

    non_seasonal_p, non_seasonal_d, non_seasonal_q e has_drift le colonne di output definiscono un modello ARIMA nella pipeline di addestramento. Le colonne di output log_likelihood, AIC e variance sono pertinenti alla procedura di adattamento del modello ARIMA.

    L'algoritmo auto.ARIMA utilizza Test KPSS per determinare il valore migliore per non_seasonal_d, che in questo caso è 1. Quando non_seasonal_d è 1, l'algoritmo auto.ARIMA addestra in parallelo 42 diversi modelli ARIMA candidati. In questo esempio, tutti i 42 modelli candidati sono validi, quindi l'output contiene 42 righe, una per ogni modello ARIMA candidato; nei casi in cui alcuni modelli non sono validi, vengono esclusi dall'output. Questi modelli candidati sono restituiti in ordine crescente dall'AIC. Il modello nella prima riga ha il valore AIC più basso ed è considerato il migliore. Il modello migliore viene salvato come modello finale e viene utilizzato quando chiami funzioni come ML.FORECAST sul modello

    La colonna seasonal_periods contiene informazioni sul modello stagionale identificati nei dati delle serie temporali. Non ha nulla a che fare con la modellazione ARIMA, pertanto ha lo stesso valore in tutte le righe di output. Mostra un andamento settimanale, in linea con i risultati che hai visto se hai scelto di visualizzare i dati di input.

    Le colonne has_holiday_effect, has_spikes_and_dips e has_step_changes vengono compilate solo quando decompose_time_series=TRUE. Queste colonne riflettono anche sui dati della serie temporale di input e non sono correlate al report ARIMA e modelli di machine learning. Queste colonne hanno anche gli stessi valori in tutte le righe di output.

    La colonna error_message mostra gli errori verificatisi durante il periodo auto.ARIMA processo di fitting. Un possibile motivo di errori è quando vengono selezionati Colonne non_seasonal_p, non_seasonal_d, non_seasonal_q e has_drift non sono in grado di stabilizzare le serie temporali. Per recuperare il messaggio di errore di tutti i modelli candidati, imposta l'opzione show_all_candidate_models su TRUE quando crei il modello.

    Per ulteriori informazioni sulle colonne di output, consulta la funzione ML.ARIMA_EVALUATE.

Esamina i coefficienti del modello

Controlla i coefficienti del modello di serie temporali utilizzando la funzione ML.ARIMA_COEFFICIENTS.

Segui questi passaggi per recuperare i coefficienti del modello:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, incolla la seguente query e fai clic su Esegui:

    SELECT
     *
    FROM
     ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.ga_arima_model`);

    I risultati dovrebbero essere simili ai seguenti:

    Output di ML.ARIMA_COEFFICIENTS.

    La colonna di output ar_coefficients mostra i coefficienti del modello della parte autoregressiva (AR) del modello ARIMA. Analogamente, la colonna di output ma_coefficients mostra i coefficienti del modello della parte media mobile (MA) del modello ARIMA. Entrambe le colonne contengono valori di array, le cui lunghezze sono uguali rispettivamente a non_seasonal_p e non_seasonal_q. Hai visto nel output della funzione ML.ARIMA_EVALUATE che il modello migliore ha un Valore non_seasonal_p pari a 2 e un valore non_seasonal_q pari a 3. Pertanto, l'output ML.ARIMA_COEFFICIENTS, il valore ar_coefficients è a 2 elementi e il valore ma_coefficients è un array a 3 elementi. Il valore intercept_or_drift è il termine costante nel modello ARIMA.

    Per ulteriori informazioni sulle colonne di output, consulta la funzione ML.ARIMA_COEFFICIENTS.

Utilizza il modello per prevedere i dati

Prevedere i valori delle serie temporali future utilizzando ML.FORECAST personalizzata.

Nella seguente query GoogleSQL, STRUCT(30 AS horizon, 0.8 AS confidence_level) indica che la proprietà la query prevede 30 punti di tempo futuri e genera un intervallo di previsione con un livello di confidenza dell'80%.

Per prevedere i dati con il modello, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, incolla la query seguente e fai clic su Esegui:

    SELECT
     *
    FROM
     ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`,
                 STRUCT(30 AS horizon, 0.8 AS confidence_level));

    I risultati dovrebbero essere simili ai seguenti:

    Output ML.FORECAST.

    Le righe di output sono in ordine cronologico Valore della colonna forecast_timestamp. Nella previsione delle serie temporali, l'intervallo di previsione, rappresentato dai valori delle colonne prediction_interval_lower_bound e prediction_interval_upper_bound, è importante quanto il valore della colonna forecast_value. Il valore forecast_value è il punto medio dell'intervallo di previsione. L'intervallo di previsione dipende Valori delle colonne standard_error e confidence_level.

    Per ulteriori informazioni sulle colonne di output, consulta Funzione ML.FORECAST.

Spiegazione dei risultati delle previsioni

Puoi ottenere metriche di spiegabilità oltre ai dati di previsione utilizzando il metodo Funzione ML.EXPLAIN_FORECAST. La funzione ML.EXPLAIN_FORECAST effettua le previsioni i valori delle serie temporali future e restituisce anche tutti i componenti separati del serie temporali.

Analogamente alla funzione ML.FORECAST, la clausola STRUCT(30 AS horizon, 0.8 AS confidence_level) utilizzata nella funzione ML.EXPLAIN_FORECAST indica che la query prevede 30 punti di tempo futuri e genera un intervallo di previsione con un livello di confidenza dell'80%.

Per spiegare i risultati del modello:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, incolla la seguente query e fai clic su Esegui:

    SELECT
     *
    FROM
     ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.ga_arima_model`,
       STRUCT(30 AS horizon, 0.8 AS confidence_level));

    I risultati dovrebbero essere simili ai seguenti:

    Le prime nove colonne di output dei dati di previsione e delle spiegazioni delle previsioni. Le colonne di output dalla decima alla diciassettesima dei dati di previsione e delle spiegazioni delle previsioni. Le ultime sei colonne di output dei dati di previsione e delle spiegazioni delle previsioni.

    Le righe di output sono ordinate in ordine cronologico in base al valore della colonna time_series_timestamp.

    Per ulteriori informazioni sulle colonne di output, consulta la funzione ML.EXPLAIN_FORECAST.

    Se vuoi visualizzare i risultati, puoi utilizzare Looker Studio descritto in Visualizzare i dati di input per creare un grafico, utilizzando le seguenti colonne come metriche:

    • time_series_data
    • prediction_interval_lower_bound
    • prediction_interval_upper_bound
    • trend
    • seasonal_period_weekly
    • step_changes

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

  • Puoi eliminare il progetto che hai creato.
  • In alternativa, puoi conservare il progetto ed eliminare il set di dati.

Eliminare il set di dati

L'eliminazione del progetto rimuove tutti i set di dati e tutte le tabelle nel progetto. Se se preferisci riutilizzare il progetto, puoi eliminare il set di dati creato tutorial:

  1. Se necessario, apri la pagina BigQuery nella console Google Cloud.

    Vai alla pagina di BigQuery

  2. Nella barra di navigazione, fai clic sul set di dati bqml_tutorial che hai creato.

  3. Fai clic su Elimina set di dati sul lato destro della finestra. Questa azione elimina il set di dati, la tabella e tutti i dati.

  4. Nella finestra di dialogo Elimina set di dati, conferma il comando di eliminazione digitando il nome del set di dati (bqml_tutorial) e fai clic su Elimina.

Elimina il progetto

Per eliminare il progetto:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Passaggi successivi