Analisando e determinando perfis de clientes com base em dados sintéticos de uma campanha de marketing
Projeto - Machine Learning II
Instrutor: Victor Brito
Equipe: Gabriel Miranda, Marcus Thadeu, Ruann Campos e Thiago Caveglion
- Analisar, de forma exploratória, os dados correspondentes a clientes provindos de uma campanha de marketing.
- Agrupar os clientes em diferentes perfis utilizando aprendizagem de máquina não-supervisionada (K-means).
- Predizer, com base nos perfis criados, as categorias nas quais possíveis novos clientes seriam classificados utilizando aprendizagem de máquina supervisionada (SVM e XGBoost).
O data set marketing_campaign.csv
utilizado em nossa análise apresenta informações sintéticas retiradas dessa base de dados do Kaggle. É um data set simulado contendo diversas informações de clientes que realizaram compras em uma campanha de marketing de uma empresa do ramo alimentício. As colunas do arquivo incluem:
-
ID
: identificador exclusivo do cliente -
Year_Birth
: Ano de nascimento do cliente -
Education
: nível de escolaridade do cliente -
Marital_Status
: estado civil do cliente -
Income
: renda familiar anual do cliente -
Kidhome
: Número de crianças na residência do cliente -
Teenhome
: Número de adolescentes na residência do cliente -
Dt_Customer
: Data de cadastro do cliente na empresa -
Recency
: número de dias desde a última compra do cliente -
Recover
: 1 se o cliente reclamou nos últimos 2 anos, 0 caso contrário -
MntWines
: Valor gasto em vinho nos últimos 2 anos -
MntFruits
: Valor gasto com frutas nos últimos 2 anos -
MntMeatProducts
: Valor gasto com carne nos últimos 2 anos -
MntFishProducts
: Valor gasto com pescado nos últimos 2 anos -
MntSweetProducts
: Valor gasto em doces nos últimos 2 anos -
MntGoldProds
: Valor gasto em ouro nos últimos 2 anos -
NumDealsPurchases
: Número de compras realizadas com desconto -
AcceptedCmp1
: 1 se o cliente aceitou a oferta na 1ª campanha, 0 caso contrário -
AcceptedCmp2
: 1 se o cliente aceitou a oferta na 2ª campanha, 0 caso contrário -
AcceptedCmp3
: 1 se o cliente aceitou a oferta na 3ª campanha, 0 caso contrário -
AcceptedCmp4
: 1 se o cliente aceitou a oferta na 4ª campanha, 0 caso contrário -
AcceptedCmp5
: 1 se o cliente aceitou a oferta na 5ª campanha, 0 caso contrário -
Response
: 1 se o cliente aceitou a oferta na última campanha, 0 caso contrário -
NumWebPurchases
: Quantidade de compras realizadas pelo site da empresa -
NumCatalogPurchases
: Número de compras feitas usando um catálogo -
NumStorePurchases
: Número de compras feitas diretamente nas lojas -
NumWebVisitsMonth
: Número de visitas ao site da empresa no último mês
- Utilizando o K-means, fomos capazes de clusterizar nossos clientes em quatro perfis distintos.
- Cluster 0 - "Estabilidade Moderada": Maior população, adultos com estabilidade econômica moderada, preferem compras em lojas físicas, menos influenciados por campanhas, mas visitam sites.
- Cluster 1 - "Prosperidade, Pouco Interesse em Descontos": Grupo mais próspero, adultos mais velhos, menos sensíveis a descontos, preferem produtos de ouro, impactados por campanhas (1 e 5), menos propensos a visitar sites.
- Cluster 2 - "Diversidade de Compra": Segunda maior população, comportamento de compra diversificado, influência moderada por campanhas, gastos significativos em vinhos, compras em lojas físicas e online, visitam sites e usam descontos.
- Cluster 3 - "População Idosa Online": População idosa, equilíbrio graduados/pós-graduados, terceira maior renda, menos impactada por campanhas, gastos em vinhos, compra online, visita sites e usa descontos.
- Tanto o modelo de SVM quanto o de XGBoost utilizados apresentaram um ótimo desempenho no que diz respeito à predição de perfis de clientes.
Limitações:
- O fato de se tratar de um dataset fictício, que apresentou um ótimo desempenho para uma clusterização de 4 classes, nos indica que essa pode ter sido a intenção inicial de seus autores. Dessa forma, os dados foram provavelmente direcionados de forma proposital para se encaixarem nesses perfis, enviezando nossos modelos de predição, o que implicou na obtenção de ótimas métricas de avaliação. Reconhecemos que esse cenário ideal está longe da realidade.
- Python
- Pandas
- Numpy
- Seaborn
- Plotly
- Matplotlib
- Sklearn
Para executar os notebooks localmente, certifique-se de:
- Fazer o download do arquivo
marketing_campaign.csv
neste link do Kaggle ou pegar diretamente deste repositório. - Seguindo o notebook
01-eda_kmeans.ipynb
, explorar os dados do data set, realizar a clusterização e obter o data setdataset_cluster.csv
. - O arquivo
dataset_cluster.csv
diz respeito ao data set utilizado diretamente no notebook02-analise-perfis.ipynb
(onde detalhamos os perfis criados) e nos notebooks03-svm.ipynb
e04-xgboost.ipynb
, onde aplicamos nossos modelos de predição. - Atenção: lembre-se de alterar o caminho nas linhas de código que lêem os data sets em seus respectivos notebooks.