Utilizzare le festività personalizzate in un modello di previsione delle serie temporali

Questo tutorial mostra come svolgere le seguenti attività:

  • Crea un ARIMA_PLUS modello di previsione delle serie temporali che usa solo festività integrate.
  • Crea un modello di previsione delle serie temporali ARIMA_PLUS che utilizza modelli festività in aggiunta alle festività integrate.
  • Visualizza i risultati previsti da questi modelli.
  • Esamina un modello per vedere quali festività viene modellato.
  • Valutare gli effetti delle festività personalizzate sui risultati previsti.
  • Confronta le prestazioni del modello che utilizza solo festività integrate con del modello che utilizza le festività personalizzate oltre in vacanza incorporate.

Questo tutorial utilizza bigquery-public-data.wikipedia.pageviews_* in tabelle pubbliche.

Autorizzazioni obbligatorie

  • Per creare il set di dati, è necessario il bigquery.datasets.create Autorizzazione IAM.
  • Per creare la risorsa di connessione, devi disporre delle seguenti autorizzazioni:

    • bigquery.connections.create
    • bigquery.connections.get
  • Per creare il modello, devi disporre delle seguenti autorizzazioni:

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

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

Per ulteriori informazioni su ruoli e autorizzazioni IAM in per BigQuery, consulta Introduzione a IAM.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

  • BigQuery: You incur costs for the data you process in BigQuery.

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Per ulteriori informazioni, vedi Prezzi di BigQuery.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva l'API BigQuery.

    Abilita l'API

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

    Go to project selector

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Attiva l'API BigQuery.

    Abilita l'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 di BigQuery

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

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

    Crea il set di dati.

  4. Nella pagina Crea set di dati, segui questi passaggi:

    • 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 vengono archiviati nell'US più regioni. Per semplicità, per archiviare il set di dati nella stessa posizione.

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

      Pagina Crea set di dati.

Prepara i dati delle serie temporali

Aggrega i dati di visualizzazione della pagina Wikipedia per Google I/O in un'unica raggruppata per giorno:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro dell'editor SQL, esegui questa istruzione SQL:

    CREATE OR REPLACE TABLE `bqml_tutorial.googleio_page_views`
    AS
    SELECT
      DATETIME_TRUNC(datehour, DAY) AS date,
      SUM(views) AS views
    FROM
      `bigquery-public-data.wikipedia.pageviews_*`
    WHERE
      datehour >= '2017-01-01'
      AND datehour < '2023-01-01'
      AND title = 'Google_I/O'
    GROUP BY
      DATETIME_TRUNC(datehour, DAY)
    

Creare un modello di previsione delle serie temporali che utilizza le festività integrate

Crea un modello che prevede le visualizzazioni di pagina giornaliere per la Wikipedia "Google I/O" pagina, in base alla pagina Visualizza i dati prima del 2022 e tenendo conto delle festività integrate:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro dell'editor SQL, esegui questa istruzione SQL:

    CREATE OR REPLACE MODEL `bqml_tutorial.forecast_googleio`
      OPTIONS (
        model_type = 'ARIMA_PLUS',
        holiday_region = 'US',
        time_series_timestamp_col = 'date',
        time_series_data_col = 'views',
        data_frequency = 'DAILY',
        horizon = 365)
    AS
    SELECT
      *
    FROM
      `bqml_tutorial.googleio_page_views`
    WHERE
      date < '2022-01-01';
    

Visualizza i risultati previsti

Dopo aver creato il modello utilizzando le festività integrate, unisci i dati originali da la tabella bqml_tutorial.googleio_page_views con il valore previsto dalla Funzione ML.EXPLAIN_FORECAST, e quindi visualizzarlo utilizzando Looker Studio:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro dell'editor SQL, esegui questa istruzione SQL:

    SELECT
      original.date,
      original.views AS original_views,
      explain_forecast.time_series_adjusted_data
        AS adjusted_views_without_custom_holiday,
    FROM
      `bqml_tutorial.googleio_page_views` original
    INNER JOIN
      (
        SELECT
          *
        FROM
          ML.EXPLAIN_FORECAST(
            MODEL `bqml_tutorial.forecast_googleio`,
            STRUCT(365 AS horizon))
      ) explain_forecast
      ON
        TIMESTAMP(original.date)
        = explain_forecast.time_series_timestamp
    ORDER BY
      original.date;
    
  3. Nel riquadro Risultati delle query, fai clic su Esplora i dati. e poi fai clic su Esplora con Looker Studio. Looker Studio. si apre in una nuova scheda.

  4. Nella scheda Looker Studio, fai clic su Aggiungi un grafico e poi fai clic sul grafico delle serie temporali:

    Aggiungi un grafico delle serie temporali.

    Posiziona il grafico nel report.

  5. Nella scheda Configurazione del riquadro Grafico, fai clic su Aggiungi metrica e seleziona adjusted_views_without_custom_holiday:

    Aggiungi un&#39;altra metrica.

    Il grafico è simile al seguente:

    Grafico delle serie temporali che mostra i risultati della previsione utilizzando le festività integrate

    Puoi notare che il modello di previsione cattura la tendenza generale beh. Tuttavia, non sta acquisendo l'aumento del traffico correlato agli annunci precedenti di eventi Google I/O e non è in grado di generare una previsione accurata

    1. Le prossime sezioni ti mostreranno come gestire alcuni di questi limitazioni.

Creare un modello di previsione per le serie temporali che utilizzi festività integrate e festività personalizzate

Come puoi vedere nelle cronologia Google I/O, Google I/O si è verificato in date diverse tra il 2017 e il 2022. Per questa variante, crea un modello che prevede le visualizzazioni di pagina per "Google_I/O" su Wikipedia pagina fino al 2022, in base ai dati sulle visualizzazioni di pagina precedenti 2022 e l'uso di festività personalizzate per rappresentare ogni anno l'evento Google I/O. In questo modello, viene regolato anche la finestra dell'effetto festivo in modo da coprire i tre giorni intorno alla data dell'evento, per acquisire meglio il potenziale traffico sulla pagina prima e dopo l'evento.

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro dell'editor SQL, esegui questa istruzione SQL:

    CREATE OR REPLACE MODEL `bqml_tutorial.forecast_googleio_with_custom_holiday`
      OPTIONS (
        model_type = 'ARIMA_PLUS',
        holiday_region = 'US',
        time_series_timestamp_col = 'date',
        time_series_data_col = 'views',
        data_frequency = 'DAILY',
        horizon = 365)
    AS (
      training_data AS (
          SELECT
            *
          FROM
            `bqml_tutorial.googleio_page_views`
          WHERE
            date < '2022-01-01'
        ),
      custom_holiday AS (
          SELECT
            'US' AS region,
            'GoogleIO' AS holiday_name,
            primary_date,
            1 AS preholiday_days,
            2 AS postholiday_days
          FROM
            UNNEST(
              [
                DATE('2017-05-17'),
                DATE('2018-05-08'),
                DATE('2019-05-07'),
                -- cancelled in 2020 due to pandemic
                DATE('2021-05-18'),
                DATE('2022-05-11')])
              AS primary_date
        )
    );
    

Visualizza i risultati previsti

Dopo aver creato il modello utilizzando le festività personalizzate, unisci i dati originali da la tabella bqml_tutorial.googleio_page_views con il valore previsto dalla Funzione ML.EXPLAIN_FORECAST, e quindi visualizzarlo utilizzando Looker Studio:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro dell'editor SQL, esegui questa istruzione SQL:

    SELECT
      original.date,
      original.views AS original_views,
      explain_forecast.time_series_adjusted_data
        AS adjusted_views_with_custom_holiday,
    FROM
      `bqml_tutorial.googleio_page_views` original
    INNER JOIN
      (
        SELECT
          *
        FROM
          ML.EXPLAIN_FORECAST(
            MODEL
              `bqml_tutorial.forecast_googleio_with_custom_holiday`,
            STRUCT(365 AS horizon))
      ) explain_forecast
      ON
        TIMESTAMP(original.date)
        = explain_forecast.time_series_timestamp
    ORDER BY
      original.date;
    
  3. Nel riquadro Risultati delle query, fai clic su Esplora i dati. e poi fai clic su Esplora con Looker Studio. Looker Studio. si apre in una nuova scheda.

  4. Nella scheda Looker Studio, fai clic su Aggiungi un grafico, quindi sul delle serie temporali e posizionarlo nel report.

  5. Nella scheda Configurazione del riquadro Grafico, fai clic su Aggiungi metrica e seleziona adjusted_views_with_custom_holiday.

    Il grafico è simile al seguente:

    Grafico delle serie temporali dei risultati della previsione utilizzando festività personalizzate

    Come puoi vedere, le festività personalizzate hanno migliorato il rendimento del modello di previsione. Ora registra in maniera efficace l'aumento delle di visualizzazioni causate da Google I/O.

Esaminare le informazioni relative alle festività

Esamina l'elenco delle festività prese in considerazione durante la definizione del modello utilizzando Funzione ML.HOLIDAY_INFO:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro dell'editor SQL, esegui questa istruzione SQL:

    SELECT *
    FROM
      ML.HOLIDAY_INFO(
        MODEL `bqml_tutorial.forecast_googleio_with_custom_holiday`);
    

    I risultati mostrano nell'elenco sia Google I/O sia le festività integrate delle festività:

    Risultati della funzione ML.HOLIDAY_INFO.

Valutare gli effetti delle festività personalizzate

Valuta gli effetti delle festività personalizzate sui risultati previsti in base a utilizzando Funzione ML.EXPLAIN_FORECAST:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro dell'editor SQL, esegui questa istruzione SQL:

    SELECT
      time_series_timestamp,
      holiday_effect_GoogleIO,
      holiday_effect_US_Juneteenth,
      holiday_effect_Christmas,
      holiday_effect_NewYear
    FROM
      ML.EXPLAIN_FORECAST(
        model
          `bqml_tutorial.forecast_googleio_with_custom_holiday`,
        STRUCT(365 AS horizon))
    WHERE holiday_effect != 0;
    

    I risultati mostrano che la conferenza Google I/O contribuisce in gran parte alle festività l'effetto sui risultati previsti:

    Risultati della funzione ML.EXPLAIN_FORECAST.

Confronta le prestazioni del modello

Utilizza la Funzione ML.EVALUATE per confrontare le prestazioni del primo modello creato senza festività personalizzate mentre il secondo è stato creato con festività personalizzate. Per vedere come la seconda il rendimento del modello per prevedere una futurità personalizzata, imposta il valore intervallo di tempo della settimana di Google I/O del 2022:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro dell'editor SQL, esegui questa istruzione SQL:

    SELECT
      "original" AS model_type,
      *
    FROM
      ml.evaluate(
        MODEL `bqml_tutorial.forecast_googleio`,
        (
          SELECT
            *
          FROM
            `bqml_tutorial.googleio_page_views`
          WHERE
            date >= '2022-05-08'
            AND date < '2022-05-12'
        ),
        STRUCT(
          365 AS horizon,
          TRUE AS perform_aggregation))
    UNION ALL
    SELECT
      "with_custom_holiday" AS model_type,
      *
    FROM
      ml.evaluate(
        MODEL
          `bqml_tutorial.forecast_googleio_with_custom_holiday`,
        (
          SELECT
            *
          FROM
            `bqml_tutorial.googleio_page_views`
          WHERE
            date >= '2022-05-08'
            AND date < '2022-05-12'
        ),
        STRUCT(
          365 AS horizon,
          TRUE AS perform_aggregation));
    

    I risultati mostrano che il secondo modello offre prestazioni significative dei contenuti migliori:

    Risultati della funzione ML.EXPLAIN_FORECAST.

Esegui la pulizia

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.