Prévoir une ou plusieurs séries temporelles avec un modèle univarié TimesFM

Ce tutoriel explique comment effectuer des prévisions univariées sur une ou plusieurs séries temporelles à l'aide de la fonction AI.FORECAST avec le modèle univarié TimesFM intégré à BigQuery.

Ce tutoriel utilise les données de la table publique bigquery-public-data.san_francisco_bikeshare.bikeshare_trips.

Objectifs

  • Effectuez des prévisions univariées et visualisez les résultats pour une seule série temporelle.
  • Effectuez des prévisions univariées et visualisez les résultats pour plusieurs séries temporelles.

Coûts

Ce tutoriel utilise des composants facturables de Google Cloud, y compris les suivants :

  • BigQuery
  • BigQuery ML

Pour en savoir plus, consultez les pages Tarifs de BigQuery et Tarifs de BigQuery ML.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Activez l'API BigQuery si elle ne l'est pas déjà.

    Rôles requis pour activer les API

    Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer l'API

    Pour les nouveaux projets, l'API BigQuery est automatiquement activée.

Rôles requis

Pour obtenir les autorisations nécessaires pour effectuer les tâches de ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour effectuer les tâches décrites dans ce tutoriel. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour effectuer les tâches décrites dans ce tutoriel :

  • Créez l'ensemble de données : bigquery.datasets.create
  • Créez le modèle :
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • Exécutez l'inférence :
    • bigquery.models.getData
    • bigquery.jobs.create

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Pour plus d'informations sur les rôles et les autorisations IAM dans BigQuery, consultez la page Présentation d'IAM.

Prévoir une seule série temporelle de trajets à vélo en libre-service

Prévoyez les valeurs futures des séries temporelles à l'aide de la fonction AI.FORECAST.

La requête suivante prévoit le nombre de trajets en vélos en libre-service des abonnés par heure pour le mois prochain (environ 720 heures), en fonction des données historiques des quatre mois précédents. L'argument confidence_level indique que la requête génère un intervalle de prédiction avec un niveau de confiance de 95 %.

Pour prévoir des données avec le modèle TimesFM :

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter :

    SELECT *
    FROM
      AI.FORECAST(
        (
          SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, COUNT(*) as num_trips
    FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
    WHERE subscriber_type = 'Subscriber' AND start_date >= TIMESTAMP('2018-01-01')
    GROUP BY TIMESTAMP_TRUNC(start_date, HOUR)
        ),
        horizon => 720,
        confidence_level => 0.95,
        timestamp_col => 'trip_hour',
        data_col => 'num_trips');

    Les résultats ressemblent à ce qui suit :

    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | forecast_timestamp      | forecast_value    | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound | ai_forecast_status |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | 2018-05-01 00:00:00 UTC | 26.3045959...     |            0.95  | 21.7088378...                   | 30.9003540...                   |                    |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | 2018-05-01 01:00:00 UTC | 34.0890502...     |            0.95  | 2.47682913...                   | 65.7012714...                   |                    |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | 2018-05-01 02:00:00 UTC | 24.2154693...     |            0.95  | 2.87621605...                   | 45.5547226...                   |                    |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | ...                     | ...               |  ...             | ...                             |  ...                            |                    |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    

Comparer les données prévisionnelles aux données d'entrée

Représentez la sortie de la fonction AI.FORECAST à côté d'un sous-ensemble des données d'entrée de la fonction pour voir comment elles se comparent.

Pour représenter graphiquement la sortie de la fonction, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter :

    SELECT *
    FROM
      AI.FORECAST(
        (
          SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, COUNT(*) as num_trips
          FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
          WHERE subscriber_type = 'Subscriber' AND start_date >= TIMESTAMP('2018-01-01')
          GROUP BY TIMESTAMP_TRUNC(start_date, HOUR)
        ),
        horizon => 720,
        confidence_level => 0.95,
        timestamp_col => 'trip_hour',
        data_col => 'num_trips',
        output_historical_time_series => true);
  3. Une fois la requête exécutée, cliquez sur l'onglet Visualisation dans le volet Résultats de la requête. Pour Type de visualisation, sélectionnez Courbe. Pour Dimension, sélectionnez time_series_timestamp. Pour Mesures, sélectionnez time_series_data, prediction_interval_lower_bound et prediction_interval_upper_bound. Le graphique obtenu ressemble à ceci :

    Représentez graphiquement 100 points temporels de données d'entrée ainsi que les données de sortie de la fonction AI.FORECAST pour évaluer leur similarité.

    Vous pouvez constater que les données d'entrée et les données prévisionnelles montrent une utilisation similaire des vélos en libre-service. Vous pouvez également constater que les limites inférieure et supérieure de l'intervalle de prédiction augmentent à mesure que les points temporels prévus s'éloignent dans le futur.

Prévoir plusieurs séries temporelles de trajets à vélo en libre-service

La requête suivante prévoit le nombre de trajets à vélo en libre-service par type d'abonné et par heure pour le mois prochain (environ 720 heures), en fonction des données historiques des quatre mois précédents. L'argument confidence_level indique que la requête génère un intervalle de prédiction avec un niveau de confiance de 95 %.

Pour prévoir des données avec le modèle TimesFM :

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, collez la requête suivante, puis cliquez sur Exécuter :

    SELECT *
    FROM
      AI.FORECAST(
        (
          SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, subscriber_type, COUNT(*) as num_trips
          FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
          WHERE start_date >= TIMESTAMP('2018-01-01')
          GROUP BY TIMESTAMP_TRUNC(start_date, HOUR), subscriber_type
        ),
        horizon => 720,
        confidence_level => 0.95,
        timestamp_col => 'trip_hour',
        data_col => 'num_trips',
        id_cols => ['subscriber_type']);

    Les résultats ressemblent à ce qui suit :

    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | subscriber_type     | forecast_timestamp       | forecast_value   | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound | ai_forecast_status |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | Subscriber          | 2018-05-01 00:00:00 UTC  | 26.3045959...    |            0.95  | 21.7088378...                   | 30.9003540...                   |                    |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | Subscriber          |  2018-05-01 01:00:00 UTC | 34.0890502...    |            0.95  | 2.47682913...                   | 65.7012714...                   |                    |
    +---------------------+-------------------+------------------+-------------------------+---------------------------------+---------------------------------+--------------------+
    | Subscriber          |  2018-05-01 02:00:00 UTC | 24.2154693...    |            0.95  | 2.87621605...                   | 45.5547226...                   |                    |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | ...                 | ...                      |  ...             | ...              | ...                             |  ...                            |                    |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.

Supprimer votre projet

  1. Dans la console Google Cloud , accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étapes suivantes