Prevedere più serie temporali con un modello ARIMA_PLUS univariato


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

Questo tutorial esegue previsioni per più serie temporali. I valori previsti vengono calcolati per ogni punto temporale, per ogni valore in una o più colonne specificate. Ad esempio, se vuoi prevedere il meteo e hai specificato una colonna contenente i dati delle città, i dati previsti conterranno le previsioni per tutti i punti temporali per la città A, poi i valori previsti per tutti i punti temporali per la città B e così via.

Questo tutorial utilizza i dati della tabella pubblica bigquery-public-data.new_york.citibike_trips. Questa tabella contiene informazioni sulle corse di Citi Bike a New York.

Prima di leggere questo tutorial, ti consigliamo vivamente di leggere Previsione di una singola serie temporale con un modello univariato.

Obiettivi

Questo tutorial ti guiderà nel completamento delle seguenti attività:

  • Creazione di un modello di serie temporali per prevedere il numero di corse in bicicletta utilizzando l'istruzione CREATE MODEL.
  • Valutare le informazioni sulla media mobile integrata autoregressiva (ARIMA) nel modello utilizzando la funzione ML.ARIMA_EVALUATE.
  • Esaminare i coefficienti del modello utilizzando la funzione ML.ARIMA_COEFFICIENTS.
  • Recupero delle informazioni sulla corsa in bicicletta previste dal modello utilizzando la funzione ML.FORECAST.
  • Recupero dei componenti della serie temporale, come stagionalità e tendenza, utilizzando la funzione ML.EXPLAIN_FORECAST. Puoi esaminare questi componenti delle serie temporali per spiegare i valori previsti.

Costi

Questo tutorial utilizza componenti fatturabili di Trusted Cloud by S3NS, 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. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

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

    Enable the BigQuery API.

    Enable the API

  4. Autorizzazioni richieste

    • Per creare il set di dati, devi disporre dell'autorizzazione IAM bigquery.datasets.create.

    • Per creare il modello, devi disporre delle seguenti autorizzazioni:

      • bigquery.jobs.create
      • bigquery.models.create
      • bigquery.models.getData
      • bigquery.models.updateData
    • Per eseguire l'inferenza, devi disporre delle seguenti autorizzazioni:

      • bigquery.models.getData
      • bigquery.jobs.create

    Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Introduzione a IAM.

Crea un set di dati

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

Console

  1. Nella console Trusted 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 set di dati.

    L'opzione di menu Crea set di dati.

  4. Nella pagina Crea set di dati:

    • In ID set di dati, inserisci bqml_tutorial.

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

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

bq

Per creare un nuovo set di dati, utilizza il comando bq mk con il flag --location. Per un elenco completo dei possibili parametri, consulta la documentazione di riferimento del comando bq mk --dataset.

  1. Crea un set di dati denominato bqml_tutorial con la località dei dati impostata su US e una descrizione di BigQuery ML tutorial dataset:

    bq --location=US mk -d \
     --description "BigQuery ML tutorial dataset." \
     bqml_tutorial

    Anziché utilizzare il flag --dataset, il comando utilizza la scorciatoia -d. Se ometti -d e --dataset, il comando crea per impostazione predefinita un dataset.

  2. Verifica che il set di dati sia stato creato:

    bq ls

API

Chiama il metodo datasets.insert con una risorsa dataset definita.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

BigQuery DataFrames

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

Visualizzare 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.

SQL

L'istruzione SELECT della seguente query utilizza la funzione EXTRACT per estrarre le informazioni sulla data dalla colonna starttime. La query utilizza la clausola COUNT(*) per ottenere il numero totale giornaliero di viaggi in Citi Bike.

Segui questi passaggi per visualizzare i dati delle serie temporali:

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

    Vai a BigQuery

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

    SELECT
     EXTRACT(DATE from starttime) AS date,
     COUNT(*) AS num_trips
    FROM
    `bigquery-public-data.new_york.citibike_trips`
    GROUP BY date;
  3. Al termine della query, fai clic su Esplora i dati > Esplora con Looker Studio. Looker Studio si apre in una nuova scheda. Completa i seguenti passaggi nella nuova scheda.

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

  5. Nel riquadro Grafico, scegli la scheda Configurazione.

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

    Grafico che mostra i dati dei viaggi in bicicletta nel tempo.

BigQuery DataFrames

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.


import bigframes.pandas as bpd

df = bpd.read_gbq("bigquery-public-data.new_york.citibike_trips")

features = bpd.DataFrame(
    {
        "num_trips": df.starttime,
        "date": df["starttime"].dt.date,
    }
)
date = df["starttime"].dt.date
df.groupby([date])
num_trips = features.groupby(["date"]).count()

# Results from running "print(num_trips)"

#                num_trips
# date
# 2013-07-01      16650
# 2013-07-02      22745
# 2013-07-03      21864
# 2013-07-04      22326
# 2013-07-05      21842
# 2013-07-06      20467
# 2013-07-07      20477
# 2013-07-08      21615
# 2013-07-09      26641
# 2013-07-10      25732
# 2013-07-11      24417
# 2013-07-12      19006
# 2013-07-13      26119
# 2013-07-14      29287
# 2013-07-15      28069
# 2013-07-16      29842
# 2013-07-17      30550
# 2013-07-18      28869
# 2013-07-19      26591
# 2013-07-20      25278
# 2013-07-21      30297
# 2013-07-22      25979
# 2013-07-23      32376
# 2013-07-24      35271
# 2013-07-25      31084

num_trips.plot.line(
    # Rotate the x labels so they are more visible.
    rot=45,
)

Crea il modello di serie temporali

Vuoi prevedere il numero di viaggi in bicicletta per ogni stazione Citi Bike, il che richiede molti modelli di serie temporali, uno per ogni stazione Citi Bike inclusa nei dati di input. Puoi creare più modelli per farlo, ma può essere un processo noioso e dispendioso in termini di tempo, soprattutto se hai un gran numero di serie temporali. In alternativa, puoi utilizzare una singola query per creare e adattare un insieme di modelli di serie temporali per prevedere più serie temporali contemporaneamente.

SQL

Nella seguente query, la clausola OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) indica che stai creando un modello di serie temporali basato su ARIMA. Utilizzi l'opzione time_series_id_col dell'istruzione CREATE MODEL per specificare una o più colonne nei dati di input per cui vuoi ottenere le previsioni, in questo caso la stazione Citi Bike, come rappresentato dalla colonna start_station_name. Utilizzi la clausola WHERE per limitare le stazioni di partenza a quelle con Central Park nel nome. L'opzione auto_arima_max_order dell'istruzione CREATE MODEL controlla lo spazio di ricerca per l'ottimizzazione degli iperparametri nell'algoritmo auto.ARIMA. L'opzione decompose_time_series dell'istruzione CREATE MODEL è impostata per impostazione predefinita su TRUE, in modo che le informazioni sui dati delle serie temporali vengano restituite quando valuti il modello nel passaggio successivo.

Per creare il modello:

  1. Nella console Trusted 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.nyc_citibike_arima_model_group`
    OPTIONS
    (model_type = 'ARIMA_PLUS',
     time_series_timestamp_col = 'date',
     time_series_data_col = 'num_trips',
     time_series_id_col = 'start_station_name',
     auto_arima_max_order = 5
    ) AS
    SELECT
     start_station_name,
     EXTRACT(DATE from starttime) AS date,
     COUNT(*) AS num_trips
    FROM
    `bigquery-public-data.new_york.citibike_trips`
    WHERE start_station_name LIKE '%Central Park%'
    GROUP BY start_station_name, date;

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

Questa query crea dodici modelli di serie temporali, uno per ciascuna delle dodici stazioni di partenza di Citi Bike nei dati di input. Il costo in termini di tempo, circa 24 secondi, è solo 1,4 volte superiore a quello della creazione di un singolo modello di serie temporale a causa del parallelismo. Tuttavia, se rimuovi la clausola WHERE ... LIKE ..., ci sarebbero più di 600 serie temporali da prevedere e non verrebbero previste completamente in parallelo a causa delle limitazioni della capacità degli slot. In questo caso, la query richiederebbe circa 15 minuti per terminare. Per ridurre il tempo di esecuzione della query a scapito di un potenziale leggero calo della qualità del modello, puoi diminuire il valore di auto_arima_max_order. In questo modo si riduce lo spazio di ricerca dell'ottimizzazione degli iperparametri nell'algoritmo auto.ARIMA. Per ulteriori informazioni, vedi Large-scale time series forecasting best practices.

BigQuery DataFrames

Nel seguente snippet, stai creando un modello di serie temporali basato su ARIMA.

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.

from bigframes.ml import forecasting
import bigframes.pandas as bpd

model = forecasting.ARIMAPlus(
    # To reduce the query runtime with the compromise of a potential slight
    # drop in model quality, you could decrease the value of the
    # auto_arima_max_order. This shrinks the search space of hyperparameter
    # tuning in the auto.ARIMA algorithm.
    auto_arima_max_order=5,
)

df = bpd.read_gbq("bigquery-public-data.new_york.citibike_trips")

# This query creates twelve time series models, one for each of the twelve
# Citi Bike start stations in the input data. If you remove this row
# filter, there would be 600+ time series to forecast.
df = df[df["start_station_name"].str.contains("Central Park")]

features = bpd.DataFrame(
    {
        "start_station_name": df["start_station_name"],
        "num_trips": df["starttime"],
        "date": df["starttime"].dt.date,
    }
)
num_trips = features.groupby(
    ["start_station_name", "date"],
    as_index=False,
).count()

X = num_trips["date"].to_frame()
y = num_trips["num_trips"].to_frame()

model.fit(
    X,
    y,
    # The input data that you want to get forecasts for,
    # in this case the Citi Bike station, as represented by the
    # start_station_name column.
    id_col=num_trips["start_station_name"].to_frame(),
)

# The model.fit() call above created a temporary model.
# Use the to_gbq() method to write to a permanent location.
model.to_gbq(
    your_model_id,  # For example: "bqml_tutorial.nyc_citibike_arima_model",
    replace=True,
)

In questo modo vengono creati dodici modelli di serie temporali, uno per ciascuna delle dodici stazioni di partenza di Citi Bike nei dati di input. Il costo in termini di tempo, pari a circa 24 secondi, è solo 1,4 volte superiore a quello della creazione di un singolo modello di serie temporale a causa del parallelismo.

Valuta il modello

SQL

Valuta il modello di serie temporale utilizzando la funzione ML.ARIMA_EVALUATE. La funzione ML.ARIMA_EVALUATE mostra le metriche di valutazione generate per il modello durante il processo di tuning automatico degli iperparametri.

Per valutare il modello:

  1. Nella console Trusted 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.nyc_citibike_arima_model_group`);

    I risultati dovrebbero essere simili ai seguenti:

    Metriche di valutazione per il modello di serie temporali.

    Mentre auto.ARIMA valuta decine di modelli ARIMA candidati per ogni serie temporale, ML.ARIMA_EVALUATE per impostazione predefinita restituisce solo le informazioni del modello migliore per rendere compatta la tabella di output. Per visualizzare tutti i modelli candidati, puoi impostare l'argomento show_all_candidate_model della funzione ML.ARIMA_EVALUATE su TRUE.

BigQuery DataFrames

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.

# Evaluate the time series models by using the summary() function. The summary()
# function shows you the evaluation metrics of all the candidate models evaluated
# during the process of automatic hyperparameter tuning.
summary = model.summary()
print(summary.peek())

# Expected output:
#    start_station_name                  non_seasonal_p  non_seasonal_d   non_seasonal_q  has_drift  log_likelihood           AIC     variance ...
# 1         Central Park West & W 72 St               0               1                5      False    -1966.449243   3944.898487  1215.689281 ...
# 8            Central Park W & W 96 St               0               0                5      False     -274.459923    562.919847   655.776577 ...
# 9        Central Park West & W 102 St               0               0                0      False     -226.639918    457.279835    258.83582 ...
# 11        Central Park West & W 76 St               1               1                2      False    -1700.456924   3408.913848   383.254161 ...
# 4   Grand Army Plaza & Central Park S               0               1                5      False    -5507.553498  11027.106996   624.138741 ...

La colonna start_station_name identifica la colonna di dati di input per cui sono state create le serie temporali. Questa è la colonna specificata con l'opzione time_series_id_col durante la creazione del modello.

Le colonne di output non_seasonal_p, non_seasonal_d, non_seasonal_q e has_drift definiscono un modello ARIMA nella pipeline di addestramento. Le colonne di output log_likelihood, AIC e variancesono pertinenti per la procedura di adattamento del modello ARIMA.La procedura di adattamento determina il modello ARIMA migliore utilizzando l'algoritmo auto.ARIMA, uno per ogni serie temporale.

L'algoritmo auto.ARIMA utilizza il 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 42 diversi modelli ARIMA candidati in parallelo. 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 vengono restituiti in ordine crescente in base all'AIC. Il modello nella prima riga ha l'AIC più basso ed è considerato il migliore. Questo modello migliore viene salvato come modello finale e viene utilizzato quando prevedi i dati, valuti il modello ed esamini i coefficienti del modello, come mostrato nei passaggi successivi.

La colonna seasonal_periods contiene informazioni sul pattern stagionale identificato nei dati delle serie temporali. Ogni serie temporale può avere pattern stagionali diversi. Ad esempio, dalla figura puoi notare che una serie temporale ha un pattern annuale, mentre altre no.

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 informazioni sui dati delle serie temporali di input e non sono correlate alla modellazione ARIMA. Queste colonne hanno anche gli stessi valori in tutte le righe di output.

Ispezionare i coefficienti del modello

SQL

Esamina i coefficienti del modello di serie temporale utilizzando la funzione ML.ARIMA_COEFFICIENTS.

Per recuperare i coefficienti del modello:

  1. Nella console Trusted 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.nyc_citibike_arima_model_group`);

    Il completamento della query richiede meno di un secondo. I risultati dovrebbero essere simili ai seguenti:

    Coefficienti per il modello di serie temporali.

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

BigQuery DataFrames

Esamina i coefficienti del modello di serie temporale utilizzando la funzione coef_.

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.

coef = model.coef_
print(coef.peek())

# Expected output:
#    start_station_name                                              ar_coefficients                                   ma_coefficients intercept_or_drift
# 5    Central Park West & W 68 St                                                [] [-0.41014089  0.21979212 -0.59854213 -0.251438...                0.0
# 6         Central Park S & 6 Ave                                                [] [-0.71488957 -0.36835772  0.61008532  0.183290...                0.0
# 0    Central Park West & W 85 St                                                [] [-0.39270166 -0.74494638  0.76432596  0.489146...                0.0
# 3    W 82 St & Central Park West                         [-0.50219511 -0.64820817]             [-0.20665325  0.67683137 -0.68108631]                0.0
# 11  W 106 St & Central Park West [-0.70442887 -0.66885553 -0.25030325 -0.34160669]                                                []                0.0

La colonna start_station_name identifica la colonna di dati di input per cui sono state create le serie temporali. Questa è la colonna che hai specificato nell'opzione time_series_id_col durante la creazione del modello.

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 di media mobile (MA) del modello ARIMA. Entrambe queste colonne contengono valori di array, le cui lunghezze sono uguali a non_seasonal_p e non_seasonal_q, rispettivamente. Il valore intercept_or_drift è il termine costante nel modello ARIMA.

Utilizzare il modello per prevedere i dati

SQL

Prevedi i valori futuri delle serie temporali utilizzando la funzione ML.FORECAST.

Nella seguente query GoogleSQL, la clausola STRUCT(3 AS horizon, 0.9 AS confidence_level) indica che la query prevede tre punti temporali futuri e genera un intervallo di previsione con un livello di confidenza del 90%.

Per prevedere i dati con il modello:

  1. Nella console Trusted 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.FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`,
     STRUCT(3 AS horizon, 0.9 AS confidence_level))
  3. Fai clic su Esegui.

    Il completamento della query richiede meno di un secondo. I risultati dovrebbero essere simili ai seguenti:

    Output di ML.FORECAST.

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

BigQuery DataFrames

Prevedi i valori futuri delle serie temporali utilizzando la funzione predict.

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.

prediction = model.predict(horizon=3, confidence_level=0.9)

print(prediction.peek())
# Expected output:
#            forecast_timestamp                             start_station_name  forecast_value  standard_error  confidence_level ...
# 4   2016-10-01 00:00:00+00:00                         Central Park S & 6 Ave      302.377201       32.572948               0.9 ...
# 14  2016-10-02 00:00:00+00:00  Central Park North & Adam Clayton Powell Blvd      263.917567       45.284082               0.9 ...
# 1   2016-09-25 00:00:00+00:00                    Central Park West & W 85 St      189.574706       39.874856               0.9 ...
# 20  2016-10-02 00:00:00+00:00                    Central Park West & W 72 St      175.474862       40.940794               0.9 ...
# 12  2016-10-01 00:00:00+00:00                   W 106 St & Central Park West        63.88163       18.088868               0.9 ...

La prima colonna, start_station_name, annota la serie temporale a cui è adattato ogni modello di serie temporale. Ogni start_station_name ha tre righe di risultati previsti, come specificato dal valore horizon.

Per ogni start_station_name, le righe di output sono in ordine cronologico in base al 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 dai valori delle colonne standard_error e confidence_level.

Spiegare i risultati della previsione

SQL

Puoi ottenere metriche di interpretabilità oltre ai dati di previsione utilizzando la funzione ML.EXPLAIN_FORECAST. La funzione ML.EXPLAIN_FORECAST prevede i valori futuri delle serie temporali e restituisce anche tutti i componenti separati delle serie temporali. Se vuoi solo restituire i dati di previsione, utilizza la funzione ML.FORECAST, come mostrato in Utilizzare il modello per prevedere i dati.

La clausola STRUCT(3 AS horizon, 0.9 AS confidence_level) utilizzata nella funzione ML.EXPLAIN_FORECAST indica che la query prevede tre punti temporali futuri e genera un intervallo di previsione con un livello di confidenza del 90%.

Segui questi passaggi per spiegare i risultati del modello:

  1. Nella console Trusted 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.nyc_citibike_arima_model_group`,
     STRUCT(3 AS horizon, 0.9 AS confidence_level));

    Il completamento della query richiede meno di un secondo. I risultati dovrebbero essere simili ai seguenti:

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

    Le prime migliaia di righe restituite sono tutti dati cronologici. Devi scorrere i risultati per visualizzare i dati delle previsioni.

    Le righe dell'output vengono ordinate prima in base a start_station_name, poi cronologicamente in base al valore della colonna time_series_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 dai valori delle colonne standard_error e confidence_level.

    Per ulteriori informazioni sulle colonne di output, vedi ML.EXPLAIN_FORECAST.

BigQuery DataFrames

Puoi ottenere metriche di interpretabilità oltre ai dati di previsione utilizzando la funzione predict_explain. La funzione predict_explain prevede i valori futuri delle serie temporali e restituisce anche tutti i componenti separati delle serie temporali. Se vuoi solo restituire i dati di previsione, utilizza la funzione predict, come mostrato in Utilizzare il modello per prevedere i dati.

La clausola horizon=3, confidence_level=0.9 utilizzata nella funzione predict_explain indica che la query prevede tre punti temporali futuri e genera un intervallo di previsione con un livello di confidenza del 90%.

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.

explain = model.predict_explain(horizon=3, confidence_level=0.9)

print(explain.peek(5))
# Expected output:
#   time_series_timestamp	        start_station_name	            time_series_type	    time_series_data	    time_series_adjusted_data	    standard_error	    confidence_level	    prediction_interval_lower_bound	    prediction_interval_upper_bound	    trend	    seasonal_period_yearly	    seasonal_period_quarterly	    seasonal_period_monthly	    seasonal_period_weekly	    seasonal_period_daily	    holiday_effect	    spikes_and_dips	    step_changes	    residual
# 0	2013-07-01 00:00:00+00:00	Central Park S & 6 Ave	                history	                  69.0	                   154.168527	              32.572948	             <NA>	                        <NA>	                            <NA>	                 0.0	          35.477484	                       <NA>	                        <NA>	                  -28.402102	                 <NA>	                <NA>	               0.0	         -85.168527	        147.093145
# 1	2013-07-01 00:00:00+00:00	Grand Army Plaza & Central Park S	    history	                  79.0	                      79.0	                  24.982769	             <NA>	                        <NA>	                            <NA>	                 0.0	          43.46428	                       <NA>	                        <NA>	                  -30.01599	                     <NA>	                <NA>	               0.0	            0.0	             65.55171
# 2	2013-07-02 00:00:00+00:00	Central Park S & 6 Ave	                history	                  180.0	                   204.045651	              32.572948	             <NA>	                        <NA>	                            <NA>	              147.093045	      72.498327	                       <NA>	                        <NA>	                  -15.545721	                 <NA>	                <NA>	               0.0	         -85.168527	         61.122876
# 3	2013-07-02 00:00:00+00:00	Grand Army Plaza & Central Park S	    history	                  129.0	                    99.556269	              24.982769	             <NA>	                        <NA>	                            <NA>	               65.551665	      45.836432	                       <NA>	                        <NA>	                  -11.831828	                 <NA>	                <NA>	               0.0	            0.0	             29.443731
# 4	2013-07-03 00:00:00+00:00	Central Park S & 6 Ave	                history	                  115.0	                   205.968236	              32.572948	             <NA>	                        <NA>	                            <NA>	               191.32754	      59.220766	                       <NA>	                        <NA>	                  -44.580071	                 <NA>	                <NA>	               0.0	         -85.168527	        -5.799709

Le righe dell'output vengono ordinate prima in base a time_series_timestamp, poi cronologicamente in base al valore della colonna start_station_name. 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 dai valori delle colonne standard_error e confidence_level.

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 preferisci riutilizzare il progetto, puoi eliminare il set di dati creato in questo tutorial:

  1. Se necessario, apri la pagina BigQuery nella consoleTrusted Cloud .

    Vai alla pagina BigQuery

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

  3. Fai clic su Elimina set di dati per eliminare 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 poi fai clic su Elimina.

Elimina il progetto

Per eliminare il progetto:

  1. In the Trusted 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