Segmentation RFM (Récence, Fréquence, Montant)

Customer Segmentation in Python

Karolis Urbonas

Head of Data Science, Amazon

Qu’est-ce que la segmentation RFM ?

Segmentation comportementale des clients selon trois métriques :

  • Récence (R)
  • Fréquence (F)
  • Montant (M)
Customer Segmentation in Python

Regrouper les valeurs RFM

Les valeurs RFM peuvent être groupées de plusieurs façons :

  • Percentiles, p. ex. quantiles
  • Coupure de Pareto 80/20
  • Personnalisé — selon la connaissance métier

Nous allons appliquer un groupement par percentiles.

Customer Segmentation in Python

Rappel sur les percentiles

Processus de calcul des percentiles :

  1. Trier les clients selon cette métrique
  2. Les répartir en un nombre prédéfini de groupes de taille égale
  3. Attribuer un libellé à chaque groupe
Customer Segmentation in Python

Calculer des percentiles avec Python

Données avec huit CustomerID et des valeurs Spend générées aléatoirement.

dummy_percentile_data

Customer Segmentation in Python

Calculer des percentiles avec Python

spend_quartiles = pd.qcut(data['Spend'], q=4, labels=range(1,5))

data['Spend_Quartile'] = spend_quartiles
data.sort_values('Spend')

Customer Segmentation in Python

Attribuer des libellés

  • Score le plus élevé pour la meilleure métrique — la meilleure n’est pas toujours la plus élevée (ex. récence)
  • Ici, le libellé est inversé — plus le client est récent, mieux c’est

Customer Segmentation in Python

Attribuer des libellés

# Créer des libellés numérotés
r_labels = list(range(4, 0, -1))

# Diviser en groupes selon les quartiles recency_quartiles = pd.qcut(data['Recency_Days'], q=4, labels=r_labels)
# Créer une nouvelle colonne data['Recency_Quartile'] = recency_quartiles
# Trier la récence du plus faible au plus élevé data.sort_values('Recency_Days')
Customer Segmentation in Python

Attribuer des libellés

Comme vous le voyez, les libellés de quartile sont inversés, car les clients plus récents ont plus de valeur.

recency_quartiles

Customer Segmentation in Python

Libellés personnalisés

Nous pouvons définir une liste de chaînes ou d’autres valeurs, selon le cas d’usage.

# Créer des libellés texte
r_labels = ['Actif', 'En sommeil', 'Inactif', 'Perdu']

# Diviser en groupes selon les quartiles recency_quartiles = pd.qcut(data['Recency_Days'], q=4, labels=r_labels) # Créer une nouvelle colonne data['Recency_Quartile'] = recency_quartiles # Trier du plus faible au plus élevé data.sort_values('Recency_Days')
Customer Segmentation in Python

Libellés personnalisés

Libellés personnalisés attribués à chaque quartile

Recency_quartiles

Customer Segmentation in Python

Passons à la pratique !

Customer Segmentation in Python

Preparing Video For Download...