Technologie

Prédire la valeur client à vie avec les modèles probabilistes «Buy‘ Til You Die »en Python

Prédire la valeur client à vie avec les modèles probabilistes «Buy‘ Til You Die »en Python


Que vaut un client? Combien de fois plus un client achètera-t-il avant de le transformer? Quelle est la probabilité qu'il se désabonne dans les 3 prochains mois? Et surtout, combien de temps devrions-nous nous attendre à ce qu'un client soit «vivant»?

Bien que ces questions soient très courantes parmi Marketing, produit, VC et finance d'entreprise professionnels, il est toujours difficile de leur répondre correctement avec des chiffres précis.

Dans paramètres commerciaux non contractuels, où les clients peuvent mettre fin à leur relation avec un détaillant à tout moment et sans préavis, cela peut être encore plus délicat.
Amazon pour les livres (ou toute autre catégorie de produits sans abonnement), Zalando pour les vêtements et Booking.com pour les hôtels sont tous des exemples de paramètres commerciaux non contractuels. Pour ces trois E-commerces, nous ne pouvons pas regarder la date de fin du contrat du client pour savoir s’il est «vivant» (achètera dans le futur) ou «mort» (n’achètera plus jamais). Nous ne pouvons compter que sur les achats passés d’un client et sur d’autres événements moins caractéristiques (visites de sites Web, critiques, etc.).
Mais comment pouvons-nous décider dans ce scénario si un client doit revenir ou s’il est parti pour de bon?

Les modèles probabilistes «Buy‘ Til You Die »nous aident à quantifier la valeur à vie d’un client en évaluant le nombre prévu de ses transactions futures et sa probabilité d’être« en vie ».

Le modèle BG / NBD

Pour comprendre le fonctionnement des modèles Buy ’Til You Die, nous nous concentrons sur notre meilleur choix pour prévoir des données réelles: le modèle BG / NBD.
Le modèle de distribution binomiale géométrique / négative bêta a été introduit en 2004 par P. Fader’s Paper dans le but d’améliorer le modèle de Pareto / NBD (le premier BTYD) développé par Schmittlein et al. en 1987.

En particulier, pour prévoir les transactions futures, le modèle considère le comportement d'achat du client comme un jeu à lancer de pièces.
Chaque client a 2 pièces: un acheter des pièces qui contrôle la probabilité d'un client d'acheter, et un pièce de monnaie qui contrôle la probabilité qu'un client quitte et n'achète plus jamais.

Passons en revue les hypothèses du modèle pour comprendre comment tout fonctionne.

Hypothèse 1: actif, le nombre de transactions effectuées par un client suit un certain Processus de Poisson avec taux de transaction λ (= nombre attendu de transactions dans un intervalle de temps).
Comportement d’achat d’un client observé sur une période de 12 mois, où le nombre de transactions est distribué sous forme de processus de Poisson avec un taux de transaction non observé. c

À chaque sous-période (1 mois) d'un intervalle de temps spécifique (12 mois), chaque client lance sa pièce d'achat et, en fonction du résultat, il achète ou non.
Le nombre de transactions (en-têtes) observées au cours de la période dépend de la distribution de probabilité de chaque client autour de λ.
Parcourons ci-dessous la distribution de probabilité de Poisson d'un client pour visualiser ce que nous venons de dire.

Probabilité de Poisson Masse Fonction d'un client avec λ = 4,3

Ici, nous supposons que notre client aléatoire a un taux de transaction λ = 4.3. En conséquence, il aura une probabilité de 19% d’acquérir 4 fois au cours d’une période aléatoire de 12 mois et une probabilité de 4% d’acquérir 8 fois, et ainsi de suite.

Hypothèse 2: L’hétérogénéité des taux de transaction entre les clients suit un Distribution gamma.

Cela équivaut à dire que chaque client a sa propre pièce d'achat (avec sa propre probabilité de tête et de queue).
Pour mieux comprendre l'hypothèse, nous simulons la distribution de Poisson de 100 clients où chaque λ est modélisé avec une distribution Gamma avec des paramètres: shape = 9 et scale = 0.5.

Simulation de distributions de probabilité de Poisson de 100 clients où le λ de chaque client dépend d’une distribution Gamma de forme = 9 et d’échelle = 0,5

Comme indiqué dans l'hypothèse, chaque client a sa propre probabilité d'acheter x fois dans un intervalle de temps donné.

Hypothèse 3: après toute transaction, un client devient inactif avec une probabilité p.
Par conséquent, le point auquel le client «abandonne» est réparti entre les transactions selon un (décalé) Distribution géométrique.

Après chaque transaction, chaque client lancera la deuxième pièce, le mourir la pièce.
Étant donné que p est la probabilité de "mourir", alors nous pouvons définir P (vivant) = 1-p.
Encore une fois, imaginons une distribution aléatoire des probabilités client afin de mieux comprendre le sens de cette hypothèse.

Fonction de masse de probabilité géométrique décalée pour un client avec p = 0.52

En supposant que notre client devienne inactif avec une probabilité p = 0,52, la probabilité qu'il devienne inactif après la deuxième transaction soit de 25% et la probabilité de devenir inactif après la troisième transaction est de 12%.
Comme vous le voyez, plus le client achète, plus il a de chances d'être en vie.

Hypothèse 4: l'hétérogénéité dans p suit un Distribution bêta.

Quant à la pièce d'achat, chaque client a sa propre pièce de monnaie avec sa propre probabilité d'être en vie après un montant spécifique de transactions.
Nous pouvons voir ci-dessous comment cela se présenterait pour une simulation de 10 clients où p suit une distribution bêta avec α = 2 et β = 3.

Simulation de 10 clients aléatoires des distributions de probabilité géométrique où p est suivi d'une distribution bêta avec des paramètres α = 2 et β = 3
Hypothèse 5: til taux de transaction λ et la probabilité d'abandon p varient indépendamment d’un client à l’autre.

Résultats du modèle

Finalement, en ajustant les distributions mentionnées précédemment sur les données historiques des clients, nous sommes en mesure de dériver un modèle qui fournit pour chaque client:

  • P (X (t) = x | λ, p)- la probabilité d'observer x transactions dans une période de temps t
  • E (X (t) | λ, p)- le nombre attendu de transactions dans une période de temps t
  • P (τ> t) - la probabilité qu'un client devienne inactif à la période τ

Les paramètres de distribution ajustés sont ensuite utilisés dans l’analyse prospective de la clientèle pour trouver le nombre prévu de transactions dans une période future de longueur t pour un individu ayant un comportement observé antérieur défini par x, t, T -X = nombre de transactions historiques, t = heure du dernier achat et T = Age d'un client.
Et ci-dessous, pour les amateurs de mathématiques, la formule finale (une dérivation précise est fournie dans l’annexe du document de P. Fader):

Le nombre prévu de transactions dans une période future de longueur t pour un individu ayant un comportement observé antérieur (X = x, t, T; où x = n. transactions historiques, tₓ = heure du dernier achat et T = âge du client) en fonction des paramètres du modèle ajusté r, α, un B

Implémentation du modèle CLV en Python

Maintenant que nous avons compris le fonctionnement des modèles Buy ‘Til You Die’, nous sommes enfin prêts à passer de la théorie à la pratique et à appliquer le modèle BG / NBD à de vraies données clients.

Parmi les différentes alternatives disponibles pour implémenter le modèle, je recommande vivement le package Lifetimes en Python (utilisé ici) et la bibliothèque BTYD en R. Ces packages ont permis d’intégrer les équations du modèle dans des fonctions pratiques qui facilitent notre vie incroyablement bien.

La forme des données

Comme nous l'avons vu précédemment, le modèle BG / NBD intègre plusieurs distributions dans les données d'achat des clients historiques. Pour ce faire, nous devons créer un jeu de données fournissant à chaque client les trois informations suivantes:

Récence (dérivé de tₓ): l’âge du client au moment de son dernier achat, qui est égal à la durée entre le premier achat du client et son dernier achat.
Fréquence (x): le nombre de périodes dans lesquelles le client a répété son achat.
Age du client (T): l’âge du client à la fin de la période d’étude, qui est égal à la durée entre le premier achat du client et le dernier jour de l’ensemble de données.

Voici ci-dessous un exemple de l'apparence de vos données:

Que vous choisissiez des jours, des mois ou des années dépend fortement du cycle d'achat de vos clients. Les entreprises de livraison de nourriture, par exemple, ont tendance à rencontrer des répétitions de clients même au cours de la même semaine, ce qui les empêche de passer des jours. Dans l'exemple ci-dessus, j'ai utilisé des mois parce que c'était plus approprié.

Ajuster le modèle

Une fois que nous avons créé le jeu de données, nous pouvons le transmettre au modèle et imprimer le résumé.

N'hésitez pas à utiliser le jeu de données au détail en ligne fourni par le référentiel ML UCI si vous avez besoin de données client réelles (j'utiliserai un jeu de données fictif pour ne pas fournir d'informations sensibles sur la société que j'ai analysée).

Cool! Qu'est-ce que c'est? Nous avons ajusté les distributions de nos hypothèses dans les données historiques et avons dérivé les paramètres du modèle: alpha et r sont pour la distribution Gamma (hypothèse 2), et une et b pour la distribution bêta (hypothèse 4).
Dans le résumé, nous avons également un intervalle de confiance pour chaque paramètre que nous pouvons utiliser pour calculer un intervalle de confiance des transactions futures attendues pour chaque client.

Évaluation de l'ajustement du modèle

Maintenant que nous avons construit un modèle, nous pouvons vérifier si cela a vraiment du sens. Une première solution consiste à générer artificiellement des clients dont le comportement d’achat attendu dépend des paramètres du modèle ajusté et à les comparer aux données réelles.

Pour ce que nous voyons, la distribution de clients artificiels ressemble beaucoup aux données réelles.
À ce stade, je suggérerais également de calculer la global erreur de pourcentage (= transactions prévues / transactions réelles -1) et le pourcentage d'erreur par transaction effectuée pendant la période d'étalonnage.
De cette manière, vous pouvez quantifier à quel point le modèle est proche de la réalité et s'il convient davantage à certains clients qu'à d'autres. Par exemple, le modèle pourrait placer moins de clients dans les tranches de transactions d’étalonnage 5, 6 et 7 que dans la réalité, ce qui pourrait éventuellement entraîner une forte sous-estimation globale.

Visualisation de la matrice modèle fréquence / récence

Maintenant que nous avons un modèle ajusté, nous pouvons examiner sa matrice fréquence / récence pour examiner la relation attendue (basée sur nos paramètres de modèle ajusté) entre la récence du client (âge au dernier achat), la fréquence (le nombre de transactions répétées effectuées) et le nombre attendu de transactions dans la prochaine période (graphique de gauche ci-dessous).
Nous pouvons également visualiser la probabilité escomptée qu'un client soit en vie en fonction de sa fréquence et de sa fréquence (graphique ci-dessous à droite).

En effet, nous voyons que si un client a acheté plus de 25 fois et que son dernier achat était lorsqu'il avait plus de 25 mois (en bas à droite), il est alors votre client le plus populaire avec la plus grande probabilité d'être en vie et d'acheter. Au contraire, vos clients les plus froids sont dans le coin supérieur droit: ils ont acheté beaucoup rapidement et nous ne les avons pas vus depuis des mois.

Validation croisée

Une fois que vous avez vérifié que le modèle est suffisamment proche des données réelles, vous pouvez voir à quel point il est utile pour prévoir les achats futurs.

Merci à Lifetimes ’ calibration_and_holdout_data () fonction, nous pouvons rapidement scinder un jeu de données de transactions simple en périodes de calibration et de maintien. Nous allons d’abord ajuster le modèle à une période d’étalonnage de 2 ans, puis prédire les transactions de l’année suivante et enfin comparer les transactions prévues par rapport aux transactions en attente.

Voici comment le cal_hold dataframe ressemble à:

En comparant la moyenne des achats réels et prévus dans la parcelle ci-dessous, nous pouvons constater que les prévisions et les données réelles sont très proches pour les clients avec 0 à 3 transactions répétées au cours de la période d'étalonnage, alors qu'ils divergent de plus en plus pour les clients avec davantage de répétitions.

Dans ce cas également, étant donné que le graphique à lui seul peut être trompeur (de petites différences pour les compartiments comptant beaucoup de clients peuvent entraîner de grosses erreurs), pour évaluer correctement la prévision, nous devrions examiner les erreur de pourcentage global (Erreur de prédiction dans les graphiques), cela dans mon scénario représente -6,3% (le modèle prédit 6,3% moins de transactions que dans la réalité).
En regardant le pourcentage d'erreur par répétitions dans la période d'étalonnage, nous remarquons que nous sous-prévoyons pour les clients qui ont effectué 3 répétitions ou plus (-7,3% à -30,3%) et pour ceux qui ont répété 0 répétition (-12,2%). Nous prévoyons également fortement sur 1 client fidèle (+ 19,7%).

Malgré des prévisions erronées à un niveau plus granulaire, il s'agit d'un très bon résultat, car nous nous intéressons au montant total prévu des transactions. Cependant, la validation croisée sur une seule période ne nous permet pas de comprendre à quoi nous attendre dans le futur. Est-ce que -6,3% est une erreur raisonnable à attendre dans le futur, ou s'agissait-il d'un coup incroyablement chanceux?

Pour mieux évaluer le modèle, nous allons effectuer une validation croisée sur plusieurs périodes, puis vérifier les erreurs de chaque période.
Pour cela, nous construisons simplement une boucle for qui itère la validation croisée sur plusieurs périodes.
En particulier, nous l'exécutons sur un ensemble de données comportant 6 années de transactions, où, pour chaque itération, nous échantillonnons un sous-ensemble de clients au cours de la période d'étalonnage sélectionnée de 2 ans et prévoyons un an de transactions futures. Ainsi, nous nous retrouvons avec 4 périodes croisées validées.
Nous traçons ensuite les résultats.

Comme vous pouvez le voir ci-dessous, l'erreur de prédiction pour chaque année a toujours été comprise entre 4,1% et -7,9%, 2018 étant l'année la mieux prédite (-2,3% d'erreur de prédiction). C'est plutôt bon, surtout par rapport aux modèles de cohortes classiques avec une erreur de prédiction absolue supérieure à 10%.

Prédictions des clients et historiques de probabilité

Une fois que vous avez construit le modèle et vérifié sa validité, vous pouvez facilement consulter les prévisions d'un client et leur probabilité d'être en vie.

Cela est extrêmement utile car vous pouvez ensuite utiliser la prévision CLV pour des activités de marketing, de prévision ou plus généralement de prévention du désabonnement.

Ci-dessous, par exemple, nous traçons la probabilité historique qu'un client soit en vie.

À partir du graphique, nous pouvons observer que dès que le client effectue chaque achat supplémentaire, sa probabilité d'être en vie augmente, puis recommence à baisser; mais à un rythme plus lent, car chaque nouvelle transaction augmente sa fréquence et sa récence.

Conclusion

Pour résumer, prévoir le CLV est toujours une tâche délicate et les modèles de fréquence historiques ne permettent généralement pas de différencier les clients ayant un nombre proche d’achats passés.
Les modèles probabilistes de Buy ’Til You Buy viennent à notre secours en nous permettant d’établir des prévisions assez précises en utilisant seulement les informations de 3 clients (fréquence, récence et âge d’un client).

Dans cet article, nous n’avons intentionnellement pas mentionné certains sujets importants liés au CLV, mais avant de vous laisser partir, laissez-moi vous laisser un bref commentaire sur trois d’entre eux:

  • Nous avions prédit les transactions futures, mais nous avons laissé de côté la partie «valeur» de l'équation de la juste valeur. Généralement, le sous-modèle Gamma-Gamma est utilisé en plus du modèle BG / NBD pour estimer la valeur monétaire des transactions.
  • Nous avons utilisé le modèle BG / NBD pour prédire les transactions futures globales, mais si vous envisagez d'agir au niveau de l'utilisateur, vous devez mesurer correctement la précision des prévisions relatives aux clients uniques.
  • Si le modèle ne convient pas à vos clients (et que les hypothèses sont raisonnables pour votre entreprise), envisager de l'ajuster sur les cohortes de clients (par exemple, ventilé par pays utilisateur), et / ou rejoindre avec un modèle linéaire avec des fonctionnalités supplémentaires (ex. visites du site Web d’un client, temps écoulé depuis la dernière visite, critiques de produits, canal d’acquisition, etc.).

Merci d'avoir lu et continuez à transformer le monde avec Data!

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close