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 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 comprenant des millions d'enregistrements Google Analytics pour le Google Merchandise Store, qui sont 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 lots
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
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.
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
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.
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
Cliquez sur Ouvrir la console Google.
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.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Tâche 1 : Épingler le projet de l'atelier dans BigQuery
Cliquez sur le menu de navigation > BigQuery.
La boîte de message Bienvenue dans BigQuery dans Cloud Console s'ouvre.
La boîte de message Bienvenue dans BigQuery dans Cloud Console fournit un lien vers le guide de démarrage rapide et les mises à jour de l'interface utilisateur.
Cliquez sur Terminé.
Les ensembles de données publics BigQuery ne sont pas affichés par défaut dans l'interface utilisateur Web de BigQuery. Pour ouvrir le projet de jeux de données publics
Cliquez sur + Ajouter des données.
Sélectionnez Épingler le projet > Entrer le nom du projet.
Pour Nom du projet, saisissez data-to-insights.
Cliquez sur Épingler.
Dans le volet de gauche, sous Affichage des projets épinglés, vous verrez le projet data-to-insights épinglé.
Accéder à l'ensemble de données du cours
Après avoir ouvert BigQuery, cliquez sur le lien direct ci-dessous pour afficher le projet public data-to-insights dans votre panneau de projets BigQuery :
Les définitions des champs correspondant à l'ensemble de données d'e-commerce data-to-insights sont disponibles dans le document du schéma de BigQuery Export [UA]. Gardez-le ouvert dans un nouvel onglet pour référence.
Tâche 2 : Explorer les données d'e-commerce
Scénario : Votre équipe d'analystes de données 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 visiteur 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 ?
Ajoutez cette requête dans l'éditeur de requête :
#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
Ensuite, cliquez sur Exécuter.
Résultat : 2,69 %
Question : Quels sont les cinq produits qui se vendent le mieux ?
Ajoutez cette requête dans l'éditeur de requête, puis cliquez sur Exécuter :
#standardSQL
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;
Question : Combien d'internautes ont effectué un achat lors d'une visite ultérieure sur le site Web ?
Ajoutez cette requête dans l'éditeur de requête, puis cliquez sur Exécuter :
#standardSQL
# 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/729848) 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.
Tâche 3 : 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 avec des promotions et des campagnes publicitaires spéciales pour encourager les conversions si ces derniers comparent les offres entre deux visites sur votre site d'e-commerce.
Tâche 4 : Sélectionner des caractéristiques et créer l'ensemble de données d'entraînement
Google Analytics capture un large éventail de dimensions et de mesures concernant les visites sur ce site Web d'e-commerce. Après avoir parcouru la liste complète des champs, prévisualisez l'ensemble de données de démonstration pour identifier des caractéristiques pertinentes 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.
Ajoutez cette requête dans l'éditeur de requête :
#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)
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;
Ensuite, cliquez sur Exécuter.
Voici ce que vous obtiendrez :
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
Quels champs correspondent aux caractéristiques du modèle ? Quelle est l'étiquette (la réponse correcte) ?
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. La création d'un modèle de ML vous permet de calculer, à l'aide des données récupérées lors de la première session, la probabilité qu'un utilisateur donné effectue un achat ultérieurement.
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 premières valeurs 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.
Tâche 5 : Créer un ensemble de données BigQuery pour y stocker vos modèles
Créons maintenant un autre ensemble de données BigQuery dans lequel stocker vos modèles de ML.
Dans la console BigQuery, cliquez sur l'icône "Afficher les actions" (trois points), puis sur Créer un ensemble de données.
Dans le champ "ID de l'ensemble de données", saisissez e-commerce. Laissez les valeurs par défaut des autres options, "Emplacement des données" et "Expiration de la table par défaut".
Cliquez sur Créer un ensemble de données.
L'ensemble de données "e-commerce" s'affiche à présent sous le nom de votre projet.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un ensemble de données
Tâche 6 : 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 généralement 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 de nombreux autres types de modèles pour le machine learning (comme les réseaux de neurones et les arbres de décision). Ceux-ci sont disponibles dans 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.
Ajoutez cette requête dans l'éditeur de requête pour créer un modèle et en spécifier les options :
#standardSQL
CREATE OR REPLACE MODEL `ecommerce.classification_model`
OPTIONS
(
model_type='logistic_reg',
input_label_cols = ['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)
;
Cliquez ensuite sur Exécuter pour entraîner le modèle.
Attendez que le modèle soit entraîné (cela prend entre 5 et 10 minutes).
Remarque : Vous ne pouvez pas transmettre l'ensemble des données disponibles au modèle pendant l'entraînement, car vous devez mettre de côté des points de données encore inconnus pour évaluer et tester le modèle. C'est la raison pour laquelle vous devez ajouter une condition WHERE, de manière à filtrer les données et cibler l'entraînement sur les 9 premiers mois de données de session, et non sur l'ensemble de données complet de 12 mois.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un modèle et définir ses options
Une fois votre modèle entraîné, vous verrez apparaître un message de ce type : "Cette instruction créera un modèle nommé qwiklabs-gcp-01-00af1a3268df:ecommerce.classification_model. Selon le type de modèle, l'opération peut prendre plusieurs heures." Ce message indique que votre modèle a bien été entraîné.
Vérifiez que le modèle classification_model apparaît bien dans l'ensemble de données de votre projet.
L'étape suivante consiste à évaluer les performances du modèle à partir de nouvelles données d'évaluation.
Tâche 7 : É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 (par exemple, 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 (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 (Area under the ROC - Espace sous la courbe ROC) le plus grand possible :
Dans BQML, roc_auc désigne simplement un champ interrogeable lors de l'évaluation du modèle de ML entraîné.
Maintenant que l'entraînement est terminé, vous pouvez utiliser la fonction ML.EVALUATE pour évaluer les performances du modèle à l'aide de cette requête :
Ajoutez cette requête dans l'éditeur de requête, puis cliquez sur Exécuter :
#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, (
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 Vérifier ma progression pour valider l'objectif.
Évaluer les performances du modèle de classification
Tâche 8 : Améliorer les performances du modèle par ingénierie des 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.
Nous allons à présent créer 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 naturelle, site référent, etc.)
Catégorie d'appareil (mobile, tablette, ordinateur de bureau)
Localisation géographique (pays)
Créez le second modèle en ajoutant cette requête dans l'éditeur de requête, puis cliquez sur Exécuter :
#standardSQL
CREATE OR REPLACE MODEL `ecommerce.classification_model_2`
OPTIONS
(model_type='logistic_reg', input_label_cols = ['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,
# input_label_cols
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
);
Remarque : Ce nouveau modèle implique lui aussi un entraînement sur les neuf premiers mois de données. Il est important d'utiliser le même ensemble de données d'entraînement pour être sûr que l'amélioration des résultats est liée à la meilleure qualité des caractéristiques d'entrée, et non à l'utilisation de données nouvelles ou différentes.
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 paiement, laquelle est enregistrée dans le champ hits.eCommerceAction.action_type. Si vous recherchez ce champ dans les définitions de champs, vous constaterez qu'un mappage de 6 correspond à un achat terminé.
Par ailleurs, l'ensemble de données d'analyse d'audience Internet comprend des champs imbriqués et répétés, de type ARRAYS par exemple, qui doivent figurer sur des lignes distinctes dans l'ensemble de données. Nous utilisons pour cela la fonction UNNEST(), que vous pouvez voir dans la requête ci-dessus.
Attendez que le nouveau modèle soit entraîné (5 à 10 minutes).
Cliquez sur Vérifier ma progression pour valider l'objectif.
Améliorer les performances du modèle par ingénierie des caractéristiques (Créer le second modèle)
Évaluez les performances prédictives du nouveau modèle :
Ajoutez cette requête dans l'éditeur de requête, puis cliquez sur Exécuter :
#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,
# input_label_cols
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 Vérifier ma progression pour valider l'objectif.
Améliorer les performances du modèle par ingénierie des caractéristiques (Accroissement des performances prédictives)
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é que nous venons d'entraîner afin de calculer la probabilité qu'un nouveau visiteur du Google Merchandise Store achète un produit lors d'une visite ultérieure. Les prédictions sont établies pour le dernier mois (sur les 12 mois que compte l'ensemble de données).
Ajoutez cette requête dans l'éditeur de requête, puis cliquez sur Exécuter :
#standardSQL
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,
# input_label_cols
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;
Cliquez sur Vérifier ma progression pour valider l'objectif.
Prédire quels nouveaux visiteurs 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 %)
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 métrique 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 métrique 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 :
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.
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.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
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.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.
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.
Dans cet atelier, vous allez exécuter, sur un nouvel ensemble de données d'e-commerce, des requêtes couramment utilisées par les entreprises pour en savoir plus sur les comportements d'achat de leurs clients.
Durée :
0 min de configuration
·
Accessible pendant 75 min
·
Terminé après 60 min