Os dados estão relacionados com campanhas de marketing direto de uma instituição bancária portuguesa. As campanhas de marketing foram baseadas em chamadas telefônicas. Muitas vezes, mais de um contato com o mesmo cliente era necessário para verificar se o produto (term deposit) seria ou não contratado. Os dados foram encontrados no UC Irvine - Machine Learning Repository e disponibilizados por S. Moro, R. Laureano e P. Cortez.
Coluna | Descrição |
---|---|
age |
Idade |
job |
Profissão |
marital |
Estado civil |
education |
Nível de educação |
default |
Inadimplência (yes/no) |
balance |
Média de balanço anual |
housing |
Financiamento imobiliário (yes/no) |
loan |
Empréstimo pessoa (yes/no) |
contact |
Forma de contato |
day |
Dia do último contato no mês |
month |
Mês do último contato |
duration |
Duração das ligações em segundos |
campaign |
Número de contatos feitos durante esta campanha |
pdays |
Dias desde o contato em uma campanha anterior (-1 significa que não foi contatado) |
previous |
Número de contatos feitos em uma campanha anterior |
poutcome |
Resultado da última campanha |
y |
Sucesso dessa campanha (yes/no) |
- O arquivo
bank-full.csv
contém todos os exemplos, ordenados por data (de maio de 2008 à novembro de 2010). Este foi usado para treino. - O arquivo
bank.csv
contém 10% dos dados, escolhidos aleatoriamente do arquivo acima. Este foi utilizado para fazer as predições presentes neste arquivo .xlsx.
Os objetivos desse projeto são (1) fazer uma análise exploratória de dados para buscar insights para futuras campanhas, e (2) criar um modelo de Machine Learning para predizer o sucesso das campanhas a partir dos dados nesse conjunto.
- Clientes mais velhos tem maior probabilidade de aceite;
- Com segundo maior número de clientes dentro do banco, pessoas em cargos de gerência tem maior sucetividade a aceitar o term deposit, seguidos por técnicos e prestadores de serviços. Campanhas segmentadas a categórias profissionais podem trazer um bom resultado.
- Clientes adimplentes e sem crédito comprometido com empréstimos imobiliários ou pessoais tem maior probabilidade de aceitar os produtos, é interessante focar nestes clientes nas campanhas;
- O meio de contato mais efetivo é o celular;
- O segundo e o terceiro trimestre são os períodos de maior sucesso nas campanhas, e podem ser trabalhadas campanhas com um orçamento maior nestes meses. Em especial Maio-Abril e Julho-Agosto
- A média de tempo das ligações com resultado positivo é de 7,25 minutos, essa pode ser uma boa métrica para os colaboradores do telemarketing assim como o número de ligações que deve ser entre 2 e 7;
- Clientes com respostas positivas em campanhas anteriores tem tendência de aceitar ofertas em novas campanhas.
Portanto sugiro para as próximas campanhas:
- Iniciar por (1) clientes os contatos por clientes adimplentes e com crédito livre, (2) clientes que aceitaram o produtos na última campanha;
- Realizar entre de 2 a 7 ligações, e só voltar a ligar para clientes que passaram deste limite quando os contatos a todos forem concluídos dentro deste limite;
- Ao conseguir o contato, buscar alongar a ligação até no máximo 7 minutos, ao passar desse prazo de tempo as probabilidades de aceite diminuem;
- Criar campanhas segmentadas por profissões e tentar colocar elas no espaço de tempo com maior probabilidade de sucesso, como o périodo Julho-Agosto por exemplo.
Utilizando o LGBMClassifier atingi as seguintes métricas:
Métrica | Resultado |
---|---|
Log Loss | 0.2030 |
Accuracy | 0.9050 |
ROC AUC | 0.9290 |
- Pandas, NumPy, Scipy
- Seaborn, Matplotlib
- LightGBM, Scikit-learn, feature_engine, category_encoders
Existe um assimetria na distribuição da idade causada pela quantidade de clientes na terceira idade.
- O número de clientes acima dos 60 anos é 487, eles são 1.08% do total.
- A maioria dos clientes estão entre o meio de seus 30 anos e fim dos 40. Existe uma quantidade relavativamente baixa de idosos em relação ao restante.
No inglês "Blue-collar" se refere a empregos mais braçais, geralmente ligados a construção civil e prestação de serviços como operadores de máquinas, caminhoneiros, eletricistas e etc. Estes profissionais mais de 20% dos clientes do banco, seguidos por pessoas em cargos de gerência e técnicos.
Quase 70% dos clientes do banco não possuem uma graduação, o que se reflete na alta quantidade de prestadores de serviços e técnicos entre eles.
Como se tratam de dados bancários, é normal a existente de inviduos com saldos e balanços em valores muito maiores que a média.
O volume de contatos se acumula entre o fim do segundo trimestre o começo do segundo, sendo maio o mês com maior quantidade de contatos.
- A duração média das ligações é: 258.1630797814691
- A mediana da duração das ligações é: 180.0
- O desvio padrão da duração das ligações é: 257.52781226517095
Existe uma alta quantidade de outliers nas ligações, outra variável que precisa de uma limpeza prévia, uma ligação de 1000 segundos tem aproximadamente 16 minutos é um tempo longo de ligação. Em breve vamos ver a relação entre o tempo de ligação e o sucesso na assintura do term deposit.
- Média de ligações durante a campanha: 2.763840658246887
- Mediana de ligações durante a campanha: 2.0
- Desvio padrão do número de ligações: 3.0980208832802205
Essa é outra variável que sofre com outliers, e é um ponto de alerta, um cliente que recebe mais de 50 ligações sobre uma campanha pode se tornar alguém em ponto de churn ou um processo legal contra instituição.
A porcentagem de clientes que não foram contatados em campanhas anteriores: 81.74%
Acredito que a variável de número de contatos seja mais representativa que a de número de dias. A um volume alto de clientes não contatados, vamos ver se isso se confirma na variável de número de contatos.
A porcentagem de clientes que não foram contatados em campanhas anteriores: 81.74%
Vou preferir para o modelo de Machine Learning usar essa feature, e remover a anterior. Existe um alto volume de cliente não contatados, o que também mostra espaço de ação livre para oferta de produtos bancários.
A campanha tem uma taxa de sucesso de somente 11%.
Existe uma tendência no aceite do term deposit em clientes mais velhos.
Com segundo maior número de clientes dentro do banco, pessoas em cargos de gerência tem maior sucetividade a aceitar o term deposit, seguidos por técnicos e prestadores de serviços. É interessante buscar estes profissionais para oferta também de outros produtos.
Os outliers dificultam um pouco a visualização, vamos realizar a remoção dos outliers para checar a distribuição.
Assim podemos confirmar a baixa relação entre balanço anual, e o sucesso da campanha.
O segundo e o terceiro trimestre são os períodos de maior sucesso nas campanhas, e podem ser trabalhadas campanhas com um orçamento maior nestes meses. Em especial Maio-Abril e Julho-Agosto.
- A duração média de uma ligação com sucesso: 7.25 minutos
- A duração mínima de uma ligação com sucesso: 0.13 minutos
- A duração mínima de uma ligação com sucesso: 17.17 minutos
A média de 7 minutos pode se tornar uma métrica para o treinamento dos colabodores de telemarketing.
Novamente os outliers dificultam um pouco a interpretação, vamos observar sem eles.
- Número médio de ligações para um resultado positivo: 2.065754465982516.
- Número mínimo de ligações para um resultado positivo: 1.
- Número máximo de ligações para um resultado positivo: 12.
- Desvio padrão do número de ligações: 1.5776938358631944
Apesar do número máximo de ligações ser de 12, podemos usar como métrica uma quantidade de até 3 desvios padrões da média (como em uma distribuição normal) tornando 7 o máximo de ligações feitas a um cliente, podendo assim otimizar tempo e recursos do time de telemarketing.
Vou realizar uma limpeza de outliers para melhor visualização
Pessoas com maior número de contatos em campanhas anteriores tem maiores chances de aceitar o term deposit.
O modelo escolhido para este projeto foi LGBMClassifier da biblioteca LightGBM. Com ele atingi as seguintes métricas.
Métrica | Resultado |
---|---|
Log Loss | 0.1816 |
Accuracy | 0.9176 |
ROC AUC | 0.9487 |
Métrica | Resultado |
---|---|
Log Loss | 0.2030 |
Accuracy | 0.9050 |
ROC AUC | 0.9290 |