Utiliser les réglages d'hyperparamètres BigQuery ML pour améliorer les performances du modèle

Ce tutoriel présente BigQuery ML aux analystes de données. BigQuery ML permet aux utilisateurs de créer et d'exécuter des modèles de machine learning dans BigQuery à l'aide de requêtes SQL. Ce tutoriel présente les réglages d'hyperparamètres en spécifiant l'option d'entraînement num_trials.

Dans ce tutoriel, vous vous appuyez sur un exemple de table tlc_yellow_trips_2018 pour créer un modèle capable de prédire le pourboire d'un trajet en taxi. Vous pouvez constater une amélioration des performances d'environ 40 % (r2_score) avec les réglages d'hyperparamètres.

Objectifs

Dans ce tutoriel, vous allez utiliser :

  • BigQuery ML pour créer un modèle de régression linéaire à l'aide de l'instruction CREATE MODEL avec l'option num_trials définie sur 20 ;
  • la fonction ML.TRIAL_INFO pour vérifier la présentation des 20 essais ;
  • la fonction ML.EVALUATE pour évaluer le modèle de ML ;
  • la fonction ML.PREDICT pour effectuer des prédictions à l'aide du modèle de ML.

Coûts

Ce tutoriel utilise des composants facturables de Google Cloud, dont :

  • BigQuery
  • BigQuery ML

Pour plus d'informations sur les coûts de BigQuery, consultez la page Tarifs de BigQuery.

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 gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. BigQuery est automatiquement activé dans les nouveaux projets. Pour activer BigQuery dans un projet préexistant, accédez à Activez l'API BigQuery.

    Activer l'API

Étape 1 : Créer un ensemble de données d'entraînement

La première étape consiste à créer un ensemble de données BigQuery afin de stocker vos données d'entraînement et votre modèle de ML. Procédez comme suit :

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

    Accéder à BigQuery

  2. Dans le panneau de navigation, sous la section Ressources, cliquez sur le nom de votre projet.

  3. Dans le panneau "Détails" situé à droite, cliquez sur Create dataset (Créer un ensemble de données).

    Créer l'ensemble de données

  4. Sur la page Create dataset (Créer un ensemble de données), procédez comme suit :

    • Dans le champ Dataset ID (ID de l'ensemble de données), saisissez bqml_tutorial.
    • Dans le champ Data location (Emplacement des données), sélectionnez United States (US) (États-Unis). Actuellement, les ensembles de données publics sont stockés dans l'emplacement multirégional US. Par souci de simplicité, placez votre ensemble de données dans le même emplacement.

      Créer une page d'ensemble de données

  5. Ne modifiez aucun autre paramètre par défaut et cliquez sur Créer un ensemble de données.

Étape 2 : Créer votre table d'entrée d'entraînement

À cette étape, vous matérialisez la table d'entrée d'entraînement avec 100 000 lignes.

  1. Affichez le schéma de la table source tlc_yellow_trips_2018.

    Schéma de la table.

  2. Créez la table de données d'entrée d'entraînement.

CREATE TABLE `bqml_tutorial.taxi_tip_input` AS
SELECT
  * EXCEPT(tip_amount), tip_amount AS label
FROM
  `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018`
WHERE
  tip_amount IS NOT NULL
LIMIT 100000

Étape 3 : Créer votre modèle

Ensuite, créez un modèle de régression linéaire avec les réglages d'hyperparamètres à l'aide de l'exemple de table tlc_yellow_trips_2018 de BigQuery. La requête SQL standard suivante permet de créer le modèle avec des réglages d'hyperparamètres.

CREATE MODEL `bqml_tutorial.hp_taxi_tip_model`
OPTIONS
  (model_type='linear_reg',
   num_trials=20,
   max_parallel_trials=2) AS
SELECT
  *
FROM
  `bqml_tutorial.taxi_tip_input`

Détails de la requête

Le modèle LINEAR_REG comporte deux hyperparamètres réglables : l1_reg et l2_reg. La requête ci-dessus utilise l'espace de recherche par défaut. Vous pouvez également spécifier explicitement l'espace de recherche :

OPTIONS
  (...
    l1_reg=hparam_range(0, 20),
    l2_reg=hparam_candidates([0, 0.1, 1, 10]))

En outre, les autres options d'entraînement de réglages des hyperparamètres utilisent également leurs valeurs par défaut :

  • hparam_tuning_algorithm : "VIZIER_DEFAULT"

  • hparam_tuning_objectives : ["r2_score"]

max_parallel_trials est défini sur 2 pour accélérer le processus de réglage. Lorsque deux essais sont en cours d'exécution, le réglage global devrait prendre environ autant de temps que l'exécution de 10 tâches d'entraînement en série au lieu de 20. Toutefois, notez que les deux essais simultanés ne peuvent pas bénéficier de leurs résultats d'entraînement respectifs.

Exécuter la requête CREATE MODEL

Pour exécuter la requête CREATE MODEL qui permet de créer et d'entraîner votre modèle, procédez comme suit :

  1. Dans Cloud Console, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête ci-dessus en SQL standard dans la zone de texte Éditeur de requête.

  3. Cliquez sur Run (Exécuter).

    L'exécution de la requête prend environ 17 minutes. Vous pouvez suivre la progression du réglage dans les détails de l'exécution sous "Étapes" :

    Progression du réglage.

Étape 4 : Obtenir des informations sur les essais

Pour afficher la présentation de tous les essais, y compris leurs hyperparamètres, objectifs, états et essais optimaux, vous pouvez utiliser la fonction ML.TRIAL_INFO. Le résultat s'affiche dans Cloud Console après l'exécution du SQL.

SELECT *
FROM
  ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`)

Vous pouvez exécuter cette requête SQL dès qu'un essai est terminé. Si le réglage est interrompu en plein milieu, tous les essais déjà terminés restent disponibles.

Étape 5 : Évaluer votre modèle

Après avoir créé votre modèle, vous pouvez obtenir les métriques d'évaluation de tous les essais à l'aide de la fonction ML.EVALUATE ou via Google Cloud Console.

Exécuter ML.EVALUATE

SELECT *
FROM
  ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`)

Ce code SQL récupère les métriques d'évaluation pour tous les essais calculés à partir des données TEST. Consultez la section Répartition des données pour voir la différence entre les objectifs ML.TRIAL_INFO et les métriques d'évaluation ML.EVALUATE.

Vous pouvez également évaluer un essai spécifique en fournissant vos propres données. Pour en savoir plus, consultez la section ML.EVALUATE.

Vérifier les métriques d'évaluation via Google Cloud Console

Vous pouvez également vérifier les métriques d'évaluation en sélectionnant l'onglet EVALUATION.

Évaluation des réglages.

Étape 6 : Utiliser votre modèle pour prédire les conseils liés au taxi

Maintenant que vous avez évalué votre modèle, l'étape suivante consiste à vous en servir pour prédire le pourboire du taxi.

La requête exécutée pour prédire le pourboire est la suivante :

SELECT
  *
FROM
  ML.PREDICT(MODEL `bqml_tutorial.hp_taxi_tip_model`,
    (
    SELECT
      *
    FROM
      `bqml_tutorial.taxi_tip_input`
    LIMIT 10))

Détails de la requête

La toute première instruction SELECT récupère toutes les colonnes, y compris la colonne predicted_label. Cette colonne est générée par la fonction ML.PREDICT. Lorsque vous utilisez la fonction ML.PREDICT, le nom de la colonne de résultats pour le modèle est predicted_label_column_name.

Par défaut, la prédiction est effectuée par rapport à l'essai optimal. Vous pouvez sélectionner un autre essai en spécifiant le paramètre trial_id.

SELECT
  *
FROM
  ML.PREDICT(MODEL `bqml_tutorial.hp_taxi_tip_model`,
    (
    SELECT
      *
    FROM
      `bqml_tutorial.taxi_tip_input`
    LIMIT
      10),
    STRUCT(3 AS trial_id))

Pour en savoir plus sur l'utilisation des fonctions de diffusion de modèles, consultez la section ML.PREDICT.

Nettoyer

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

La suppression de votre projet entraîne celle de tous les ensembles de données et de toutes les tables qui lui sont associé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 :

  1. Si nécessaire, ouvrez la page BigQuery dans Cloud Console.

    Accéder à BigQuery

  2. Dans le panneau de navigation, cliquez sur l'ensemble de données bqml_tutorial que vous avez créé.

  3. À droite de la fenêtre, cliquez sur Supprimer l'ensemble de données. Cette action supprime l'ensemble de données, la table et toutes les données.

  4. Dans la boîte de dialogue Delete dataset (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 Delete (Supprimer).

Supprimer le projet

Pour supprimer le projet :

  1. Dans Cloud Console, 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.

Étape suivante