Profilování a interpretace segmentů

Segmentace zákazníků v Pythonu

Karolis Urbonas

Head of Data Science, Amazon

Přístupy k tvorbě zákaznických person

  • Souhrnné statistiky každého clusteru, např. průměrné hodnoty RFM
  • Hadí grafy (z výzkumu trhu)
  • Relativní důležitost atributů clusteru vůči populaci
Segmentace zákazníků v Pythonu

Souhrnné statistiky každého clusteru

  • Spusťte k-means segmentaci pro několik hodnot k v okolí doporučené hodnoty.
  • Vytvořte sloupec s označením clusteru v původním DataFrame:

    datamart_rfm_k2 = datamart_rfm.assign(Cluster = cluster_labels)
    

    Vypočítejte průměrné hodnoty RFM a velikosti každého clusteru:

    datamart_rfm_k2.groupby(['Cluster']).agg({
       'Recency': 'mean',
       'Frequency': 'mean',
       'MonetaryValue': ['mean', 'count'],
    }).round(0)
    
    • Opakujte totéž pro k=3
Segmentace zákazníků v Pythonu

Souhrnné statistiky každého clusteru

  • Porovnejte průměrné hodnoty RFM každého řešení clusterování
Segmentace zákazníků v Pythonu

Hadí grafy pro pochopení a porovnání segmentů

  • Technika výzkumu trhu pro porovnání různých segmentů
  • Vizuální znázornění atributů každého segmentu
  • Nejprve je nutné normalizovat data (centrovat a škálovat)
  • Vynesení průměrných normalizovaných hodnot každého atributu pro každý cluster
Segmentace zákazníků v Pythonu

Příprava dat pro hadí graf

Transformujte datamart_normalized na DataFrame a přidejte sloupec Cluster

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

Přeformátujte data do dlouhého formátu, aby byly hodnoty RFM a názvy metrik uloženy každý v jednom sloupci

datamart_melt = pd.melt(datamart_normalized.reset_index(), 
                    id_vars=['CustomerID', 'Cluster'],
                    value_vars=['Recency', 'Frequency', 'MonetaryValue'], 
                    var_name='Attribute', 
                    value_name='Value')
Segmentace zákazníků v Pythonu

Vizualizace hadího grafu

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

Segmentace zákazníků v Pythonu

Relativní důležitost atributů segmentu

  • Užitečná technika pro identifikaci relativní důležitosti atributů každého segmentu
  • Výpočet průměrných hodnot každého clusteru
  • Výpočet průměrných hodnot populace
  • Výpočet skóre důležitosti podělením a odečtením 1 (zajišťuje vrácení 0, pokud se průměr clusteru rovná průměru populace)
cluster_avg = datamart_rfm_k3.groupby(['Cluster']).mean()

population_avg = datamart_rfm.mean()
relative_imp = cluster_avg / population_avg - 1
Segmentace zákazníků v Pythonu

Analýza a vizualizace relativní důležitosti

  • Čím více se poměr odchyluje od 0, tím větší je důležitost atributu pro daný segment (vůči celkové populaci).
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()
Segmentace zákazníků v Pythonu

Heatmapa relativní důležitosti

         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
Segmentace zákazníků v Pythonu

Vyzkoušejte různé techniky profilování zákazníků!

Segmentace zákazníků v Pythonu

Preparing Video For Download...