Ce tutoriel vous explique comment utiliser un modèle de série temporelle univariée pour prévoir la valeur future d'une colonne donnée en fonction des valeurs historiques de cette colonne.
Ce tutoriel prévoit une seule série temporelle. Les valeurs de prévision sont calculées une fois pour chaque point temporel des données d'entrée.
Ce tutoriel utilise les données de l'exemple de table bigquery-public-data.google_analytics_sample.ga_sessions
publique. Ce tableau contient des données d'e-commerce masquées provenant du Google Merchandise Store.
Objectifs
Ce tutoriel vous guide à travers les tâches suivantes:
- Créer un modèle de série temporelle pour prévoir le trafic du site à l'aide de l'instruction
CREATE MODEL
- Évaluer les informations de la moyenne mobile intégrée autorégressive (ARIMA) dans le modèle à l'aide de la fonction
ML.ARIMA_EVALUATE
. - Inspecter les coefficients du modèle à l'aide de la fonction
ML.ARIMA_COEFFICIENTS
- Récupérez les informations sur le trafic du site prévues à partir du modèle à l'aide de la fonction
ML.FORECAST
. - Récupération des composants de la série temporelle, tels que la saisonnalité et la tendance, à l'aide de la fonction
ML.EXPLAIN_FORECAST
. Vous pouvez inspecter ces composants de série temporelle afin d'expliquer les valeurs prévues.
Coûts
Ce tutoriel utilise des composants facturables de Google Cloud, y compris:
- BigQuery
- BigQuery ML
Pour plus d'informations sur les coûts de BigQuery, consultez la page Tarifs de BigQuery.
Pour en savoir plus sur les coûts associés à BigQuery ML, consultez la page Tarifs de BigQuery ML.
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.
-
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.
- BigQuery est automatiquement activé dans les nouveaux projets.
Pour activer BigQuery dans un projet préexistant, accédez à .
Enable the BigQuery API.
Autorisations requises
Pour créer l'ensemble de données, vous devez disposer de l'autorisation IAM
bigquery.datasets.create
.Pour créer le modèle, vous avez besoin des autorisations suivantes :
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
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.
Créer un ensemble de données
Créez un ensemble de données BigQuery pour stocker votre modèle de ML.
Console
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.
bq
Pour créer un ensemble de données, exécutez la commande bq mk
en spécifiant l'option --location
. Pour obtenir la liste complète des paramètres possibles, consultez la documentation de référence sur la commande bq mk --dataset
.
Créez un ensemble de données nommé
bqml_tutorial
avec l'emplacement des données défini surUS
et une description deBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Au lieu d'utiliser l'option
--dataset
, la commande utilise le raccourci-d
. Si vous omettez-d
et--dataset
, la commande crée un ensemble de données par défaut.Vérifiez que l'ensemble de données a été créé:
bq ls
API
Appelez la méthode datasets.insert
avec une ressource d'ensemble de données définie.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Visualiser les données d'entrée
Avant de créer le modèle, vous pouvez éventuellement visualiser vos données de série temporelle d'entrée pour avoir une idée de la distribution. Pour ce faire, utilisez Looker Studio.
Pour visualiser les données de série temporelle:
SQL
Dans la requête GoogleSQL suivante, l'instruction SELECT
analyse la colonne date
de la table d'entrée avec le type TIMESTAMP
et la renomme parsed_date
. Elle utilise la clause SUM(...)
et la clause GROUP BY date
pour créer une valeur totals.visits
quotidienne.
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter:
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;
Une fois la requête terminée, cliquez sur Explorer les données > Explorer avec Looker Studio. Looker Studio s'ouvre dans un nouvel onglet. Procédez comme suit dans le nouvel onglet.
Dans Looker Studio, cliquez sur Insérer > Graphique de séries temporelles.
Dans le volet Graphique, sélectionnez l'onglet Configuration.
Dans la section Métrique, ajoutez le champ total_visits, puis supprimez la métrique par défaut Nombre d'enregistrements. Le graphique obtenu ressemble à ceci:
En examinant le graphique, vous pouvez voir que la série temporelle d'entrée présente une tendance saisonnière hebdomadaire.
BigQuery DataFrames
Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'ADC pour un environnement de développement local.
Le résultat ressemble à ce qui suit :
Créer le modèle de série temporelle
Créez un modèle de série temporelle pour prévoir le nombre total de visites sur le site, comme indiqué par la colonne totals.visits
, et entraînez-le sur les données Google Analytics 360.
SQL
Dans la requête suivante, la clause OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)
indique que vous créez un modèle de série temporelle basé sur ARIMA. L'option auto_arima
de l'instruction CREATE MODEL
est définie par défaut sur TRUE
. L'algorithme auto.ARIMA
ajuste donc automatiquement les hyperparamètres du modèle. L'algorithme s'adapte à des dizaines de modèles candidats et choisit le meilleur d'entre eux, qui présente l'AIC (Akaike information criterion) le plus faible.
L'option data_frequency
des instructions CREATE MODEL
est définie par défaut sur AUTO_FREQUENCY
. Le processus d'entraînement déduit donc automatiquement la fréquence des données de la série temporelle d'entrée. L'option decompose_time_series
de l'instruction CREATE MODEL
est définie par défaut sur TRUE
, de sorte que des informations sur les données de série temporelle soient renvoyées lorsque vous évaluez le modèle à l'étape suivante.
Pour créer le modèle, procédez comme suit:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter:
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;
L'exécution de la requête prend environ quatre secondes, après quoi le modèle
ga_arima_model
apparaît dans le volet Explorer. Étant donné que la requête utilise une instructionCREATE MODEL
pour créer un modèle, les résultats de la requête ne sont pas affichés.
BigQuery DataFrames
Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'ADC pour un environnement de développement local.
Évaluer les modèles candidats
SQL
Évaluez les modèles de séries temporelles à l'aide de la fonction ML.ARIMA_EVALUATE
. La fonction ML.ARIMA_EVALUATE
affiche les métriques d'évaluation de tous les modèles candidats évalués lors du processus de réglage automatique des hyperparamètres.
Pour évaluer le modèle, procédez comme suit:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter:
SELECT * FROM ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.ga_arima_model`);
Le résultat doit ressembler à ce qui suit :
BigQuery DataFrames
Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'ADC pour un environnement de développement local.
Les colonnes de sortie non_seasonal_p
, non_seasonal_d
, non_seasonal_q
et has_drift
définissent un modèle ARIMA dans le pipeline d'entraînement. Les colonnes de sortie log_likelihood
, AIC
et variance
sont pertinentes pour le processus d'ajustement du modèle ARIMA.
L'algorithme auto.ARIMA
utilise le test KPSS pour déterminer la meilleure valeur pour non_seasonal_d
, qui dans ce cas est 1
. Lorsque non_seasonal_d
est 1
, l'algorithme auto.ARIMA
entraîne 42 modèles ARIMA candidats différents en parallèle.
Dans cet exemple, les 42 modèles candidats sont valides. La sortie contient donc 42 lignes, une pour chaque modèle ARIMA candidat. Si certains des modèles ne sont pas valides, ils sont exclus de la sortie. Ces modèles candidats sont renvoyés par ordre croissant de l'AIC. Le modèle de la première ligne présente l'AIC le plus bas, et il est considéré comme le meilleur modèle. Le meilleur modèle est enregistré en tant que modèle final et est utilisé lorsque vous appelez des fonctions telles que ML.FORECAST
sur le modèle.
La colonne seasonal_periods
contient des informations sur la tendance saisonnière identifiée dans les données de la série temporelle. Il n'a rien à voir avec la modélisation ARIMA. Par conséquent, il présente la même valeur sur toutes les lignes de sortie. Il indique une tendance hebdomadaire, qui correspond aux résultats que vous avez obtenus si vous avez choisi de visualiser les données d'entrée.
Les colonnes has_holiday_effect
, has_spikes_and_dips
et has_step_changes
ne sont renseignées que lorsque decompose_time_series=TRUE
. Ces colonnes reflètent également des informations sur les données de série temporelle d'entrée et ne sont pas liées à la modélisation ARIMA. Ces colonnes ont également les mêmes valeurs pour toutes les lignes de sortie.
La colonne error_message
indique les erreurs qui se sont produites lors du processus d'ajustement auto.ARIMA
. Cela peut s'expliquer par le fait que les colonnes non_seasonal_p
, non_seasonal_d
, non_seasonal_q
et has_drift
sélectionnées ne peuvent pas stabiliser la série temporelle. Pour récupérer le message d'erreur de tous les modèles candidats, définissez l'option show_all_candidate_models
sur TRUE
lorsque vous créez le modèle.
Pour en savoir plus sur les colonnes de sortie, consultez la section Fonction ML.ARIMA_EVALUATE
.
Inspecter les coefficients du modèle
SQL
Inspectez les coefficients du modèle de série temporelle à l'aide de la fonction ML.ARIMA_COEFFICIENTS
.
Pour récupérer les coefficients du modèle, procédez comme suit:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter:
SELECT * FROM ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.ga_arima_model`);
La colonne de sortie ar_coefficients
affiche les coefficients de modèle de la partie autorégressive (AR) du modèle ARIMA. De même, la colonne de sortie ma_coefficients
affiche les coefficients de modèle de la partie moyenne mobile (MA) du modèle ARIMA. Ces deux colonnes contiennent des valeurs de tableau, dont la longueur est respectivement égale à non_seasonal_p
et non_seasonal_q
. Dans la sortie de la fonction ML.ARIMA_EVALUATE
, vous avez vu que le meilleur modèle a une valeur non_seasonal_p
de 2
et une valeur non_seasonal_q
de 3
. Par conséquent, dans la sortie ML.ARIMA_COEFFICIENTS
, la valeur ar_coefficients
est un tableau à deux éléments et la valeur ma_coefficients
est un tableau à trois éléments. La valeur intercept_or_drift
correspond au terme constant dans le modèle ARIMA.
Pour en savoir plus sur les colonnes de sortie, consultez la section Fonction ML.ARIMA_COEFFICIENTS
.
BigQuery DataFrames
Inspectez les coefficients du modèle de série temporelle à l'aide de la fonction coef_
.
Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'ADC pour un environnement de développement local.
La colonne de sortie ar_coefficients
affiche les coefficients de modèle de la partie autorégressive (AR) du modèle ARIMA. De même, la colonne de sortie ma_coefficients
affiche les coefficients de modèle de la partie moyenne mobile (MA) du modèle ARIMA. Ces deux colonnes contiennent des valeurs de tableau, dont la longueur est respectivement égale à non_seasonal_p
et non_seasonal_q
.
Utiliser le modèle pour prévoir des données
SQL
Prévoyez les valeurs futures de la série temporelle à l'aide de la fonction ML.FORECAST
.
Dans la requête GoogleSQL suivante, la clause STRUCT(30 AS horizon, 0.8 AS confidence_level)
indique que la requête prévoit 30 points temporels futurs et génère un intervalle de prédiction avec un niveau de confiance de 80 %.
Pour prévoir des données avec le modèle, procédez comme suit:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter:
SELECT * FROM ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level));
Le résultat doit ressembler à ce qui suit :
BigQuery DataFrames
Prévoyez les valeurs futures de la série temporelle à l'aide de la fonction predict
.
Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'ADC pour un environnement de développement local.
Les lignes de sortie sont triées par ordre chronologique en fonction de la valeur de la colonne forecast_timestamp
. Dans les prévisions de séries temporelles, l'intervalle de prédiction, représenté par les valeurs des colonnes prediction_interval_lower_bound
et prediction_interval_upper_bound
, est aussi important que la valeur de la colonne forecast_value
. La valeur forecast_value
correspond au point central de l'intervalle de prédiction. L'intervalle de prédiction dépend des valeurs des colonnes standard_error
et confidence_level
.
Pour en savoir plus sur les colonnes de sortie, consultez la section Fonction ML.FORECAST
.
Expliquer les résultats des prévisions
Vous pouvez obtenir des métriques d'explicabilité en plus des données de prévision à l'aide de la fonction ML.EXPLAIN_FORECAST
. La fonction ML.EXPLAIN_FORECAST
prédit les valeurs futures des séries temporelles et renvoie également tous les composants distincts de la série temporelle.
Comme la fonction ML.FORECAST
, la clause STRUCT(30 AS horizon, 0.8 AS confidence_level)
utilisée dans la fonction ML.EXPLAIN_FORECAST
indique que la requête prévoit 30 points temporels futurs et génère un intervalle de prédiction avec un indice de confiance de 80 %.
Pour expliquer les résultats du modèle, procédez comme suit:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter:
SELECT * FROM ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level));
Le résultat doit ressembler à ce qui suit :
Les lignes de sortie sont triées chronologiquement par la valeur de la colonne
time_series_timestamp
.Pour en savoir plus sur les colonnes de sortie, consultez la section Fonction
ML.EXPLAIN_FORECAST
.Si vous souhaitez visualiser les résultats, vous pouvez utiliser Looker Studio comme décrit dans la section Visualiser les données d'entrée pour créer un graphique, en utilisant les colonnes suivantes comme métriques:
time_series_data
prediction_interval_lower_bound
prediction_interval_upper_bound
trend
seasonal_period_weekly
step_changes
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
- Supprimez le projet que vous avez créé.
- Ou conservez le projet et supprimez l'ensemble de données.
Supprimer l'ensemble de données
Si vous supprimez votre projet, tous les ensembles de données et toutes les tables qui lui sont associés sont également supprimés. Si vous préférez réutiliser le projet, vous pouvez supprimer l'ensemble de données que vous avez créé dans ce tutoriel :
Si nécessaire, ouvrez la page BigQuery dans Cloud Console.
Dans le panneau de navigation, cliquez sur l'ensemble de données bqml_tutorial que vous avez créé.
Cliquez sur Delete dataset (Supprimer l'ensemble de données) dans la partie droite de la fenêtre. Cette action supprime l'ensemble de données, la table et toutes les données.
Dans la boîte de dialogue Supprimer l'ensemble de données, confirmez la commande de suppression en saisissant le nom de votre ensemble de données (
bqml_tutorial
), puis cliquez sur Supprimer.
Supprimer votre projet
Pour supprimer le projet :
- 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.
Étape suivante
- Découvrez comment prévoir une seule série temporelle avec un modèle multivarié.
- Découvrez comment prévoir plusieurs séries temporelles avec un modèle univarié.
- Découvrez comment mettre à l'échelle un modèle univarié lors de la prévision de plusieurs séries temporelles sur de nombreuses lignes.
- Découvrez comment prévoir plusieurs séries temporelles hiérarchiquement à l'aide d'un modèle univarié.
- Pour obtenir une présentation de BigQuery ML, consultez la page Présentation de l'IA et du ML dans BigQuery.