Dresser le profil et interpréter les segments

Segmentation de la clientèle en Python

Karolis Urbonas

Head of Data Science, Amazon

Approches pour créer des personas clients

  • Statistiques sommaires par cluster, p. ex. valeurs RFM moyennes
  • « Snake plots » (issus des études de marché)
  • Importance relative des attributs du cluster vs population
Segmentation de la clientèle en Python

Statistiques sommaires de chaque cluster

  • Exécutez k-means pour plusieurs valeurs de k autour de la valeur recommandée.
  • Créez une colonne d'étiquette de cluster dans le DataFrame original :

    datamart_rfm_k2 = datamart_rfm.assign(Cluster = cluster_labels)
    

    Calculez les valeurs RFM moyennes et la taille de chaque cluster :

    datamart_rfm_k2.groupby(['Cluster']).agg({
       'Recency': 'mean',
       'Frequency': 'mean',
       'MonetaryValue': ['mean', 'count'],
    }).round(0)
    
    • Répétez pour k=3
Segmentation de la clientèle en Python

Statistiques sommaires de chaque cluster

  • Comparez les valeurs RFM moyennes de chaque solution de regroupement
Segmentation de la clientèle en Python

« Snake plots » pour comprendre et comparer les segments

  • Technique d'étude de marché pour comparer des segments
  • Représentation visuelle des attributs de chaque segment
  • Normaliser d'abord les données (centrer et réduire)
  • Tracer les moyennes normalisées de chaque attribut par cluster
Segmentation de la clientèle en Python

Préparer les données pour un « snake plot »

Transformez datamart_normalized en DataFrame et ajoutez une colonne Cluster

datamart_normalized = pd.DataFrame(datamart_normalized, 
                                   index=datamart_rfm.index, 
                                   columns=datamart_rfm.columns)
datamart_normalized['Cluster'] = datamart_rfm_k3['Cluster']

Convertissez en format long pour stocker les valeurs RFM et noms de mesures dans 1 colonne chacun

datamart_melt = pd.melt(datamart_normalized.reset_index(), 
                    id_vars=['CustomerID', 'Cluster'],
                    value_vars=['Recency', 'Frequency', 'MonetaryValue'], 
                    var_name='Attribute', 
                    value_name='Value')
Segmentation de la clientèle en Python

Visualiser un « snake plot »

plt.title('Snake plot of standardized variables')
sns.lineplot(x="Attribute", y="Value", hue='Cluster', data=datamart_melt)

Segmentation de la clientèle en Python

Importance relative des attributs de segment

  • Technique utile pour cerner l'importance relative de chaque attribut de segment
  • Calculez la moyenne de chaque cluster
  • Calculez la moyenne de la population
  • Calculez le score d'importance en divisant puis en soustrayant 1 (assure 0 quand la moyenne du cluster égale celle de la population)
cluster_avg = datamart_rfm_k3.groupby(['Cluster']).mean()

population_avg = datamart_rfm.mean()
relative_imp = cluster_avg / population_avg - 1
Segmentation de la clientèle en Python

Analyser et tracer l'importance relative

  • Plus le ratio s'éloigne de 0, plus l'attribut est important pour le segment (vs pop. totale).
relative_imp.round(2)
         Recency  Frequency  MonetaryValue
Cluster                                   
0          -0.82       1.68           1.83
1           0.84      -0.84          -0.86
2          -0.15      -0.34          -0.42
# Plot heatmap
plt.figure(figsize=(8, 2))
plt.title('Relative importance of attributes')
sns.heatmap(data=relative_imp, annot=True, fmt='.2f', cmap='RdYlGn')
plt.show()
Segmentation de la clientèle en Python

Carte thermique de l'importance relative

         Recency  Frequency  MonetaryValue
Cluster                                   
0          -0.82       1.68           1.83
1           0.84      -0.84          -0.86
2          -0.15      -0.34          -0.42
Segmentation de la clientèle en Python

À vous d'expérimenter différentes méthodes de profilage client !

Segmentation de la clientèle en Python

Preparing Video For Download...