arrow_back

Prédire les achats des visiteurs avec un modèle de classification dans BQML

Prédire les achats des visiteurs avec un modèle de classification dans BQML

1 heure 15 minutes Gratuit

GSP229

Google Cloud – Ateliers adaptés au rythme de chacun

Aperçu

BigQuery est la base de données d'analyse à faible coût de Google, entièrement gérée et qui ne nécessite aucune opération (NoOps). Avec BigQuery, vous pouvez interroger des 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 facturation à l'utilisation, BigQuery vous permet de vous concentrer sur l'analyse des données pour en dégager des informations pertinentes.

BigQuery dispose d'une nouvelle fonctionnalité appelée BigQuery Machine Learning (ou BQML, disponible en version bêta), 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.

Nous mettons à votre disposition un nouvel ensemble de données d'e-commerce, qui comprend des millions d'enregistrements Google Analytics relatifs au Google Merchandise Store, chargés dans BigQuery. Dans cet atelier, vous allez exécuter sur ces données des requêtes couramment utilisées par les entreprises pour en savoir plus sur les comportements d'achat de leurs clients.

Objectifs

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

  • Utiliser BigQuery pour rechercher des ensembles de données publics

  • Interroger et explorer l'ensemble de données d'e-commerce

  • Créer un ensemble de données d'entraînement et d'évaluation pour la prédiction par lot

  • Créer un modèle de classification (régression logistique) dans BQML

  • Évaluer les performances de votre modèle de machine learning

  • Prédire et classer la probabilité qu'un visiteur effectue un achat

Prérequis

Configurer votre environnement

Avant de cliquer sur le bouton Start Lab (Démarrer l'atelier)

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Start Lab (Démarrer l'atelier), indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique Qwiklabs vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.

Conditions requises

Pour réaliser cet atelier, vous devez :

  • avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
  • disposer de suffisamment de temps pour réaliser l'atelier en une fois.

Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier.

Remarque : Si vous utilisez un appareil Chrome OS, exécutez cet atelier dans une fenêtre de navigation privée.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google. L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue Se connecter. Cliquez sur Suivant.

  4. Copiez le mot de passe inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue de bienvenue. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis dans le panneau de gauche. Ne saisissez pas vos identifiants Google Cloud Skills Boost. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  5. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas aux essais offerts.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Vous pouvez afficher le menu qui contient la liste des produits et services Google Cloud en cliquant sur le menu de navigation en haut à gauche. Icône du menu de navigation

Ouvrir la console BigQuery

  1. Dans la console Google Cloud, sélectionnez le menu de navigation > BigQuery.

Le message Bienvenue sur BigQuery dans Cloud Console s'affiche. Il contient un lien vers le guide de démarrage rapide et les notes de version.

  1. Cliquez sur OK.

La console BigQuery s'ouvre.

Accéder à l'ensemble de données du cours

Une fois que BigQuery est ouvert, ouvrez le lien direct ci-dessous dans un nouvel onglet de navigation pour afficher le projet public data-to-insights dans votre panneau de projets BigQuery :

dataset-added.png

Les définitions de champ correspondant à l'ensemble de données d'e-commerce data-to-insights sont disponibles sur cette page. Gardez cette page ouverte dans un nouvel onglet pour référence.

Pour éviter toute confusion, fermez l'un des onglets de navigation BigQuery.

Remarque : Si le projet public data-to-insights n'apparaît pas dans le panneau Explorer, cliquez sur + ADD DATA -> < b>Épinglez un projet -> Entrez le nom du projet (data-to-insights) et Épinglez.

Explorer les données d'e-commerce

Scénario : Votre équipe d'analystes a exporté les journaux Google Analytics d'un site Web d'e-commerce dans BigQuery et a créé une table répertoriant toutes les données brutes relatives aux sessions des visiteurs du site afin que vous puissiez les explorer. Vous allez tenter de répondre à quelques questions à l'aide de ces données.

Question : Sur le nombre total de visiteurs de notre site Web, quel pourcentage a effectué un achat ?

Copiez et collez la requête suivante dans Query Editor (Éditeur de requête) de BigQuery :

#standardSQL
WITH visitors AS(
SELECT
COUNT(DISTINCT fullVisitorId) AS total_visitors
FROM `data-to-insights.ecommerce.web_analytics`
),
purchasers AS(
SELECT
COUNT(DISTINCT fullVisitorId) AS total_purchasers
FROM `data-to-insights.ecommerce.web_analytics`
WHERE totals.transactions IS NOT NULL
)
SELECT
  total_visitors,
  total_purchasers,
  total_purchasers / total_visitors AS conversion_rate
FROM visitors, purchasers

Cliquez sur Run (Exécuter).

Résultat : 2,69 %

Question : Quels sont les cinq produits qui se vendent le mieux ?

Cliquez sur Compose New Query (Saisir une nouvelle requête) pour effacer la requête précédente, puis ajoutez la requête suivante dans Query editor (Éditeur de requête) :

SELECT
  p.v2ProductName,
  p.v2ProductCategory,
  SUM(p.productQuantity) AS units_sold,
  ROUND(SUM(p.localProductRevenue/1000000),2) AS revenue
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h,
UNNEST(h.product) AS p
GROUP BY 1, 2
ORDER BY revenue DESC
LIMIT 5;

Cliquez sur Run (Exécuter).

Vous obtenez le résultat suivant :

Ligne

v2ProductName

v2ProductCategory

units_sold

revenue

1

Nest® Learning Thermostat 3rd Gen-USA - Stainless Steel

Nest-USA

17651

870976.95

2

Nest® Cam Outdoor Security Camera - USA

Nest-USA

16930

684034.55

3

Nest® Cam Indoor Security Camera - USA

Nest-USA

14155

548104.47

4

Nest® Protect Smoke + CO White Wired Alarm-USA

Nest-USA

6394

178937.6

5

Nest® Protect Smoke + CO White Battery Alarm-USA

Nest-USA

6340

178572.4

Question : Combien d'internautes ont effectué un achat lors d'une visite ultérieure sur le site Web ?

Exécutez la requête suivante pour le savoir :

# visitors who bought on a return visit (could have bought on first as well
WITH all_visitor_stats AS (
SELECT
  fullvisitorid, # 741,721 unique visitors
  IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
  FROM `data-to-insights.ecommerce.web_analytics`
  GROUP BY fullvisitorid
)
SELECT
  COUNT(DISTINCT fullvisitorid) AS total_visitors,
  will_buy_on_return_visit
FROM all_visitor_stats
GROUP BY will_buy_on_return_visit

Résultats :

Ligne

total_visitors

will_buy_on_return_visit

1

729848

0

2

11873

1

L'analyse des résultats indique que 1,6 % (11873/741721) du nombre total de visiteurs revient sur le site Web et effectue un achat. Cela inclut le sous-ensemble de visiteurs qui ont effectué un achat lors de leur première session et lors d'une visite ultérieure.

Question : Pour quelles raisons un client lambda parcourt-il un site Web d'e-commerce, mais n'effectue un achat que lors d'une visite ultérieure ?

Réponse : Il n'y a pas de réponse unique à cette question, mais l'une des raisons souvent avancées est que les visiteurs comparent les offres sur différents sites d'e-commerce avant de prendre une décision d'achat. Cette pratique, très courante pour les achats de produits de luxe qui requièrent de nombreuses recherches et comparaisons préalables (achat d'une voiture, par exemple), s'applique aussi dans une moindre mesure à ce site de produits promotionnels (t-shirts, accessoires, etc.).

Dans l'univers du marketing en ligne, il est important d'identifier ces prospects et de tenir compte des caractéristiques de leur première visite pour augmenter les taux de conversion et limiter la fuite de clients potentiels vers des sites concurrents.

Identifier un objectif

Vous allez maintenant créer un modèle de machine learning dans BigQuery pour déterminer si un nouveau visiteur est susceptible d'effectuer un achat ultérieurement. Cette information peut aider votre équipe marketing à cibler les prospects intéressants dans le cadre de promotions et de campagnes publicitaires spécifiques qui favoriseront une conversion si ces derniers comparent les offres entre deux visites sur votre site d'e-commerce.

Sélectionner des caractéristiques et créer l'ensemble de données d'entraînement

Google Analytics capture un large éventail de variables et de mesures concernant les visites sur ce site Web d'e-commerce. Après avoir parcouru la liste complète des champs sur cette page, prévisualisez l'ensemble de données de démonstration pour identifier les caractéristiques qui permettront à un modèle de machine learning d'établir une relation entre les données collectées lors de la première visite d'un internaute sur votre site Web et la probabilité qu'il y revienne pour effectuer un achat.

Votre équipe veut déterminer si les deux champs suivants conviendront pour votre modèle de classification :

  • totals.bounces (visiteur qui quitte le site Web immédiatement)
  • totals.timeOnSite (durée de la visite de l'internaute sur le site Web)

Question : Quels risques prendrions-nous en utilisant uniquement les champs ci-dessus ?

Réponse : Les résultats du machine learning dépendent des données qui lui sont fournies. Si le modèle ne dispose pas de données suffisantes pour déterminer et apprendre la relation entre vos caractéristiques d'entrée et votre étiquette (dans ce cas, si le visiteur a acheté un produit ultérieurement), il fournira des informations imprécises. Vous pouvez bien entendu commencer à entraîner un modèle avec ces deux champs et voir ensuite s'ils permettent de produire un modèle efficace.

Dans Query editor (Éditeur de requête), saisissez la requête suivante :

SELECT
  * EXCEPT(fullVisitorId)
FROM
  # features
  (SELECT
    fullVisitorId,
    IFNULL(totals.bounces, 0) AS bounces,
    IFNULL(totals.timeOnSite, 0) AS time_on_site
  FROM
    `data-to-insights.ecommerce.web_analytics`
  WHERE
    totals.newVisits = 1)
  JOIN
  (SELECT
    fullvisitorid,
    IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
  FROM
      `data-to-insights.ecommerce.web_analytics`
  GROUP BY fullvisitorid)
  USING (fullVisitorId)
ORDER BY time_on_site DESC
LIMIT 10;

Résultats :

Ligne

bounces

time_on_site

will_buy_on_return_visit

1

0

15047

0

2

0

12136

0

3

0

11201

0

4

0

10046

0

5

0

9974

0

6

0

9564

0

7

0

9520

0

8

0

9275

1

9

0

9138

0

10

0

8872

0

Question : Quels champs correspondent aux caractéristiques saisies et à l'étiquette ?

Réponse : Les entrées sont bounces (rebonds) et time_on_site (temps passé sur le site). L'étiquette est will_buy_on_return_visit (achètera lors d'une visite ultérieure).

Question : Quels sont les deux champs dont on connaît la valeur après la première session d'un visiteur ?

Réponse : Les valeurs des champs bounces et time_on_site sont disponibles après la première session d'un visiteur.

Question : Quel champ ne sera connu qu'à une date ultérieure ?

Réponse : La valeur de will_buy_on_return_visit n'est pas disponible après la première visite. Rappelez-vous que votre prédiction est basée sur un sous-ensemble d'utilisateurs qui sont revenus sur votre site Web pour effectuer un achat. Sachant que, au moment de la prédiction, vous ne savez pas ce que l'avenir vous réserve, vous ne pouvez pas affirmer qu'un nouveau visiteur reviendra sur le site et effectuera un achat. L'intérêt d'un modèle de ML est d'obtenir une probabilité concernant les achats futurs en fonction des données collectées lors de la première session du visiteur.

Question : Compte tenu des premiers résultats fournis par les données, pensez-vous que time_on_site et bounces sont de bons indicateurs pour déterminer si un utilisateur reviendra pour effectuer un achat ?

Réponse : Il faut généralement attendre que le modèle soit entraîné et évalué pour se prononcer. Cependant, on peut déjà voir à partir des 10 premiers time_on_site qu'un seul client est revenu pour effectuer un achat, ce qui n'est pas très prometteur. Examinons à présent la qualité du modèle.

Créer un ensemble de données BigQuery pour y stocker vos modèles

Créez ensuite un autre ensemble de données BigQuery dans lequel stocker vos modèles de ML.

  1. Dans le panneau gauche, cliquez sur le nom de votre projet (commençant par qwiklabs-gcp-...), puis sur Create Dataset (Créer un ensemble de données).

Create_Dataset1.png

  1. Dans la boîte de dialogue Create Dataset (Créer un ensemble de données) :

  • Dans le champ Dataset ID (ID de l'ensemble de données), saisissez "ecommerce".
  • Conservez les valeurs par défaut dans les autres champs.

dataset_name1.png

  1. Cliquez sur Create dataset (Créer un ensemble de données).

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier l'objectif.

Créer un ensemble de données

Sélectionner un type de modèle BQML et définir les options correspondantes

Maintenant que vous avez sélectionné les caractéristiques de base, vous pouvez créer votre premier modèle de ML dans BigQuery.

Vous avez le choix entre deux types de modèles :

Modèle

Type de modèle

Type de données de l'étiquette

Exemple

Prévision

linear_reg (régression linéaire)

Valeur numérique (nombre entier ou à virgule flottante)

Prévisions de ventes pour l'année prochaine d'après l'historique des données de ventes

Classification

logistic_reg (régression logistique)

0 ou 1 (classification binaire)

Classification ou non d'un e-mail dans la catégorie spam selon le contexte

Remarque : Il existe une multitude de types de modèles pour le machine learning (comme les réseaux de neurones et les arbres de décision) associés à des bibliothèques telles que TensorFlow. Au moment de la rédaction de cet article, BQML n'acceptait que les deux types mentionnés ci-dessus.

Quel type de modèle choisir ?

Puisque vous procédez au binning des visiteurs dans deux catégories ("achètera ultérieurement" et "n'achètera pas ultérieurement"), utilisez la régression logistique logistic_reg dans un modèle de classification.

La requête suivante permet de créer un modèle et d'en spécifier les options. Exécutez-la pour entraîner votre modèle :

CREATE OR REPLACE MODEL `ecommerce.classification_model`
OPTIONS
(
model_type='logistic_reg',
labels = ['will_buy_on_return_visit']
)
AS
#standardSQL
SELECT
  * EXCEPT(fullVisitorId)
FROM
  # features
  (SELECT
    fullVisitorId,
    IFNULL(totals.bounces, 0) AS bounces,
    IFNULL(totals.timeOnSite, 0) AS time_on_site
  FROM
    `data-to-insights.ecommerce.web_analytics`
  WHERE
    totals.newVisits = 1
    AND date BETWEEN '20160801' AND '20170430') # train on first 9 months
  JOIN
  (SELECT
    fullvisitorid,
    IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
  FROM
      `data-to-insights.ecommerce.web_analytics`
  GROUP BY fullvisitorid)
  USING (fullVisitorId)
;

Attendez que le modèle soit entraîné (5 à 10 minutes).

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier l'objectif.

Créer un modèle et définir ses options

Une fois le modèle entraîné, le message suivant s'affiche : "This statement created a new model named qwiklabs-gcp-xxxxxxxxx:ecommerce.classification_model" (Cette instruction a créé un modèle nommé qwiklabs-gcp-xxxxxxxxx:ecommerce.classification_model).

Cliquez sur Go to model (Accéder au modèle).

Vérifiez que le modèle classification_model apparaît bien dans l'ensemble de données e-commerce.

Classification_model1.png

L'étape suivante consiste à évaluer les performances du modèle à partir de nouvelles données d'évaluation.

Évaluer les performances du modèle de classification

Sélectionner vos critères de performances

Pour limiter les problèmes de classification en ML, il convient de réduire au minimum le taux de faux positifs (fait de prédire le retour d'un utilisateur et un achat, et que cela ne se produise pas) et d'obtenir un taux de vrais positifs maximal (fait de prédire le retour d'un utilisateur et un achat, et que cela se produise).

Cette relation est représentée par une courbe ROC (receiver operating characteristic) telle qu'illustrée ci-dessous, l'objectif étant d'avoir un AUC (espace sous la courbe ROC) le plus grand possible :

42fc12b6077e4784.png

Dans BQML, roc_auc désigne simplement un champ interrogeable lors de l'évaluation du modèle de ML entraîné.

Une fois l'entraînement terminé, exécutez cette requête avec la fonction ML.EVALUATE pour évaluer les performances du modèle :

SELECT
  roc_auc,
  CASE
    WHEN roc_auc > .9 THEN 'good'
    WHEN roc_auc > .8 THEN 'fair'
    WHEN roc_auc > .7 THEN 'decent'
    WHEN roc_auc > .6 THEN 'not great'
  ELSE 'poor' END AS model_quality
FROM
  ML.EVALUATE(MODEL ecommerce.classification_model,  (
SELECT
  * EXCEPT(fullVisitorId)
FROM
  # features
  (SELECT
    fullVisitorId,
    IFNULL(totals.bounces, 0) AS bounces,
    IFNULL(totals.timeOnSite, 0) AS time_on_site
  FROM
    `data-to-insights.ecommerce.web_analytics`
  WHERE
    totals.newVisits = 1
    AND date BETWEEN '20170501' AND '20170630') # eval on 2 months
  JOIN
  (SELECT
    fullvisitorid,
    IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
  FROM
      `data-to-insights.ecommerce.web_analytics`
  GROUP BY fullvisitorid)
  USING (fullVisitorId)
));

Vous devriez obtenir le résultat suivant :

Ligne

roc_auc

model_quality

1

0.724588

decent

L'évaluation de votre modèle indique un roc_auc de 0,72, correspondant à des performances prédictives correctes, mais largement améliorables. Le but étant d'obtenir un espace sous la courbe le plus proche possible de 1, vous avez une marge de progression.

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier l'objectif.

Évaluer les performances du modèle de classification

Améliorer les performances du modèle par extraction de caractéristiques

Comme indiqué précédemment, l'ensemble de données renferme de nombreuses autres caractéristiques susceptibles d'aider le modèle à mieux comprendre la relation entre la première session d'un visiteur et la probabilité qu'il effectue un achat lors d'une visite ultérieure.

Créez un second modèle de machine learning nommé classification_model_2 comprenant les caractéristiques supplémentaires suivantes :

  • Étape du processus de règlement à laquelle le visiteur s'est arrêté
  • Provenance du visiteur (source du trafic : recherche organique, site référent, etc.)
  • Catégorie d'appareil (mobile, tablette, ordinateur de bureau)
  • Localisation géographique (pays)

Pour créer ce second modèle, exécutez la requête ci-dessous :

CREATE OR REPLACE MODEL `ecommerce.classification_model_2`
OPTIONS
  (model_type='logistic_reg', labels = ['will_buy_on_return_visit']) AS
WITH all_visitor_stats AS (
SELECT
  fullvisitorid,
  IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
  FROM `data-to-insights.ecommerce.web_analytics`
  GROUP BY fullvisitorid
)
# add in new features
SELECT * EXCEPT(unique_session_id) FROM (
  SELECT
      CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id,
      # labels
      will_buy_on_return_visit,
      MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
      # behavior on the site
      IFNULL(totals.bounces, 0) AS bounces,
      IFNULL(totals.timeOnSite, 0) AS time_on_site,
      IFNULL(totals.pageviews, 0) AS pageviews,
      # where the visitor came from
      trafficSource.source,
      trafficSource.medium,
      channelGrouping,
      # mobile or desktop
      device.deviceCategory,
      # geographic
      IFNULL(geoNetwork.country, "") AS country
  FROM `data-to-insights.ecommerce.web_analytics`,
     UNNEST(hits) AS h
    JOIN all_visitor_stats USING(fullvisitorid)
  WHERE 1=1
    # only predict for new visits
    AND totals.newVisits = 1
    AND date BETWEEN '20160801' AND '20170430' # train 9 months
  GROUP BY
  unique_session_id,
  will_buy_on_return_visit,
  bounces,
  time_on_site,
  totals.pageviews,
  trafficSource.source,
  trafficSource.medium,
  channelGrouping,
  device.deviceCategory,
  country
);

Parmi les caractéristiques ajoutées à l'ensemble de données d'entraînement, l'une des plus intéressantes est la progression de chaque visiteur dans le processus de règlement, laquelle est enregistrée dans le champ hits.eCommerceAction.action_type. Si vous recherchez ce dernier dans les définitions de champs, vous constaterez qu'un mappage de 6 correspond à un achat terminé.

Attendez que le nouveau modèle soit entraîné (5 à 10 minutes).

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier l'objectif.

Améliorer les performances du modèle par extraction de caractéristiques (Créer le second modèle)

Évaluez les performances prédictives du nouveau modèle :

#standardSQL
SELECT
  roc_auc,
  CASE
    WHEN roc_auc > .9 THEN 'good'
    WHEN roc_auc > .8 THEN 'fair'
    WHEN roc_auc > .7 THEN 'decent'
    WHEN roc_auc > .6 THEN 'not great'
  ELSE 'poor' END AS model_quality
FROM
  ML.EVALUATE(MODEL ecommerce.classification_model_2,  (
WITH all_visitor_stats AS (
SELECT
  fullvisitorid,
  IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
  FROM `data-to-insights.ecommerce.web_analytics`
  GROUP BY fullvisitorid
)
# add in new features
SELECT * EXCEPT(unique_session_id) FROM (
  SELECT
      CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id,
      # labels
      will_buy_on_return_visit,
      MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
      # behavior on the site
      IFNULL(totals.bounces, 0) AS bounces,
      IFNULL(totals.timeOnSite, 0) AS time_on_site,
      totals.pageviews,
      # where the visitor came from
      trafficSource.source,
      trafficSource.medium,
      channelGrouping,
      # mobile or desktop
      device.deviceCategory,
      # geographic
      IFNULL(geoNetwork.country, "") AS country
  FROM `data-to-insights.ecommerce.web_analytics`,
     UNNEST(hits) AS h
    JOIN all_visitor_stats USING(fullvisitorid)
  WHERE 1=1
    # only predict for new visits
    AND totals.newVisits = 1
    AND date BETWEEN '20170501' AND '20170630' # eval 2 months
  GROUP BY
  unique_session_id,
  will_buy_on_return_visit,
  bounces,
  time_on_site,
  totals.pageviews,
  trafficSource.source,
  trafficSource.medium,
  channelGrouping,
  device.deviceCategory,
  country
)
));

(Résultat)

Ligne

roc_auc

model_quality

1

0.910382

good

Avec ce nouveau modèle, vous obtenez un roc_auc de 0,91, soit des performances bien meilleures qu'avec le premier modèle.

Maintenant que vous disposez d'un modèle entraîné, il est temps de passer aux prédictions.

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier l'objectif.

Améliorer les performances du modèle par extraction de caractéristiques (Accroissement des performances prédictives)

Identifier les nouveaux visiteurs qui reviendront effectuer un achat

Vous allez à présent élaborer une requête permettant de prédire quels nouveaux visiteurs reviendront pour effectuer un achat.

La requête de prédiction ci-dessous met en œuvre le modèle de classification amélioré afin de calculer la probabilité qu'un nouveau visiteur du Google Merchandise Store achète un produit lors d'une visite ultérieure :

SELECT
*
FROM
  ml.PREDICT(MODEL `ecommerce.classification_model_2`,
   (
WITH all_visitor_stats AS (
SELECT
  fullvisitorid,
  IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
  FROM `data-to-insights.ecommerce.web_analytics`
  GROUP BY fullvisitorid
)
  SELECT
      CONCAT(fullvisitorid, '-',CAST(visitId AS STRING)) AS unique_session_id,
      # labels
      will_buy_on_return_visit,
      MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
      # behavior on the site
      IFNULL(totals.bounces, 0) AS bounces,
      IFNULL(totals.timeOnSite, 0) AS time_on_site,
      totals.pageviews,
      # where the visitor came from
      trafficSource.source,
      trafficSource.medium,
      channelGrouping,
      # mobile or desktop
      device.deviceCategory,
      # geographic
      IFNULL(geoNetwork.country, "") AS country
  FROM `data-to-insights.ecommerce.web_analytics`,
     UNNEST(hits) AS h
    JOIN all_visitor_stats USING(fullvisitorid)
  WHERE
    # only predict for new visits
    totals.newVisits = 1
    AND date BETWEEN '20170701' AND '20170801' # test 1 month
  GROUP BY
  unique_session_id,
  will_buy_on_return_visit,
  bounces,
  time_on_site,
  totals.pageviews,
  trafficSource.source,
  trafficSource.medium,
  channelGrouping,
  device.deviceCategory,
  country
)
)
ORDER BY
  predicted_will_buy_on_return_visit DESC;

Les prédictions sont établies pour le dernier mois (sur les 12 mois que compte l'ensemble de données).

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier l'objectif.

Identifier les nouveaux visiteurs qui reviendront effectuer un achat

Le modèle va maintenant fournir des prédictions pour les sessions d'e-commerce de juillet 2017. Comme vous le voyez, trois champs ont été ajoutés :

  • predicted_will_buy_on_return_visit : indique si le modèle pense que le visiteur achètera un produit ultérieurement (1 = oui)
  • predicted_will_buy_on_return_visit_probs.label : classificateur binaire pour oui/non
  • predicted_will_buy_on_return_visit.prob : taux de confiance du modèle dans sa prédiction (1 = 100 %)

710c0c0b9abf827b.png

Résultats

  • Sur les premiers 6 % de nouveaux visiteurs (classés par ordre décroissant de probabilité), plus de 6 % effectuent un achat lors d'une visite ultérieure.

  • Ces utilisateurs représentent près de 50 % de tous les nouveaux visiteurs effectuant un achat lors d'une visite ultérieure.

  • Globalement, 0,7 % seulement des nouveaux visiteurs effectuent un achat lors d'une visite ultérieure.

  • Le ciblage des premiers 6 % de nouveaux visiteurs (plutôt que de l'ensemble de ces derniers) permet de dégager un ROI marketing neuf fois supérieur.

Informations supplémentaires

Conseil : Si vous relancez l'entraînement d'un modèle existant avec de nouvelles données, gagnez du temps en ajoutant warm_start = true à ses options. Par contre, il est impossible de modifier les colonnes de caractéristiques. Cette opération nécessiterait un nouveau modèle.

roc_auc est une statistique de performances parmi d'autres pour évaluer des modèles. Il en existe d'autres, telles que la justesse, la précision et le rappel. Le choix de la statistique adéquate dépend principalement de l'objectif global que vous vous êtes fixé.

Autres ensembles de données à explorer

Cliquez sur le lien ci-dessous pour accéder au projet bigquery-public-data et découvrir la modélisation d'autres ensembles de données, par exemple pour prédire le tarif d'une course en taxi :

Tester vos connaissances

Testez vos connaissances sur Google Cloud Platform en répondant à notre quiz.

Félicitations !

Vous venez de créer un modèle de ML dans BigQuery pour classifier les visiteurs d'un site d'e-commerce.

data_engg_quest_icon.png BigQueryBasicsforMachineLearning-125x135.png

Terminer votre quête

Cet atelier d'auto-formation fait partie des quêtes Qwiklabs Data Engineering et BigQuery for Machine Learning. Une quête est une série d'ateliers associés qui constituent une formation. Si vous terminez une quête, vous obtenez un badge attestant de votre réussite. Vous pouvez rendre publics vos badges, et les associer à votre CV en ligne ou à vos comptes de réseaux sociaux. Inscrivez-vous à l'une de ces deux quêtes pour obtenir immédiatement les crédits associés à cet atelier si vous l'avez suivi. Découvrez les autres quêtes Qwiklabs disponibles.

Étapes suivantes et informations supplémentaires

Google Cloud Training & Certification

...helps you make the most of Google Cloud technologies. Our classes include technical skills and best practices to help you get up to speed quickly and continue your learning journey. We offer fundamental to advanced level training, with on-demand, live, and virtual options to suit your busy schedule. Certifications help you validate and prove your skill and expertise in Google Cloud technologies.

Dernière mise à jour du manuel : 28 avril 2022
Dernier test de l'atelier : 28 avril 2022

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.