Chargement...
Aucun résultat.

Mettez en pratique vos compétences dans la console Google Cloud

Smart Analytics, Machine Learning, and AI on Google Cloud - Français

Accédez à plus de 700 ateliers et cours

Prédire la durée des trajets à vélo avec un modèle de régression dans BQML 2.5

Atelier 1 heure universal_currency_alt 5 crédits show_chart Avancé
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

BigQuery est la base de données d'analyse NoOps, économique et entièrement gérée de Google. Avec BigQuery, vous pouvez interroger plusieurs téraoctets de données sans avoir à gérer d'infrastructure ni faire appel à un administrateur de base de données. Basé sur le langage SQL et le modèle de paiement à l'usage, BigQuery vous permet de vous concentrer sur l'analyse des données pour en dégager des informations pertinentes.

BigQuery Machine Learning est une fonctionnalité de BigQuery qui permet aux analystes de données de créer, d'entraîner et d'évaluer des modèles de machine learning en vue de prédire des résultats, et ce, avec très peu de code.

Dans cet atelier, vous allez utiliser l'ensemble de données "london_bicycles" (Vélos à Londres) pour créer un modèle de régression dans BigQuery ML et prédire la durée des trajets. Supposons que votre agence de location de vélos loue deux types de bicyclettes : des vélos robustes pour des trajets réguliers, et des vélos de route rapides, mais moins résistants. Si les locations doivent être de longue durée, vous devez disposer d'un stock de vélos de route. Pour des locations courtes, en revanche, il vous faut des vélos destinés aux déplacements quotidiens. Afin de créer un système d'optimisation des stocks de bicyclettes, nous devons prédire la durée des locations.

Objectifs

Dans cet atelier, vous allez apprendre à réaliser les opérations suivantes :

  • Interroger et explorer l'ensemble de données "london_bicycles" pour en extraire des caractéristiques
  • Créer un modèle de régression linéaire dans BigQuery ML
  • Évaluer les performances de votre modèle de machine learning
  • Extraire les pondérations du modèle

Ce dont vous avez besoin

Configurer votre environnement

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Ouvrir la console BigQuery

  1. Dans Google Cloud Console, sélectionnez le menu de navigation > BigQuery :
  2. Le message Welcome to BigQuery in the Cloud Console (Bienvenue sur BigQuery dans Cloud Console) s'affiche. Il contient un lien vers le guide de démarrage rapide et répertorie les mises à jour de l'interface utilisateur.

  3. Cliquez sur Done (OK).

Tâche 1 : Explorer les données sur les vélos pour l'ingénierie des caractéristiques

Pour résoudre un problème de machine learning, il faut commencer par le formuler, c'est-à-dire identifier les caractéristiques du modèle et son étiquette. L'objectif de notre premier modèle étant de prédire la durée d'une location en fonction de l'ensemble de données de location historiques, l'étiquette correspond à la durée de la location.

Nous pouvons par ailleurs considérer que la durée dépendra des caractéristiques suivantes : la station de location du vélo, le jour de la semaine et l'heure de la journée. Avant de créer un modèle, il peut toutefois être utile de vérifier que ces critères ont bien une incidence sur l'étiquette.

Dans le contexte d'entraînement d'un modèle de machine learning, cette opération s'appelle l'"ingénierie des caractéristiques". Il s'agit souvent de l'étape la plus importante pour créer des modèles de machine learning précis. Extraire des caractéristiques peut être beaucoup plus efficace que de déterminer l'algorithme à utiliser ou de régler les hyperparamètres. Pour extraire les bonnes caractéristiques, une connaissance approfondie des données et du domaine est nécessaire. Le processus consiste souvent en un test d'hypothèse : vous vérifiez que la caractéristique à laquelle vous pensez peut fonctionner (c'est-à-dire que ses informations sont communes avec l'étiquette), avant de l'ajouter au modèle. Si tel n'est pas le cas, vous recommencez le processus.

Impact de la station

Pour savoir si la durée de location varie en fonction de la station, examinez le résultat de la requête suivante dans Looker Studio.

  1. Dans l'ÉDITEUR DE REQUÊTE, collez la requête suivante :
SELECT start_station_name, AVG(duration) AS duration FROM `bigquery-public-data`.london_bicycles.cycle_hire GROUP BY start_station_name
  1. Cliquez sur EXÉCUTER.
  2. Cliquez sur OUVRIR DANS > Looker Studio dans la console Cloud pour BigQuery.
  3. Lorsque vous y êtes invité, sélectionnez le bouton COMMENCER.
  4. Cliquez sur le graphique affiché sur le canevas.
  5. Dans l'onglet CONFIGURER situé dans le menu de droite, configurez les paramètres comme suit :
  • Dimension : start_station_name (nom de la station de départ)
  • Métrique : duration (durée)
  • Tri : par duration (durée) dans l'ordre décroissant
  • Interaction avec le graphique : activez les options Filtrage croisé et Modifier le tri.

  1. Dans l'onglet STYLE situé dans le menu de droite, configurez les paramètres comme suit :
  • Graphique à barres : Vertical

  • Barres : 100

  • Axes : Afficher les axes

Votre graphique doit ressembler à ce qui suit :

Il apparaît clairement qu'une poignée de stations sont associées à des locations longue durée (supérieures à 3 000 secondes), mais que la grande majorité présente des durées relativement courtes. Si toutes les stations de Londres avaient été associées à de courtes durées, la station de location initiale n'aurait pas constitué une bonne caractéristique. Mais comme le montre le graphique dans notre exemple, la caractéristique "start_station_name" joue bien un rôle.

Remarque : La caractéristique "end_station_name" ne nous est pas utile, car au moment de la location du vélo, nous ne sommes pas en mesure de déterminer dans quelle station il sera rendu.

Comme nous créons un modèle de machine learning destiné à prédire les événements futurs, nous devons veiller à ne pas utiliser de colonne dont les valeurs seraient inconnues lors de la prédiction. Ce critère de temps/causalité impose des contraintes en termes de choix des caractéristiques.

Impact du jour de la semaine et de l'heure de la journée

Le processus est similaire pour les autres caractéristiques candidates. Nous pouvons vérifier si dayofweek (ou encore, hourofday) nous intéresse.

  1. Dans la fenêtre de l'éditeur de requête, collez la requête suivante :
SELECT EXTRACT(dayofweek FROM start_date) AS dayofweek, AVG(duration) AS duration FROM `bigquery-public-data`.london_bicycles.cycle_hire GROUP BY dayofweek
  1. Cliquez sur OUVRIR DANS > Looker Studio dans la console Cloud pour BigQuery.
Remarque : Si un message d'erreur système s'affiche, apportez des modifications pour visualiser les données dans Looker Studio, comme décrit dans les étapes 3 à 11.
  1. Cliquez sur la table contenant les données duration et dayofweek.

  2. Dans Configuration > Métrique, pointez sur dayofweek et cliquez sur l'icône de modification en forme de crayon.

  3. Dans le menu déroulant Format d'affichage, cliquez sur Numéro de semaine, puis sélectionnez Format de date personnalisé.

  4. Définissez la date personnalisée sur 'Day' w et cliquez sur Appliquer. Dans le graphique, le champ "dayofweek" s'étend désormais de "Day1" à "Day7".

  5. Cliquez sur le graphique affichant une erreur système.

  6. Dans Configuration > Dimension, cliquez sur Duration et sélectionnez dayofweek.

  7. Dans Configuration > Dimension, pointez sur "dayofweek" et cliquez sur l'icône de modification en forme de crayon.

  8. Dans le menu déroulant Format d'affichage, sélectionnez Format de date personnalisé et définissez la date personnalisée sur 'Day' w. Cliquez ensuite sur Appliquer.

  9. Dans Configuration > Métrique, cliquez sur dayofweek et définissez la valeur sur duration.

Le résultat pour le jour de la semaine doit ressembler à ce qui suit :

Pour l'heure de la journée, il doit ressembler à celui-ci :

Remarque : Comme pour les étapes précédentes, vous devrez peut-être modifier les propriétés de Looker Studio pour visualiser le résultat souhaité.

Les résultats montrent que la durée de location varie clairement selon le jour de la semaine et l'heure de la journée. Elle est ainsi plus longue pendant les week-ends (jours 1 et 7) que pendant la semaine. De même, la location dure plus longtemps tôt le matin et en milieu d'après-midi. En conséquence, les deux caractéristiques dayofweek et hourofday sont utiles.

Impact du nombre de vélos

Autre caractéristique potentielle : le nombre de vélos disponibles dans la station. On peut émettre l'hypothèse que les utilisateurs gardent le vélo plus longtemps lorsque la station de location de départ n'en propose qu'un nombre restreint.

  1. Dans la fenêtre de l'éditeur de requête, collez la requête suivante :
SELECT bikes_count, AVG(duration) AS duration FROM `bigquery-public-data`.london_bicycles.cycle_hire JOIN `bigquery-public-data`.london_bicycles.cycle_stations ON cycle_hire.start_station_name = cycle_stations.name GROUP BY bikes_count
  1. Visualisez vos données dans Looker Studio.

Nous constatons ici que la relation comporte du bruit et qu'elle ne dégage pas de tendance nette (en comparaison avec l'heure de la journée, par exemple). Le nombre de bicyclettes ne constitue donc pas une bonne caractéristique.

Tâche 2 : Créer un ensemble de données d'entraînement

Une fois que vous avez exploré l'ensemble de données "bicycles" et la relation entre les différentes colonnes et celle de l'étiquette, il est possible de préparer l'ensemble de données d'entraînement. Pour cela, extrayez les caractéristiques sélectionnées et l'étiquette :

SELECT duration, start_station_name, CAST(EXTRACT(dayofweek FROM start_date) AS STRING) AS dayofweek, CAST(EXTRACT(hour FROM start_date) AS STRING) AS hourofday FROM `bigquery-public-data`.london_bicycles.cycle_hire

Les colonnes de caractéristiques doivent contenir des valeurs numériques (INT64, FLOAT64, etc.) ou catégorielles (STRING). Si la caractéristique est numérique, mais qu'elle doit être considérée comme étant catégorielle, nous devons la traiter en tant que chaîne (ce qui explique pourquoi les colonnes dayofweek et hourofday, qui contiennent des entiers [1 à 7 et 0 à 23, respectivement], sont traitées comme des chaînes).

Si la préparation des données implique des transformations ou des jointures coûteuses en ressources informatiques, il peut être utile d'enregistrer les données d'entraînement préparées dans une table, afin de ne pas recommencer l'opération pendant le test. Si, bien que simples, les transformations nécessitent une requête interminable, vous pouvez les enregistrer dans une vue pour gagner du temps.

Dans le cas présent, la requête étant simple et rapide, les données ne sont pas enregistrées dans un souci de clarté.

  1. Créez un ensemble de données dans BigQuery intitulé bike_model pour contenir votre modèle. Définissez Type d'emplacement sur Multirégional et sélectionnez la région UE (plusieurs régions dans l'Union européenne) puisque les données utilisées pour l'entraînement concernent l'UE. Cliquez sur Créer un ensemble de données.

Pour entraîner le modèle de machine learning et l'enregistrer dans l'ensemble de données bike_model, nous devons appeler CREATE MODEL, dont le fonctionnement est semblable à CREATE TABLE. L'étiquette que nous tentons de prédire étant numérique, il s'agit d'un problème de régression. Vous devez donc choisir le type de modèle linear_reg dans OPTIONS.

  1. Saisissez la requête suivante dans l'éditeur de requête :
CREATE OR REPLACE MODEL bike_model.model OPTIONS (input_label_cols=['duration'], model_type='linear_reg') AS SELECT duration, start_station_name, CAST(EXTRACT(dayofweek FROM start_date) AS STRING) AS dayofweek, CAST(EXTRACT(hour FROM start_date) AS STRING) AS hourofday FROM `bigquery-public-data`.london_bicycles.cycle_hire WHERE `duration` IS NOT NULL

Notez que l'entraînement du modèle nécessite entre deux et trois minutes.

  1. Pour afficher des métriques concernant l'entraînement du modèle, saisissez la requête suivante dans la fenêtre de l'éditeur BigQuery :
SELECT * FROM ML.EVALUATE(MODEL `bike_model.model`)

L'erreur absolue moyenne est de 1 025 secondes, soit environ 17 minutes. En d'autres termes, nous devrions pouvoir prédire la durée de location des vélos avec une erreur moyenne approximative de 17 minutes.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer un ensemble de données d'entraînement

Tâche 3 : Améliorer le modèle avec l'ingénierie des caractéristiques

Combiner les jours de la semaine

Nous aurions pu représenter les caractéristiques à notre disposition de façons différentes. Par exemple, nous avons remarqué en explorant la relation entre dayofweek et duration, que les durées de location étaient plus longues pendant les week-ends qu'en semaine. Au lieu de traiter la valeur brute "dayofweek" comme une caractéristique, nous pouvons regrouper plusieurs valeurs dayofweek dans la catégorie "weekday".

  1. Créez un modèle de machine learning BigQuery avec la caractéristique Jours de semaine combinés. Pour ce faire, utilisez la requête suivante :
CREATE OR REPLACE MODEL bike_model.model_weekday OPTIONS (input_label_cols=['duration'], model_type='linear_reg') AS SELECT duration, start_station_name, IF (EXTRACT(dayofweek FROM start_date) BETWEEN 2 AND 6, 'weekday', 'weekend') AS dayofweek, CAST(EXTRACT(hour FROM start_date) AS STRING) AS hourofday FROM `bigquery-public-data`.london_bicycles.cycle_hire WHERE `duration` IS NOT NULL
  1. Pour afficher les métriques pour ce modèle, saisissez la requête suivante dans la fenêtre de l'éditeur BigQuery :
SELECT * FROM ML.EVALUATE(MODEL `bike_model.model_weekday`)

Avec ce modèle, vous obtenez une erreur absolue moyenne de 966 secondes, inférieure donc aux 1 025 secondes du modèle d'origine. Vous avez amélioré votre modèle.

Segmenter l'heure de la journée

Sur la base de la relation entre hourofday et duration, nous pouvons essayer de segmenter la variable en quatre buckets : (-inf,5), [5,10), [10,17) et [17,inf).

  1. Créez un modèle de machine learning BigQuery avec les caractéristiques Heure de la journée scindée en buckets et Jours de semaine combinés. Pour ce faire, utilisez la requête suivante :
CREATE OR REPLACE MODEL bike_model.model_bucketized OPTIONS (input_label_cols=['duration'], model_type='linear_reg') AS SELECT duration, start_station_name, IF (EXTRACT(dayofweek FROM start_date) BETWEEN 2 AND 6, 'weekday', 'weekend') AS dayofweek, ML.BUCKETIZE(EXTRACT(hour FROM start_date), [5, 10, 17]) AS hourofday FROM `bigquery-public-data`.london_bicycles.cycle_hire WHERE `duration` IS NOT NULL
  1. Pour afficher les métriques pour ce modèle, saisissez la requête suivante dans la fenêtre de l'éditeur BigQuery :
SELECT * FROM ML.EVALUATE(MODEL `bike_model.model_bucketized`)

Avec ce modèle, vous obtenez une erreur absolue moyenne de 904 secondes, inférieure donc aux 966 secondes du deuxième modèle. Vous avez donc encore amélioré votre modèle.

Cliquez sur Vérifier ma progression pour valider l'objectif. Améliorer le modèle avec l'ingénierie des caractéristiques

Tâche 4 : Faire des prédictions

Notre meilleur modèle contient plusieurs transformations de données. Et si BigQuery pouvait mémoriser les ensembles de transformations effectuées lors de l'entraînement pour les appliquer automatiquement lors de la prédiction ? Cette opération est possible, grâce à la clause TRANSFORM.

Dans notre cas, le modèle qui en résulte a juste besoin de start_station_name et de start_date pour prédire la durée (duration). Les transformations sont enregistrées et appliquées sur les données brutes fournies pour créer les caractéristiques d'entrée du modèle. En plaçant toutes les fonctions de prétraitement dans la clause TRANSFORM, les clients du modèle n'ont pas besoin de savoir quel type de prétraitement a été réalisé.

  1. Créez un modèle de machine learning BigQuery avec la clause TRANSFORM, qui intègre les caractéristiques Heure de la journée scindée en buckets et Jours de semaine combinés. Pour ce faire, utilisez la requête suivante :
CREATE OR REPLACE MODEL bike_model.model_bucketized TRANSFORM(* EXCEPT(start_date), IF (EXTRACT(dayofweek FROM start_date) BETWEEN 2 AND 6, 'weekday', 'weekend') AS dayofweek, ML.BUCKETIZE(EXTRACT(HOUR FROM start_date), [5, 10, 17]) AS hourofday ) OPTIONS (input_label_cols=['duration'], model_type='linear_reg') AS SELECT duration, start_station_name, start_date FROM `bigquery-public-data`.london_bicycles.cycle_hire WHERE `duration` IS NOT NULL
  1. En utilisant cette clause TRANSFORM, saisissez la requête suivante pour prédire la durée de location d'un vélo dans Park Lane (le résultat obtenu varie) :
SELECT * FROM ML.PREDICT(MODEL bike_model.model_bucketized, ( SELECT 'Park Lane , Hyde Park' AS start_station_name, CURRENT_TIMESTAMP() AS start_date) )

  1. Pour effectuer des prédictions par lots sur un échantillon de 100 lignes dans l'ensemble d'entraînement, utilisez la requête suivante :
SELECT * FROM ML.PREDICT(MODEL bike_model.model_bucketized, ( SELECT start_station_name, start_date FROM `bigquery-public-data`.london_bicycles.cycle_hire LIMIT 100) )

Cliquez sur Vérifier ma progression pour valider l'objectif. Faire des prédictions

Tâche 5 : Examiner les pondérations du modèle

Un modèle de régression linéaire effectue des prédictions sous la forme d'une pondération des valeurs d'entrée. Ces pondérations doivent généralement être utilisées dans un environnement de production.

  • Examinez (ou exportez) les pondérations de votre modèle à l'aide de la requête suivante :

    SELECT * FROM ML.WEIGHTS(MODEL bike_model.model_bucketized)

    Notez que les caractéristiques numériques sont associées à une seule pondération, tandis que les caractéristiques catégorielles donnent une pondération par valeur possible. Par exemple, la caractéristique "dayofweek" présente les pondérations suivantes :

    En d'autres termes, si la location intervient en semaine, la contribution de cette caractéristique par rapport à la durée prédite globale est de 1 709 secondes (les pondérations associées aux performances optimales n'étant pas uniques, vous pouvez obtenir des valeurs différentes).

    Cliquez sur Vérifier ma progression pour valider l'objectif. Examiner les pondérations du modèle

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Précédent Suivant

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
Aperçu