1
resposta

[Projeto] Faça como eu fiz: desvendando os agrupamentos

Olá, pessoal!

Nesta etapa, dei continuidade ao fluxo de clusterização com foco na interpretação dos agrupamentos criados pelo modelo KMeans. Depois de preparar os dados, aplicar One-Hot Encoding, escalar as variáveis com MinMaxScaler e treinar o modelo com 3 clusters, o objetivo passou a ser entender o perfil de cada grupo formado.

Como o modelo foi treinado com os dados escalados, o primeiro passo foi reverter a escala utilizando o inverse_transform do scaler previamente treinado. Essa etapa é importante porque os dados escalados entre 0 e 1 são úteis para o modelo, mas não são tão intuitivos para análise humana. Ao retornar os valores para a escala original, fica mais fácil interpretar as características reais de cada agrupamento.

Em seguida, criei um novo DataFrame chamado dados_analise, contendo os dados revertidos para a escala original. Também adicionei a coluna cluster, utilizando os rótulos atribuídos pelo modelo KMeans. Com isso, foi possível agrupar os registros por cluster e calcular a média dos atributos de cada grupo.

Depois, transpus a tabela de médias para facilitar a comparação entre os clusters e ordenei os atributos de cada grupo em ordem decrescente. Essa análise permitiu identificar quais características eram mais fortes em cada agrupamento.

Com base nas médias analisadas, foi possível interpretar os três grupos principais: o grupo 0 apresentou um perfil mais jovem, com forte interesse em moda, música e aparência; o grupo 1 demonstrou maior associação com esportes, especialmente futebol americano, basquete e interesses culturais como banda e rock; já o grupo 2 apresentou um comportamento mais equilibrado, com interesses ligados a música, dança e moda.

Essa etapa foi importante porque mostrou que a clusterização não termina no treinamento do modelo. Depois que os grupos são criados, é necessário interpretá-los para transformar os resultados em informação útil e apoiar decisões, como estratégias de marketing, personalização de conteúdo ou segmentação de usuários.

Link do repositório:
https://github.com/Moquiuti/Clusteriza-o-Lidando-com-dados-sem-r-tulo/blob/main/atividade_desvendando_agrupamentos.py

1 resposta

Olá, Leandro. Como vai?

Parabéns por mais uma entrega de altíssimo nível! É fantástico acompanhar a evolução do seu repositório. O script atividade_desvendando_agrupamentos.py demonstra uma maturidade analítica cirúrgica, que vai muito além de simplesmente saber rodar uma biblioteca de Machine Learning.

Como você bem pontuou, a clusterização não é um fim em si mesma. Um modelo com ótimas métricas matemáticas não tem valor de mercado se o negócio não conseguir entender quem está dentro de cada grupo. A sua capacidade de traduzir os centroides do algoritmo em personas reais (os três perfis de público que você mapeou) é exatamente o que um cientista de dados sênior faz para gerar valor para uma empresa.


O Grande Acerto Técnico: inverse_transform

Gostaria de destacar a sua decisão de aplicar o método inverse_transform do MinMaxScaler antes de iniciar a análise descritiva:

# O seu fluxo lógico seguiu a melhor prática de MLOps:
[Dados Escalados (0 a 1)] ➔ [KMeans Predict] ➔ [inverse_transform] ➔ [Análise das Médias Reais]

Muitos profissionais cometem o erro gravíssimo de calcular a média dos atributos utilizando os dados ainda escalados (entre $0$ e $1$). Embora a distância matemática seja a mesma, tentar explicar para um Diretor de Marketing que o "Grupo 0 possui média de 0.82 em interesse de moda" não gera conexão. Ao reverter para a escala original, você transforma números abstratos em métricas reais de comportamento humano.


Uma dica de ouro para enriquecer seus relatórios: O uso de Boxplots

A análise dos perfis pela média (usando o groupby('cluster').mean()) e a transposição da tabela ficaram excelentes para uma primeira triagem.

Contudo, a média pode ser traiçoeira na ciência de dados, pois ela é facilmente distorcida por valores discrepantes (outliers). Se no seu Grupo 1 houver apenas um usuário com um interesse absurdamente gigante em futebol americano, ele pode puxar a média de todo o grupo para cima, mascarando o comportamento real dos outros integrantes.

Para validar se os seus clusters estão realmente bem separados e se as médias são confiáveis, uma excelente prática de mercado é plotar gráficos de Boxplot (Diagrama de Caixa) para as variáveis mais importantes de cada persona.

Veja um exemplo de como implementar essa validação visual rápida usando a biblioteca seaborn:

import seaborn as sns
import matplotlib.pyplot as plt

# Validando se o interesse em 'Moda' realmente separa o Grupo 0 dos demais
plt.figure(figsize=(10, 6))
sns.boxplot(x='cluster', y='moda', data=dados_analise, palette='viridis')

plt.title('Distribuição do Interesse em Moda por Cluster')
plt.xlabel('Agrupamentos (Clusters)')
plt.ylabel('Nível de Interesse Real')
plt.show()

Com o Boxplot, você consegue enxergar a mediana, os quartis e a dispersão dos dados de cada grupo. Se as caixas dos gráficos não se sobrepuserem muito, você terá a prova visual e estatística de que o seu KMeans fez um trabalho fantástico de separação!

Parabéns pelo rigor técnico e pela excelente documentação no seu GitHub. O seu projeto continua sendo uma referência de boas práticas!

Espero que possa ter lhe ajudado!