Prédire les tendances d'achat des clients à l'aide de BigQuery ML et d'AI Platform

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. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

  1. 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.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. 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.

  4. Activez l'API AI Platform Training and Prediction

    Activer l'API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. 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.

  7. Activez l'API AI Platform Training and Prediction

    Activer l'API

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 valeur 1 indique que le client est susceptible d'effectuer un achat, tandis que la valeur 0 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 :

  1. 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é.
  2. Dans la section Ressources, sélectionnez le projet dans lequel vous suivez ce tutoriel.
  3. Cliquez sur Créer un ensemble de données.

    Affiche l'emplacement du bouton "Create Dataset" (Créer un ensemble de données)

  4. Sur la page Create dataset (Créer un ensemble de données), procédez comme suit :

    1. Dans le champ ID de l'ensemble de données, saisissez bqml.
    2. Dans le champ Emplacement des données, choisissez l'emplacement le plus proche de vous.
    3. Cliquez sur Créer un ensemble de données.
  5. 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;
    
  6. 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 :

    Dix premières lignes de données d'entraînement traitées.

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 :

Dix premières lignes de données d'entraînement traitées.

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 :

Dix premières lignes de données d'entraînement traitées.

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 :

  1. Activer Cloud Shell
  2. 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'
    
  3. 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
    
  4. Créez le modèle dans AI Platform :

    gcloud ai-platform models create rpm_bqml_model
    
  5. 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
    
  6. Créez un fichier input.json contenant des exemples de données client :

    echo "{\"bounces\": 0, \"time_on_site\": 7363}" > input.json
    
  7. 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 pour PREDICTED_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.

  1. Dans Cloud Console, accédez à la page Gérer les ressources :

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. 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

  1. Ouvrez la console BigQuery
  2. Dans la section Ressources, développez le projet dans lequel vous avez terminé ce tutoriel, puis sélectionnez l'ensemble de données bqml.
  3. Cliquez sur Supprimer l'ensemble de données dans l'en-tête du volet de l'ensemble de données.
  4. Dans la fenêtre qui apparaît en superposition, saisissez bqml, puis cliquez sur Supprimer.

Supprimer le modèle AI Platform

  1. Ouvrez la page "Modèles AI Platform".
  2. Dans la liste des modèles, cliquez sur rpm_bqml_model.
  3. Sur la page Détails du modèle, cochez la case correspondant à la version V_1 (par défaut).
  4. Cliquez sur Plus , puis sur Supprimer.
  5. Lorsque la version est supprimée, cliquez sur Retour  pour revenir à la liste des modèles.
  6. Cochez la case correspondant au modèle rpm_bqml_model.
  7. Cliquez sur Plus , puis sur Supprimer.

Supprimer le bucket Cloud Storage

  1. Ouvrir le navigateur Cloud Storage
  2. Cochez la case correspondant au bucket <myProject>-bucket.
  3. Cliquez sur Supprimer.
  4. Dans la fenêtre qui s'affiche en superposition, saisissez DELETE, puis cliquez sur Confirmer.

Étape suivante