Découvrez comment créer un système permettant de prédire les tendances d'achat des clients à l'aide de BigQuery ML et d'AI Platform.
Vous pouvez utiliser un système de tendances d'achat pour identifier les clients les plus susceptibles d'effectuer un achat, afin de personnaliser les communications avec eux. Les prédictions en ligne vous permettent d'effectuer des actions en temps réel en fonction du comportement des utilisateurs sur votre site Web, tandis que les prédictions par lot vous permettent d'envoyer les communications moins urgentes telles que les e-mails.
Ce tutoriel vous explique comment créer un modèle de régression logistique pour déterminer si un client va effectuer un achat. Ce type de modèle permet de déterminer efficacement la probabilité d'un résultat. Le modèle évalue les métriques qui reflètent le comportement des clients sur un site Web, et leur attribue une probabilité de valeur d'achats comprise entre 0 et 1 en fonction de ces données. Le modèle définit ensuite une étiquette indiquant qu'un client est "susceptible d'effectuer un achat" si la probabilité est supérieure à 0,5.
Ce tutoriel utilise l'exemple d'ensemble de données Google Analytics et l'ensemble de données d'e-commerce pour entraîner le modèle. Tous deux sont hébergés publiquement sur BigQuery. Ces ensembles de données offrent 12 mois (août 2016 à août 2017) de données Analytics 360 masquées provenant du Google Merchandise Store, un magasin d'e-commerce qui vend des produits Google.
Pour appliquer les leçons de ce tutoriel à un cas d'utilisation en production, vous pouvez utiliser vos propres données Analytics 360 ou celles provenant d'un système similaire qui vous donne accès à des métriques sur le comportement des clients sur votre site Web.
Objectifs
La solution implique les étapes suivantes :
- Traiter des exemples de données dans un format adapté à l'entraînement du modèle
- Créer, entraîner et déployer le modèle dans BigQuery
- Évaluer le modèle pour analyser ses performances
- Utiliser le modèle entraîné déployé dans BigQuery pour obtenir des prédictions par lot
- Déployer le modèle entraîné sur AI Platform
- Utiliser le modèle entraîné déployé dans AI Platform pour obtenir des prédictions en ligne
Coûts
Ce tutoriel utilise les composants facturables suivants de Google Cloud :
- AI Platform
- BigQuery
- BigQuery ML
- Cloud Storage
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Activez l'API AI Platform Training and Prediction
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Activez l'API AI Platform Training and Prediction
Une fois que vous avez terminé ce tutoriel, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Préparer les exemples de données
Pour entraîner le modèle, vous devez disposer d'une table comportant les colonnes suivantes :
fullVisitorId
: contient le numéro client.bounces
: identifie le nombre de fois où un visiteur a cliqué sur une annonce sur le Réseau de Recherche ou sur une annonce sur des réseaux sociaux, et a démarré une session sur le site Web, mais l'a quitté sans interagir avec d'autres pages. Cette colonne est interprétée comme l'une des caractéristiques du modèle.time_on_site
: identifie la durée totale de la session du client sur le site Web, exprimée en secondes. Cette colonne sert de caractéristique du modèle.will_buy_on_return_visit
: étiquette indiquant la tendance d'achat du client. La valeur1
indique que le client est susceptible d'effectuer un achat, tandis que la valeur0
indique qu'il n'est pas susceptible d'en effectuer un.
Pour créer cette table à l'aide des données de l'exemple d'ensemble de données Google Analytics, procédez comme suit :
- Ouvrez l'exemple d'ensemble de données Google Analytics dans Google Cloud Marketplace et cliquez sur Afficher l'ensemble de données. La console BigQuery s'ouvre avec l'exemple d'ensemble de données Google Analytics sélectionné.
- Dans la section Ressources, sélectionnez le projet dans lequel vous suivez ce tutoriel.
Cliquez sur Créer un ensemble de données.
Sur la page Create dataset (Créer un ensemble de données), procédez comme suit :
- Dans le champ ID de l'ensemble de données, saisissez
bqml
. - Dans le champ Emplacement des données, choisissez l'emplacement le plus proche de vous.
- Cliquez sur Créer un ensemble de données.
- Dans le champ ID de l'ensemble de données, saisissez
Dans l'éditeur de requête, exécutez l'instruction SQL suivante pour créer une table contenant les données d'entraînement.
# select initial features and label to feed into your model CREATE OR REPLACE TABLE bqml.propensity_data AS SELECT fullVisitorId, bounces, time_on_site, will_buy_on_return_visit FROM ( # select 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' # train on first 9 months of data AND '20170430' ) JOIN ( SELECT fullvisitorid, IF ( COUNTIF ( totals.transactions > 0 AND totals.newVisits IS NULL ) > 0, 1, 0 ) AS will_buy_on_return_visit FROM `bigquery-public-data.google_analytics_sample.*` GROUP BY fullvisitorid ) USING (fullVisitorId) ORDER BY time_on_site DESC;
Exécutez l'instruction SQL suivante pour voir un exemple de données dans la table
bqml.propensity_data
obtenue :SELECT * FROM bqml.propensity_data LIMIT 10;
Un résultat semblable aux lignes suivantes doit s'afficher :
Créer et entraîner le modèle
Créez un modèle qui prédit les tendances d'achat des clients en fonction de leur comportement en ligne, identifié par les données bounces
et time_on_site
.
Exécutez l'instruction SQL CREATE MODEL pour créer, entraîner et déployer le modèle de régression logistique :
CREATE OR REPLACE MODEL `bqml.rpm_bqml_model`
OPTIONS(MODEL_TYPE = 'logistic_reg',
labels = [ 'will_buy_on_return_visit' ]
)
AS
SELECT * EXCEPT (fullVisitorId)
FROM `bqml.propensity_data`;
L'entraînement peut prendre plusieurs minutes. Une fois l'entraînement terminé, le modèle entraîné est déployé dans BigQuery en tant que bqml.rpm_bqml_model
.
Évaluer le modèle
Analysez les performances du modèle en consultant sa métrique de performances AUC : aire sous la courbe ROC. La valeur AUC d'un modèle peut être comprise entre 0 (ce qui signifie qu'aucune prédiction n'est correcte) et 1 si toutes les prédictions sont correctes.
Dans un tutoriel comme celui-ci utilisant un modèle non optimisé, vous obtiendrez probablement de bons résultats, mais peu intéressants, à partir du modèle. Dans un cas d'utilisation en production, il convient d'optimiser le modèle à l'aide des réglages d'hyperparamètres, de l'extraction de caractéristiques et d'autres techniques pour obtenir un score supérieur ou égal à 0,9.
Exécutez l'instruction SQL ML.EVALUATE pour évaluer le modèle :
SELECT
roc_auc,
# evaluating the auc value based on the scale at http://gim.unmc.edu/dxtests/roc3.htm
CASE WHEN roc_auc >.9 THEN 'excellent' WHEN roc_auc >.8 THEN 'good'
WHEN roc_auc >.7 THEN 'fair' WHEN roc_auc >.6 THEN 'poor' ELSE 'fail' END
AS modelquality
FROM ML.EVALUATE(MODEL `bqml.rpm_bqml_model`);
Un résultat semblable aux lignes suivantes doit s'afficher :
Obtenir des prédictions par lot à l'aide du modèle entraîné
Les prédictions par lot permettent d'obtenir des données pour une campagne publicitaire par e-mail ou un autre scénario en différé.
Exécutez l'instruction SQL ML.PREDICT pour obtenir des prédictions par lot pour les exemples de données de la table bqml.propensity_data
:
# predict the inputs (rows) from the input table
SELECT
fullVisitorId,
predicted_will_buy_on_return_visit
FROM ML.PREDICT(MODEL bqml.rpm_bqml_model,
(
SELECT
fullVisitorId,
bounces,
time_on_site
from bqml.propensity_data
))
Un résultat semblable aux lignes suivantes doit s'afficher :
L'instruction ML.PREDICT
ci-dessus utilise le niveau threshold
par défaut de 0,5. La valeur threshold
détermine la limite entre les deux valeurs d'étiquettes possibles, avec des prédictions supérieures à la valeur threshold
marquée comme positive. Pour un modèle de production, vous pouvez envisager d'ajuster la valeur threshold
avec d'autres techniques, telles que les réglages d'hyperparamètres, pour optimiser le modèle.
Obtenir des prédictions en ligne à l'aide du modèle entraîné
Les prédictions en ligne vous permettent d'effectuer des actions en temps réel en fonction du comportement des utilisateurs sur votre site Web. Pour obtenir des prédictions en ligne, vous devez exporter le modèle de BigQuery vers Cloud Storage, puis le déployer sur AI Platform. Vous pouvez ensuite envoyer des requêtes de prédiction au modèle déployé.
Pour exporter et déployer le modèle, procédez comme suit :
- Activer Cloud Shell
Dans Cloud Shell, exécutez la commande ci-dessous pour créer un bucket Cloud Storage afin de stocker le modèle exporté. Remplacez myProject par l'ID du projet que vous utilisez pour suivre ce tutoriel.
gsutil mb 'gs://myProject-bucket'
Exportez le modèle vers un bucket Cloud Storage, en remplaçant myBucket par le nom du bucket que vous avez créé à l'étape 2 :
bq extract -m bqml.rpm_bqml_model gs://myBucket/V_1
Créez le modèle dans AI Platform :
gcloud ai-platform models create rpm_bqml_model
Déployez le modèle exporté sur AI Platform en remplaçant myBucket par le nom du bucket que vous avez créé à l'étape 2 :
gcloud ai-platform versions create --model=rpm_bqml_model V_1 --framework=tensorflow --python-version=3.7 --runtime-version=1.15 --origin=gs://myBucket/V_1/ --staging-bucket=gs://myBucket
Créez un fichier
input.json
contenant des exemples de données client :echo "{\"bounces\": 0, \"time_on_site\": 7363}" > input.json
Demandez les prédictions :
gcloud ai-platform predict --model rpm_bqml_model --version V_1 --json-instances input.json
Cette commande produit un résultat semblable à celui-ci :
PREDICTED_WILL_BUY_ON_RETURN_VISIT WILL_BUY_ON_RETURN_VISIT_PROBS WILL_BUY_ON_RETURN_VISIT_VALUES ['1'] [0.661069205638202, 0.33893079436179796] ['1', '0']
Le modèle renvoie la valeur
1
pourPREDICTED_WILL_BUY_ON_RETURN_VISIT
et prédit que le client de cet exemple a tendance à effectuer des achats, avec une probabilité de 66 %.Vous pouvez utiliser la valeur de probabilité d'un client avec une prédiction positive pour décider de lui offrir un bon de réduction ou un autre avantage. Par exemple, vous pouvez supposer que les clients dont la probabilité est supérieure à 80 % sont susceptibles d'effectuer un achat sans avantage. Vous pouvez donc privilégier les avantages auprès des clients dont les probabilités sont comprises entre 50 et 80 %.
Étapes suivantes facultatives
Intégrer la solution à un système CRM
Vous pouvez éventuellement développer cette solution en intégrant les prédictions de tendances d'achat aux données du système CRM (gestion de la relation client), telles que des adresses e-mail, afin de faciliter la communication avec le client. Pour obtenir un exemple d'intégration de ce type, consultez la page Intégration de l'audience Salesforce Marketing Cloud. Cet article explique comment intégrer Google Analytics 360 à Salesforce Marketing Cloud pour pouvoir utiliser les audiences Analytics 360 dans des campagnes de marketing direct par e-mail et par SMS.
Automatiser le workflow avec un pipeline
Vous pouvez éventuellement automatiser le processus de préparation des données -> création et entraînement du modèle -> workflow des prédictions de requêtes présenté dans ce tutoriel en créant un pipeline AI Platform. Utilisez le notebook bqml_kfp_retail_propensity_to_purchase pour obtenir des instructions détaillées sur l'automatisation d'un workflow de machine learning sur les tendances d'achat.
Nettoyer
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, vous pouvez soit supprimer le projet contenant les ressources, soit le conserver, mais supprimer uniquement ces ressources.
Dans les deux cas, vous devez supprimer ces ressources afin d'éviter qu'elles ne vous soient facturées par la suite. Dans les sections suivantes, nous allons voir comment supprimer ces ressources.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
- Dans Cloud Console, accédez à la page Gérer les ressources :
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer les composants
Si vous ne souhaitez pas supprimer le projet, reportez-vous aux sections suivantes pour supprimer les composants facturables de ce tutoriel.
Supprimer l'ensemble de données BigQuery
- Ouvrez la console BigQuery
- Dans la section Ressources, développez le projet dans lequel vous avez terminé ce tutoriel, puis sélectionnez l'ensemble de données bqml.
- Cliquez sur Supprimer l'ensemble de données dans l'en-tête du volet de l'ensemble de données.
- Dans la fenêtre qui apparaît en superposition, saisissez bqml, puis cliquez sur Supprimer.
Supprimer le modèle AI Platform
- Ouvrez la page "Modèles AI Platform".
- Dans la liste des modèles, cliquez sur rpm_bqml_model.
- Sur la page Détails du modèle, cochez la case correspondant à la version V_1 (par défaut).
- Cliquez sur Plus , puis sur Supprimer.
- Lorsque la version est supprimée, cliquez sur Retour pour revenir à la liste des modèles.
- Cochez la case correspondant au modèle rpm_bqml_model.
- Cliquez sur Plus , puis sur Supprimer.
Supprimer le bucket Cloud Storage
- Ouvrir le navigateur Cloud Storage
- Cochez la case correspondant au bucket <myProject>-bucket.
- Cliquez sur Supprimer.
- Dans la fenêtre qui s'affiche en superposition, saisissez
DELETE
, puis cliquez sur Confirmer.
Étape suivante
- Examinez l'exemple de code dans la dépôt How to build an end-to-end propensity to purchase solution using BigQuery ML and Kubeflow Pipelines (Créer une solution de bout en bout pour l'analyse des tendances d'achat à l'aide de BigQuery ML et de Kubeflow Pipelines) sur GitHub.
- Découvrez d'autres solutions de prévisions de prédiction.
- Apprenez-en plus sur BigQuery ML.
- Apprenez-en plus sur Analytics 360.