Premiers pas avec BigQuery ML pour les data scientists

Ce tutoriel présente BigQuery ML aux data scientists. 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. L'objectif est de démocratiser le machine learning en permettant aux utilisateurs SQL de créer des modèles à l'aide de leurs propres outils et d'accélérer le rythme de développement en leur évitant d'avoir à transférer des données.

Dans ce tutoriel, vous allez exploiter l'exemple d'ensemble de données Google Analytics pour BigQuery afin de créer un modèle capable de prévoir si un internaute effectuera une transaction. Pour en savoir plus sur le schéma de l'ensemble de données Analytics, consultez la page Schéma de BigQuery Export dans le centre d'aide de Google Analytics.

Objectifs

Dans ce tutoriel, vous allez utiliser les éléments suivants :

  • BigQuery ML pour créer un modèle de régression logistique binaire à l'aide de l'instruction CREATE MODEL
  • La fonction ML.EVALUATE pour évaluer le modèle de ML
  • La fonction ML.PREDICT pour réaliser des prédictions à l'aide du modèle de ML

Coûts

Ce tutoriel utilise des composants facturables de Cloud Platform, notamment :

  • Google BigQuery
  • BigQuery ML
  • Cloud Datalab

Des frais s'appliquent pour les opérations suivantes :

  • Stockage de votre modèle de ML et de vos données d'entraînement dans BigQuery
    • Les 10 premiers Go de stockage sont gratuits chaque mois.
  • Interrogation des données dans BigQuery
    • Le premier To est gratuit chaque mois.
    • Si vous utilisez un tarif forfaitaire, les coûts des requêtes sont inclus dans le prix mensuel forfaitaire.
  • Exécution des instructions SQL dans BigQuery ML
  • Exécution de Cloud Datalab sur une VM Compute Engine

Avant de commencer

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Select or create a GCP project.

    Go to the Manage resources page

  3. Assurez-vous que la facturation est activée pour votre projet.

    En savoir plus sur l'activation de la facturation

  4. BigQuery est automatiquement activé dans les nouveaux projets. Pour activer BigQuery dans un projet qui existe déjà, accédez à Enable the BigQuery API.

    Enable the API

Public

Il s'agit d'un tutoriel d'introduction destiné aux data scientists.

Les data scientists utilisent le langage SQL standard de BigQuery et BigQuery ML pour effectuer les opérations suivantes :

  • Explorer, analyser et visualiser des données
  • Nettoyer des ensembles de données afin de les utiliser dans des modèles statistiques
  • Créer des modèles statistiques et de ML
  • Créer, entraîner, évaluer et améliorer des algorithmes et modèles de ML
  • Explorer des données au sein d'un entrepôt de données tel que BigQuery

Les data scientists utilisent divers outils, en particulier :

  • L'outil de ligne de commande BigQuery (pour interroger des données à l'aide du langage SQL standard)
  • Un logiciel d'analyse statistique tel que RStudio ou Matlab
  • Cloud Datalab (blocs-notes Jupyter)
  • Cloud Machine Learning Engine
  • Des langages de programmation tels que Python et Java
  • Des bibliothèques de ML telles que MLlib et TensorFlow
  • Des outils de visualisation tels que Cloud Datalab et Data Studio

Dans la mesure où ce tutoriel s'adresse à des data scientists, de nombreux points relatifs aux concepts de ML ne sont pas expliqués. Pour une version plus détaillée de ce tutoriel exploitant l'UI Web de BigQuery, consultez la section Premiers pas avec BigQuery ML pour les analystes de données.

Pour obtenir une description des concepts présentés sur cette page, consultez les ressources suivantes :

Étape 1 : Configurer Cloud Datalab

Dans ce tutoriel, vous allez configurer Cloud Datalab à l'aide de Google Cloud Shell. Cloud Datalab propose un environnement de bloc-notes basé sur Jupyter qui vous permet d'utiliser BigQuery ML et BigQuery.

Avant de configurer Cloud Datalab, vous devez activer les API Compute Engine et Cloud Source Repositories. Pour en savoir plus sur l'activation de ces API, consultez la section Activer et désactiver des services.

Pour configurer Cloud Datalab sur une VM Compute Engine :

  1. Accédez à la console Cloud Platform.

    Console Cloud Platform

  2. Cliquez sur Activer Cloud Shell.

    Icône "Activer Cloud Shell"

  3. Dans la fenêtre Cloud Shell, saisissez la commande suivante, qui configure l'outil gcloud de façon à utiliser la zone us-central1-a comme zone par défaut pour le SDK Cloud. Cette zone contiendra votre instance Cloud Datalab.

    gcloud config set compute/zone us-central1-a
    
  4. Saisissez la commande suivante pour créer une VM Compute Engine (appelée mltutorial) permettant d'exécuter le conteneur Cloud Datalab. Cette commande crée également une connexion SSH à votre VM et mappe l'interface Web distante de Cloud Datalab au port 8081 de l'hôte local. Si vous y êtes invité, saisissez le numéro correspondant à votre zone par défaut Compute Engine.

    datalab create mltutorial
    

    Le message The connection to Datalab is now open and will remain until this command is killed vous indique que vous êtes connecté à l'instance. Une fois la connexion SSH établie, l'interface de ligne de commande peut ne plus afficher de résultats.

  5. Dans la fenêtre Cloud Shell, cliquez sur l'icône Aperçu sur le Web Icône "Aperçu sur le Web".

  6. Sélectionnez Modifier le port.

  7. Dans la boîte de dialogue Modifier le port d'aperçu, saisissez 8081, puis cliquez sur Modifier et prévisualiser. Cloud Datalab s'ouvre alors dans un nouvel onglet.

    gcloud compute ssh --quiet --zone "us-central1-a" --ssh-flag="-N" --ssh-flag="-L" --ssh-flag="localhost:8081:localhost:8080" "${USER}@mltutorial"
    
  8. Cliquez sur Bloc-notes pour créer un bloc-notes. Celui-ci s'ouvre dans un nouvel onglet.

  9. Dans la barre de titre, cliquez sur Bloc-notes sans titre pour modifier le nom du bloc-notes.

  10. Dans la boîte de dialogue Renommer le bloc-notes, saisissez BigQuery ML Tutorial et cliquez sur OK.

  11. Dans la première cellule de code, saisissez les informations suivantes pour mettre à jour la bibliothèque cliente Python BigQuery.

    !pip install --upgrade google-cloud-bigquery
    
  12. Cliquez sur Exécuter > Exécuter à partir de cette cellule. Les résultats de la requête apparaissent sous le bloc de code. Lorsque l'installation est terminée, le message suivant s'affiche :

    Successfully installed ...

  13. Le code affiche un certain nombre de résultats. Pour les masquer et réduire la cellule, cliquez sur le menu de la cellule et sélectionnez Réduire.

    Menu de la cellule

  14. Cliquez sur Ajouter du code pour créer une cellule de code.

  15. Saisissez le code suivant pour importer la bibliothèque cliente Python BigQuery et initialiser un client. Le client BigQuery permet d'envoyer des messages à l'API BigQuery et d'en recevoir.

    from google.cloud import bigquery
    client = bigquery.Client()
    
  16. Cliquez sur Exécuter > Exécuter à partir de cette cellule. Cette commande n'affiche aucun résultat.

Étape 2 : Créer votre ensemble de données

Vous allez maintenant créer un ensemble de données BigQuery afin de stocker votre modèle de ML. Pour créer votre ensemble de données, procédez comme suit :

  1. Cliquez sur Ajouter du code pour créer une cellule de code.

  2. Saisissez la commande suivante pour créer votre ensemble de données :

    dataset = bigquery.Dataset(client.dataset('bqml_tutorial'))
    dataset.location = 'US'
    client.create_dataset(dataset)
    
  3. Cliquez sur Exécuter > Exécuter à partir de cette cellule. Le résultat de la commande devrait ressembler à ceci :

    Dataset '[project_ID]:bqml_tutorial' successfully created.

Étape 3 : Créer votre modèle

Vous devez ensuite créer un modèle de régression logistique à l'aide de l'exemple d'ensemble de données Google Analytics pour BigQuery. Le modèle permet de prédire si un internaute effectuera une transaction. La requête en langage SQL standard crée et entraîne le modèle à l'aide d'une instruction 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. Cliquez sur Ajouter du code pour créer une cellule de code.

  2. La bibliothèque cliente Python BigQuery propose une commande magique qui vous permet d'exécuter des requêtes avec très peu de code. Pour charger les commandes magiques à partir de la bibliothèque cliente, saisissez le code suivant :

    %load_ext google.cloud.bigquery
    
  3. Cliquez sur Exécuter > Exécuter à partir de cette cellule. Cette commande n'affiche aucun résultat.

  4. Cliquez sur Ajouter du code pour créer une cellule de code.

  5. La bibliothèque cliente BigQuery propose une cellule magique, %%bigquery, qui exécute une requête SQL et renvoie les résultats sous la forme d'une structure de données Pandas. Saisissez la requête en SQL standard suivante dans la cellule : Vous n'avez pas besoin d'utiliser le préfixe #standardSQL avec la bibliothèque cliente. Le langage SQL standard est la syntaxe de requête par défaut.

    %%bigquery
    CREATE OR REPLACE MODEL `bqml_tutorial.sample_model`
    OPTIONS(model_type='logistic_reg') AS
    SELECT
      IF(totals.transactions IS NULL, 0, 1) AS label,
      IFNULL(device.operatingSystem, "") AS os,
      device.isMobile AS is_mobile,
      IFNULL(geoNetwork.country, "") AS country,
      IFNULL(totals.pageviews, 0) AS pageviews
    FROM
      `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    WHERE
      _TABLE_SUFFIX BETWEEN '20160801' AND '20170630'
    

  6. Cliquez sur Exécuter > Exécuter à partir de cette cellule.

  7. L'exécution de la requête peut prendre plusieurs minutes. À la fin de la première itération, votre modèle (sample_model) s'affiche dans le panneau de navigation de l'UI Web BigQuery. Comme la requête crée un modèle à l'aide d'une instruction CREATE MODEL, elle n'affiche aucun résultat. La sortie prend la forme d'une chaîne vide.

Étape 4 : Obtenir des statistiques d'entraînement

Pour afficher les résultats de l'entraînement du modèle, vous pouvez utiliser la fonction ML.TRAINING_INFO ou consulter les statistiques dans l'UI Web de BigQuery. Cette fonctionnalité n'est actuellement pas disponible dans l'UI Web classique de BigQuery. Dans ce tutoriel, vous allez utiliser la fonction ML.TRAINING_INFO.

Un algorithme de machine learning crée un modèle en examinant de nombreux exemples, puis en essayant de trouver un modèle qui minimise la perte. Ce processus est appelé "minimisation du risque empirique".

La perte est la pénalité relative à une mauvaise prédiction. Il s'agit d'un nombre qui indique à quel point la prédiction du modèle est fausse pour un exemple donné. Si la prédiction du modèle est parfaite, la perte est nulle. Sinon, la perte est supérieure à zéro. L'objectif de l'entraînement d'un modèle est de trouver un ensemble de pondérations présentant une faible perte pour tous les exemples (en moyenne).

Pour afficher les statistiques d'entraînement du modèle générées lors de l'exécution de la requête CREATE MODEL, procédez comme suit :

  1. Cliquez sur Ajouter du code pour créer une cellule de code.

  2. Saisissez la requête en SQL standard suivante dans la cellule :

    %%bigquery
    SELECT
      *
    FROM
      ML.TRAINING_INFO(MODEL `bqml_tutorial.sample_model`)
    

  3. Cliquez sur Exécuter > Exécuter à partir de cette cellule.

  4. Une fois la requête terminée, les résultats apparaissent sous celle-ci. Ils doivent se présenter sous la forme suivante :

    Résultat de ML.TRAINING_INFO

    La colonne loss représente la statistique de perte calculée après une itération spécifique dans l'ensemble de données d'entraînement. Comme vous avez effectué une régression logistique, cette colonne vous indique la perte logistique. La colonne eval_loss représente la même statistique de perte calculée sur l'ensemble de données exclues (données bloquées lors de l'entraînement pour valider le modèle).

    Pour en savoir plus sur la fonction ML.TRAINING_INFO, consultez la documentation de référence sur la syntaxe BigQuery ML.

Étape 5 : Évaluer votre modèle

Après avoir créé votre modèle, vous pouvez évaluer les performances du classificateur à l'aide de la fonction ML.EVALUATE. Vous pouvez également utiliser la fonction ML.ROC_CURVE pour les statistiques spécifiques à la régression logistique.

Un classificateur est un ensemble de valeurs cibles énumérées pour une étiquette. Dans ce tutoriel, vous utilisez par exemple un modèle de classification binaire qui détecte les transactions. Les deux classes sont les valeurs de la colonne label : 0 (aucune transaction) et 1 (transaction effectuée).

Pour exécuter la requête ML.EVALUATE permettant d'évaluer le modèle, procédez comme suit :

  1. Cliquez sur Ajouter du code pour créer une cellule de code.

  2. Saisissez la requête en SQL standard suivante dans la cellule :

    %%bigquery
    SELECT
      *
    FROM ML.EVALUATE(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IF(totals.transactions IS NULL, 0, 1) AS label,
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(geoNetwork.country, "") AS country,
        IFNULL(totals.pageviews, 0) AS pageviews
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
    

  3. Cliquez sur Exécuter > Exécuter à partir de cette cellule.

  4. Une fois la requête terminée, les résultats apparaissent sous celle-ci. Ils doivent se présenter sous la forme suivante :

    Résultat de ML.EVALUATE

    Étant donné que vous avez effectué une régression logistique, les résultats incluent les colonnes suivantes :

Étape 6 : Prédire des résultats à l'aide de votre modèle

Maintenant que vous avez évalué votre modèle, l'étape suivante consiste à prédire des résultats à l'aide de celui-ci. Vous allez exploiter votre modèle pour estimer le nombre de transactions effectuées par les internautes de chaque pays, et pour prédire les achats de chaque utilisateur.

Pour exécuter la requête permettant de prédire le nombre de transactions à l'aide du modèle, procédez comme suit :

  1. Cliquez sur Ajouter du code pour créer une cellule de code.

  2. Saisissez la requête en SQL standard suivante dans la cellule :

    %%bigquery
    SELECT
      country,
      SUM(predicted_label) as total_predicted_purchases
    FROM ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(totals.pageviews, 0) AS pageviews,
        IFNULL(geoNetwork.country, "") AS country
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
      GROUP BY country
      ORDER BY total_predicted_purchases DESC
      LIMIT 10
    

  3. Cliquez sur Exécuter > Exécuter à partir de cette cellule.

  4. Une fois la requête terminée, les résultats apparaissent sous celle-ci. Ils doivent se présenter sous la forme suivante. Comme l'entraînement du modèle n'est pas déterministe, vous pouvez obtenir des résultats différents.

    Premier résultat de ML.PREDICT

Dans l'exemple suivant, vous allez tenter de prédire les achats effectués par chaque utilisateur. Cette requête est identique à la précédente, à l'exception de la clause GROUP BY. La clause GROUP BY GROUP BY fullVisitorId permet de regrouper les résultats par ID de visiteur.

Pour exécuter la requête permettant de prédire les achats effectués par chaque utilisateur, procédez comme suit :

  1. Cliquez sur Ajouter du code pour créer une cellule de code.

  2. Saisissez la requête en SQL standard suivante dans la cellule :

    %%bigquery
    SELECT
      fullVisitorId,
      SUM(predicted_label) as total_predicted_purchases
    FROM ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(totals.pageviews, 0) AS pageviews,
        IFNULL(geoNetwork.country, "") AS country,
        fullVisitorId
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
      GROUP BY fullVisitorId
      ORDER BY total_predicted_purchases DESC
      LIMIT 10
    

  3. Cliquez sur Exécuter > Exécuter à partir de cette cellule.

  4. Une fois la requête terminée, les résultats apparaissent sous celle-ci. Ils doivent se présenter sous la forme suivante :

    Deuxième résultat de ML.PREDICT

Nettoyage

Afin d'éviter la facturation sur votre compte Google Cloud Platform des ressources utilisées lors de ce démarrage rapide, procédez comme suit :

  • Supprimez le projet que vous avez créé.
  • Ou conservez le projet et supprimez la VM Cloud Datalab.

Supprimer votre VM Cloud Datalab

La suppression de votre projet entraîne également celle de la VM Cloud Datalab. Si vous ne souhaitez pas supprimer le projet Cloud Platform, vous pouvez simplement supprimer la VM.

Pour supprimer la VM Cloud Datalab, procédez comme suit :

  1. Ouvrez la page "Instances de VM" dans Compute Engine.

    Accéder à la page Instances de VM

  2. Cochez l'instance mltutorial, puis cliquez sur Supprimer.

  3. Lorsque vous y êtes invité, cliquez sur Supprimer.

Supprimer votre projet

Pour supprimer le projet, procédez comme suit :

  1. In the GCP Console, go to the Projects page.

    Go to the Projects page

  2. In the project list, select the project you want to delete and click Delete project. After selecting the checkbox next to the project name, click
      Delete project
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.