Utiliser des jours fériés personnalisés dans un modèle de prévision de séries temporelles
Ce tutoriel vous explique comment effectuer les tâches suivantes :
- Créer un modèle de prévision de séries temporelles
ARIMA_PLUS
qui n'utilise que des jours fériés intégrés. - Créer un modèle de prévision de séries temporelles
ARIMA_PLUS
qui utilise des jours fériés personnalisés en plus des jours fériés intégrés. - Visualiser les résultats de prévision de ces modèles
- Inspecter un modèle pour afficher les jours fériés représentés.
- Évaluer les effets des jours fériés personnalisés sur les résultats de prévision.
- Comparer les performances du modèle qui n'utilise que des jours fériés intégrés à celles du modèle qui utilise des jours fériés personnalisés en plus des jours fériés intégrés.
Ce tutoriel utilise les tables publiques bigquery-public-data.wikipedia.pageviews_*
.
Autorisations requises
- Pour créer l'ensemble de données, vous devez disposer de l'autorisation IAM
bigquery.datasets.create
. Pour créer la ressource de connexion, vous devez disposer des autorisations suivantes :
bigquery.connections.create
bigquery.connections.get
Pour créer le modèle, vous avez besoin des autorisations suivantes :
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.connections.delegate
Pour exécuter une inférence, vous devez disposer des autorisations suivantes :
bigquery.models.getData
bigquery.jobs.create
Pour plus d'informations sur les rôles et les autorisations IAM dans BigQuery, consultez la page Présentation d'IAM.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- BigQuery: You incur costs for the data you process in BigQuery.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Pour en savoir plus, consultez la page décrivant les tarifs de BigQuery.
Avant de commencer
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
Créer un ensemble de données
Vous allez créer un ensemble de données BigQuery pour stocker votre modèle de ML :
Dans la console Google Cloud, accédez à la page "BigQuery".
Dans le volet Explorateur, cliquez sur le nom de votre projet.
Cliquez sur
Afficher les actions > Créer un ensemble de données.Sur la page Créer un ensemble de données, procédez comme suit :
Dans le champ ID de l'ensemble de données, saisissez
bqml_tutorial
.Pour Type d'emplacement, sélectionnez Multirégional, puis sélectionnez US (plusieurs régions aux États-Unis).
Les ensembles de données publics sont stockés dans l'emplacement multirégional
US
. Par souci de simplicité, stockez votre ensemble de données dans le même emplacement.Conservez les autres paramètres par défaut, puis cliquez sur Créer un ensemble de données.
Préparer les données de séries temporelles
Agrégez les données d'affichage de la page Wikipédia Google I/O dans une seule table, regroupées par jour :
Accédez à la page BigQuery.
Dans le volet de l'éditeur, exécutez l'instruction SQL suivante :
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)
Créer un modèle de prévision de séries temporelles qui utilise des jours fériés intégrés
Créez un modèle qui prévoit les pages vues quotidiennement pour la page Wikipédia "Google I/O" en fonction des données des pages vues avant 2022 et en tenant compte des jours fériés intégrés :
Accédez à la page BigQuery.
Dans le volet de l'éditeur, exécutez l'instruction SQL suivante :
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';
Visualiser les résultats de prévision
Après avoir créé le modèle en utilisant les jours fériés intégrés, associez les données d'origine de la table bqml_tutorial.googleio_page_views
à la valeur prévue de la fonction ML.EXPLAIN_FORECAST
. Ensuite, visualisez-les dans Looker Studio :
Accédez à la page BigQuery.
Dans le volet de l'éditeur, exécutez l'instruction SQL suivante :
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;
Dans la section Résultats de la requête, cliquez sur Explorer les données, puis sur Explorer avec Looker Studio. Looker Studio s'ouvre dans un nouvel onglet.
Dans l'onglet Looker Studio, cliquez sur Ajouter un graphique, puis sur le graphique de séries temporelles :
Placez le graphique sur le rapport.
Dans l'onglet Configuration du volet Graphique, cliquez sur Ajouter une métrique, puis sélectionnez adjusted_views_without_custom_holiday :
Le graphique ressemble à ceci :
Vous pouvez constater que le modèle de prévision capture assez bien la tendance générale. Cependant, il ne capture pas l'augmentation de trafic lié aux événements Google I/O précédents et ne peut pas générer de prévision précise.
- Les sections suivantes expliquent comment traiter certaines de ces limites.
Créer un modèle de prévision de séries temporelles qui utilise des jours fériés intégrés et des jours fériés personnalisés
Comme vous pouvez le voir dans l'historique Google I/O, l'événement Google I/O s'est produit à différentes dates entre 2017 et 2022. Pour tenir compte de cette variante, créez un modèle de prévision des pages vues pour la page Wikipédia "Google I/O" en 2022, en fonction des données des pages vues avant 2022 et en utilisant les jours fériés personnalisés pour représenter. l'événement Google I/O de chaque année. Dans ce modèle, vous ajustez également la période des effets des jours fériés à trois jours autour de la date de l'événement, afin de mieux capturer le trafic potentiel de la page avant et après l'événement.
Accédez à la page BigQuery.
Dans le volet de l'éditeur, exécutez l'instruction SQL suivante :
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 ) );
Visualiser les résultats de prévision
Après avoir créé le modèle en utilisant les jours fériés personnalisés, associez les données d'origine de la table bqml_tutorial.googleio_page_views
à la valeur prévue de la fonction ML.EXPLAIN_FORECAST
. Ensuite, visualisez-les dans Looker Studio :
Accédez à la page BigQuery.
Dans le volet de l'éditeur, exécutez l'instruction SQL suivante :
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;
Dans la section Résultats de la requête, cliquez sur Explorer les données, puis sur Explorer avec Looker Studio. Looker Studio s'ouvre dans un nouvel onglet.
Dans l'onglet Looker Studio, cliquez sur Ajouter un graphique. Placez ensuite le graphique sur le rapport.
Dans l'onglet Configuration du volet Graphique, cliquez sur Ajouter une métrique, puis sélectionnez adjusted_views_with_custom_holiday :
Le graphique ressemble à ceci :
Comme vous pouvez le constater, les jours fériés personnalisés ont amélioré les performances du modèle de prévision. Il capture désormais efficacement l'augmentation des pages vues liée à Google I/O.
Inspecter les informations sur les jours fériés
Inspectez la liste des jours fériés pris en compte lors de la modélisation à l'aide de la fonction ML.HOLIDAY_INFO
:
Accédez à la page BigQuery.
Dans le volet de l'éditeur, exécutez l'instruction SQL suivante :
SELECT * FROM ML.HOLIDAY_INFO( MODEL `bqml_tutorial.forecast_googleio_with_custom_holiday`);
Les résultats incluent à la fois Google I/O et les jours fériés intégrés dans la liste des jours fériés :
Évaluer les effets des jours fériés personnalisés
Évaluez les effets des jours fériés personnalisés sur les résultats de prévision à l'aide de la fonction ML.EXPLAIN_FORECAST
:
Accédez à la page BigQuery.
Dans le volet de l'éditeur, exécutez l'instruction SQL suivante :
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;
Les résultats montrent que Google I/O contribue en grande partie aux effets des jours fériés sur les résultats de prévision :
Comparer les performances des modèles
Utilisez la fonction ML.EVALUATE
pour comparer les performances du premier modèle créé sans jours fériés personnalisés et du deuxième modèle créé avec des jours fériés personnalisés. Pour connaître les performances du deuxième modèle pour prévoir un jour férié personnalisé à venir, définissez la période sur la semaine de Google I/O en 2022 :
Accédez à la page BigQuery.
Dans le volet de l'éditeur, exécutez l'instruction SQL suivante :
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));
Les résultats montrent que le deuxième modèle offre une amélioration significative des performances :
Effectuer un nettoyage
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.