Lisez notre article sur

.

La modélisation de la propension peut être utilisée pour augmenter l'impact de votre communication avec les clients et optimiser vos dépenses publicitaires.

Google Analytics data est une source data bien structurée qui peut facilement être transformée en un ensemble data prêt pour l'apprentissage automatique.

Les tests rétrospectifs sur l'historique de data et les mesures techniques peuvent vous donner une première idée de la performance de votre modèle, tandis que les tests en direct et les mesures commerciales vous permettront de confirmer l'impact de votre modèle.

Notre modèle d'apprentissage automatique personnalisé a surpassé les références existantes : lors des tests en direct en termes de ROAS (retour sur investissement publicitaire) : +221% par rapport au modèle basé sur des règles et +73% par rapport au modèle d'apprentissage automatique standard (score de qualité des sessions Google Analytics).

Cet article part du principe que les bases de l'apprentissage automatique et du marketing sont fondamentales.

Qu'est-ce que la modélisation de la propension ?

La modélisation de la propension est estimer la probabilité qu'un client effectue une action donnée. Plusieurs actions peuvent être utiles à l'estimation :

  • Achat d'un produit
  • Le barattage
  • Désinscription
  • etc ...

Dans cet article, nous nous concentrerons sur l'estimation de la propension à acheter un article sur un site web de commerce électronique.

Mais pourquoi estimer la propension à l'achat ? Parce qu'elle permet deadapter la façon dont nous voulons interagir avec un client. Supposons, par exemple, que nous disposions d'un modèle de propension très simple qui classe les clients en “froids”, “tièdes” et “chauds” pour un produit donné (“chauds” étant les clients qui ont le plus de chances d'acheter et “froids” ceux qui en ont le moins) :

Image

Sur la base de cette classificationvous pouvez avoir une réponse ciblée spécifique pour chaque classe. Vous pourriez vouloir adopter une approche marketing différente selon qu'il s'agit d'un client très proche de l'achat ou d'un client qui n'a peut-être même jamais entendu parler de votre produit. De même, si vous disposez d'un budget média limité, vous pouvez le concentrer sur les clients qui ont une forte probabilité d'acheter et ne pas trop dépenser pour ceux qui ont peu de chances d'acheter.

Ce type simple de classification basée sur des règles peut donner de bons résultats et est généralement préférable à l'absence de classification, mais il présente les inconvénients suivants plusieurs limites :

  • Il est probable que ne pas exploiter toutes les data que vous avez à votre disposition, qu'il s'agisse d'informations plus précises sur le parcours du client, de votre site web ou d'autres sources data dont vous disposez, comme le CRM data.

  • S'il semble évident que les clients classés comme “chauds” sont plus susceptibles d'acheter que les clients classés comme “froids”, cette approche ne nous donne pas de chiffres précis sur les points suivants la probabilité qu'ils achètent. Les clients “chauds” ont-ils 3% une chance d'acheter ? 5% ? 10% ?
  • Grâce à des règles simples, le nombre de classes que vous pouvez obtenir est limité. limite la personnalisation de votre réponse ciblée peut l'être.

Pour faire face à ces limitations, nous pouvons utiliser une approche plus orientée data : utilisez apprentissage automatique sur notre data pour prévoir une probabilité d'achat pour chaque client.

Comprendre Google Analytics data

Google Analytics est un outil service web d'analyse qui suit l'utilisation data et le trafic sur le site web et les applications.

Image

Google Analytics data peut être facilement exporté vers Big Query (Google Cloud Platform entièrement géré data service entrepôt) où il est possible d'y accéder via une syntaxe de type SQL :

Image

Notez que le tableau d'exportation Big Query avec Google Analytics data est un tableau d'exportation de données. tableau imbriqué au niveau de la session :

  • Sessions sont une liste d'actions effectuées par un client spécifique dans un laps de temps donné. Elles commencent lorsqu'un client visite une page et se terminent après 30 minutes d'activité.
  • Chaque client peut avoir plusieurs sessions.
  • Chaque session peut être composée de plusieurs hits (c'est-à-dire d'événements) et chaque hit peut avoir plusieurs attributs ou métriques personnalisés (c'est pourquoi le tableau est imbriqué ; par exemple, si vous voulez examiner le data au niveau du hit, vous devrez aplatir le tableau).
Image

Par exemple, dans cette requête, nous recherchons uniquement caractéristiques au niveau de la session:

ImageImage

Dans cette requête, nous avons utilisé une fonction Unnest pour obtenir les mêmes informations à l'adresse suivante niveau d'atteinte:

ImageImage

Pour plus d'informations sur le GA data, consultez la page documentation. Notez que notre projet a été développé sur GA360, donc si vous utilisez la dernière version, GA4, il y aura de légères différences dans le modèle data, en particulier le tableau sera au niveau de l'événement. Il existe des tableaux d'exemples publics de GA360 et GA4 data disponible sur Big Query.

Maintenant que nous avons accès à notre source brute data, nous devons procéder à l'ingénierie des caractéristiques avant d'introduire notre tableau dans un algorithme d'apprentissage automatique.

Concevoir les bonnes caractéristiques

L'objectif de l'étape d'ingénierie des caractéristiques est de transformer les données brutes de Google Analytics data (extraites de Big Query) en une base de données d'analyse des caractéristiques. table prête à utiliser pourApprentissage automatique.

GA data est très bien structuré et ne nécessitera qu'un minimum d'étapes de nettoyage. Cependant, le tableau contient encore de nombreuses informations, dont beaucoup ne sont pas utiles pour l'apprentissage automatique ou ne peuvent pas être utilisées telles quelles, c'est pourquoi il est important de sélectionner et d'élaborer les bonnes caractéristiques. C'est pourquoi il est important de sélectionner et d'élaborer les bonnes caractéristiques. Pour ce faire, nous avons construit des caractéristiques qui semblaient être les plus corrélées à l'achat d'un produit.

Nous avons élaboré 4 types de caractéristiques :

Image

Notez que nous calculons toutes ces caractéristiques au niveau du client, ce qui signifie que nous agrégeons des informations provenant de plusieurs sessions pour chaque client (en utilisant le champ fullVisitorId comme clé).

Caractéristiques générales

Les caractéristiques globales sont les suivantes caractéristiques numériques qui donnent des informations générales sur la session.

Image

Notez que le taux de rebond est défini comme % de fois où le client n'a visité qu'une seule page web au cours d'une session.

Il était également important d'inclure des informations sur les la récurrence des événementsLe site web de l'entreprise est un outil de gestion de la relation client : par exemple, un client qui vient de visiter votre site web est probablement plus enclin à acheter qu'un client qui l'a visité il y a trois mois. Pour plus d'informations sur ce sujet, vous pouvez consulter la théorie sur le site suivant RFM (récence, fréquence, valeur monétaire).

Nous avons donc ajouté une fonctionnalité Récence depuis la dernière session = 1 / Nombre de jours depuis la dernière session qui permet de normaliser la valeur entre 0 et 1

Caractéristiques préférées

Nous avons également voulu inclure des informations sur la clé catégorielle data disponibles, tels que navigateur ou appareil. Étant donné que ces informations se situent au niveau de la session, il peut y avoir plusieurs valeurs différentes pour un même client. Nous ne retenons donc que celle qui apparaît le plus souvent par client (c'est-à-dire la préférée). De même, pour éviter d'avoir des caractéristiques catégorielles avec une cardinalité trop élevée, nous ne conservons que les 5 valeurs les plus courantes pour chaque caractéristique et remplaçons toutes les autres valeurs par une valeur “Autre”.

Image

Caractéristiques du produit

Si les deux premiers types de caractéristiques sont certainement utiles pour répondre à la question “Un client va-t-il acheter sur mon site web ?”, ils ne sont pas suffisamment précis pour nous permettre de savoir “Le client va-t-il acheter un produit spécifique ?. Pour répondre à cette question, nous avons créé des caractéristiques spécifiques au produit qui ne comprennent que le produit pour lequel nous essayons de prédire l'achat :

Image

Pour Récence depuis la dernière session avec au moins une interaction avec ce produit, nous utilisons la même formule que pour le Récence de la session dans les caractéristiques générales. Cependant, il peut arriver qu'il n'y ait aucune session avec au moins une interaction avec le produit, auquel cas nous remplissons le champ avec 0. Cela est logique d'un point de vue commercial puisque la valeur la plus élevée possible est 1 (lorsque le client a eu une session depuis hier).

Caractéristiques similaires du produit

Outre l'interaction du client avec le produit pour lequel nous essayons de prédire la probabilité d'achat, le fait de savoir que le client a interagi avec d'autres produits ayant une fonction et un prix similaires peut certainement être utile (c'est-à-dire un produit de substitution). C'est pourquoi nous avons ajouté un ensemble de caractéristiques de produits similaires qui sont identiques aux caractéristiques de produits, sauf que nous incluons également les produits similaires dans la portée de la variable. Les produits similaires pour un produit donné ont été définis à l'aide de données commerciales.

Image

Nous avons maintenant notre Caractéristiques de l'ensemble dataset sur lequel nous pouvons former notre modèle d'apprentissage automatique.

Formation du modèle

Puisque nous voulons savoir si un client va acheter un produit spécifique ou non, il s'agit d'une problème de classification binaire.

Pour notre première itération, nous avons procédé comme suit pour créer notre ensemble dataset d'apprentissage automatique (1 ligne par client) :

  • Calculer la caractéristiques utilisant les sessions dans une fenêtre de temps de 3 mois pour chaque client.
  • Calculer la ciblez l'utilisation des sessions dans une fenêtre de temps de 3 semaines après la fenêtre temporelle de la caractéristique. S'il y a au moins un achat du produit dans la fenêtre temporelle, la cible est égale à 1 (définie comme la classe 1), sinon la cible est égale à 0 (définie comme la classe 0).
  • Répartissez le data entre un ensemble Train et un ensemble Test en utilisant une répartition aléatoire 80 / 20.
Image

Cependant, une première exploration data a rapidement montré qu'il existait une problème de fort déséquilibre entre les classes: Le ratio classe 1 / classe 0 était supérieur à 1:1000 et nous n'avions pas assez de clients de classe 1. Cela peut être très problématique pour les modèles d'apprentissage automatique.

Pour faire face à ces problèmes, nous avons apporté plusieurs modifications à notre approche :

  • Nous a changé la variable cible de faire une achat à la réalisation d'un ajouter au panier. Notre modèle perd donc un peu en termes de signification commerciale, mais l'augmentation du volume de la classe 1 fait plus que compenser.
  • Nous a entraîné le modèle sur plusieurs fenêtres de décalage,chacun de 3 mois + 3 semaines, au lieu d'un seul. En plus d'augmenter nos volumes de data, cela améliore la capacité de généralisation du modèle en s'entraînant sur différentes périodes de l'année où les clients peuvent avoir des comportements d'achat différents. Notez que, de ce fait, le même client sera présent plusieurs fois dans l'ensemble data (à des périodes différentes). Pour éviter les fuites de data, nous nous assurons qu'il est toujours présent soit dans l'ensemble data de formation, soit dans l'ensemble data de test.
  • Nous sous-échantillonnage de notre classe 0 de sorte que le ratio classe 1 / classe 0 est de 1. Le sous-échantillonnage est une bonne solution pour traiter le problème du déséquilibre des classes, par rapport à d'autres options telles que le suréchantillonnage ou l'échantillonnage. SMOTE, Les deux premiers changements nous ont permis d'augmenter considérablement le volume de la classe 1. Seul l'ensemble de formation est rééquilibrépuisque nous voulons que l'ensemble de test ait les mêmes ratios de classes que le futur data sur lequel nous le testerons. Notez que nous avons testé des ratios plus élevés, tels que 5 ou 10, mais que 1 s'est avéré optimal pour l'évaluation du modèle.
Image

En utilisant ce dataset, nous avons testé plusieurs modèles de classification : Modèle linéaire, Random Forest et XGboost, en affinant les hyperparamètres à l'aide d'une grille de recherche, et nous avons fini par sélectionner un modèle de classification de type Modèle XGboost.

Évaluation de notre modèle

Lors de l'évaluation d'un modèle de propension, deux types principaux d'évaluations peuvent être effectués :

  • Évaluation du backtest
  • Évaluation du Livetest

Évaluation du backtest

Tout d'abord, nous avons effectué évaluation du backtest: nous avons appliqué notre modèle à passé historique data et vérifié que notre modèle identifie correctement les clients qui vont effectuer un ajout au panier. Comme nous utilisons un classificateur binaire, le modèle produit un score de probabilité entre 0 et 1 d'être de la classe 1 (Ajouter au panier).
matrice de confusion et calculez la précision / rappel (ou leur forme combinée dans lescore f1). Ces mesures simples posent toutefois deux problèmes :

  • Certains peuvent être difficile à interpréter parce que l'ensemble data est déséquilibré (par exemple, la mesure de la précision sera généralement très faible parce que nous avons très peu de classe 1).
  • Ils doivent décider d'un seuil de probabilité de faire la distinction entre Classes 0 et 1
Image

Nous avons donc décidé d'utiliser deux mesures qui étaient plus interprétable:

  • PR AUC : Surface sous la courbe du graphique de la précision par rapport au rappel(Voir cette explication pour plus de détails). Essentiellement, cette métrique nous permet d'obtenir une évaluation globale sur tous les seuils possibles.Cette métrique est bien adaptée aux dataset déséquilibrés où la priorité est de maximiser la précision et le rappel sur la classe minoritaire : la classe 1 (contrairement à sa cousine la ROC AUC).
  • UpliftPour ce faire, nous classons les clients en fonction de leur score de probabilité et nous divisons nos résultats en 20 ventiles. La remontée est définie comme la Taux de la classe 1 dans le top 5% / le taux de la classe 1 dans l'ensemble des datasetPar exemple, si nous avons 21 % ajoutés au panier dans les 5 premiers % de l'ensemble data contre 3 % ajoutés au panier dans l'ensemble data, nous obtenons une augmentation de 7, ce qui signifie que notre modèle est 7 fois plus efficace qu'un modèle aléatoire.

Les résultats de ces mesures ont été plutôt positifs, en particulier, Uplift était aux alentours de 13.5.

L'évaluation du backtest est une méthode sans risque pour une première évaluation d'un modèle de propension, mais elle présente plusieurs limites :

  • Étant donné qu'elle ne porte que sur le passé, la sortie du modèle n'est pas réellement utilisée pour avoir un impact sur la stratégie du budget des médias.
  • Avec nos mesures, nous avons seulement évalué si le modèle était capable d'identifier correctement les clients qui feraient un ajout au panier, mais nous n'avons pas évalué les éléments suivants comment l'identification de ces clients pourrait générer une augmentation des ventes.

Évaluation du Livetest

Pour avoir une meilleure idée de la valeur commerciale de notre modèle, nous devons donc effectuer les opérations suivantes test d'évaluation en direct. Ici, nous activons notre modèle et l'utilisons pour hiérarchiser les dépenses de budget publicitaire :

Image

Les résultats que nous avons obtenus lors du test en direct étaient très solides :

  • Par rapport à un approche basée sur des règles simples pour la propension à l'évaluation, le ROAS de notre modèle était de +221 %
  • En outre, nous avons également comparé nos performances à celles d'un concurrent de taille, à savoir Score de qualité des sessions de Google: un score fourni par Google dans Google Analytics dataset, et dans ce cas notre modèle était toujours à +73 % ROAS. Cela montre comment une approche ML personnalisée peut apporter une valeur commerciale considérable.

Conclusion

En plus d'atteindre de bonnes performances, notre approche présente l'avantage d'être très générique. Presque aucune des étapes de l'ingénierie des caractéristiques ne doit être adaptée pour appliquer notre modèle à un un champ d'application national ou un champ d'application de produit différent. En fait, après notre premier succès dans le test en direct, nous avons pu déployer notre modèle dans plusieurs pays et pour plusieurs produits de manière très efficace.

Je vous remercie de votre lecture. Je serais heureux d'entendre vos commentaires sur cette approche. Avez-vous déjà construit des modèles de propension ? Si oui, qu'avez-vous fait différemment ?

Merci à Bruce Delattre, Rafaëlle Aygalenq et Cédric Ly.

Moyen Blog par Artefact.

Cet article a été initialement publié sur Medium.com.
Suivez-nous sur notre Medium Blog !