Perfilar e interpretar segmentos

Segmentação de Clientes em Python

Karolis Urbonas

Head of Data Science, Amazon

Abordagens para criar personas de clientes

  • Estatísticas resumo por cluster, ex.: médias de RFM
  • Snake plots (de pesquisa de mercado)
  • Importância relativa dos atributos do cluster vs. população
Segmentação de Clientes em Python

Estatísticas resumo de cada cluster

  • Rode k-means para vários valores de k perto do recomendado.
  • Crie a coluna de rótulo do cluster no DataFrame original:

    datamart_rfm_k2 = datamart_rfm.assign(Cluster = cluster_labels)
    

    Calcule médias de RFM e tamanhos por cluster:

    datamart_rfm_k2.groupby(['Cluster']).agg({
       'Recency': 'mean',
       'Frequency': 'mean',
       'MonetaryValue': ['mean', 'count'],
    }).round(0)
    
    • Repita para k=3
Segmentação de Clientes em Python

Estatísticas resumo de cada cluster

  • Compare as médias de RFM de cada solução de clustering
Segmentação de Clientes em Python

Snake plots para entender e comparar segmentos

  • Técnica de pesquisa de mercado para comparar segmentos
  • Visualização dos atributos de cada segmento
  • Primeiro normalize os dados (centralize e escale)
  • Plote as médias normalizadas de cada atributo por cluster
Segmentação de Clientes em Python

Preparar dados para um snake plot

Transforme datamart_normalized em DataFrame e adicione a coluna Cluster

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

Derreta os dados para formato longo, com valores de RFM e nomes das métricas em 1 coluna cada

datamart_melt = pd.melt(datamart_normalized.reset_index(), 
                    id_vars=['CustomerID', 'Cluster'],
                    value_vars=['Recency', 'Frequency', 'MonetaryValue'], 
                    var_name='Attribute', 
                    value_name='Value')
Segmentação de Clientes em Python

Visualizar um snake plot

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

Segmentação de Clientes em Python

Importância relativa dos atributos do segmento

  • Técnica útil para ver a importância relativa de cada atributo do segmento
  • Calcule as médias de cada cluster
  • Calcule as médias da população
  • Calcule o score de importância dividindo e subtraindo 1 (dá 0 quando a média do cluster = da população)
cluster_avg = datamart_rfm_k3.groupby(['Cluster']).mean()

population_avg = datamart_rfm.mean()
relative_imp = cluster_avg / population_avg - 1
Segmentação de Clientes em Python

Analisar e plotar a importância relativa

  • Quanto mais o razão se afasta de 0, maior a importância do atributo no segmento (vs. população).
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()
Segmentação de Clientes em Python

Mapa de calor de importância relativa

         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
Segmentação de Clientes em Python

Hora de testar diferentes técnicas de perfil de cliente!

Segmentação de Clientes em Python

Preparing Video For Download...