Publicado em 05/01/2024.

apresentação

O objetivo do projeto é desenvolver um sistema de previsão de churn para clientes de um banco, aplicando técnicas de machine learning e análise preditiva, com o objetivo de identificar padrões de comportamento que posso indicar a probabilidade de um cliente encerrar sua relação com o banco. O projeto visa melhorar a retenção de clientes, antecipando possíveis desistências e permitindo a implementação de estratégias proativas para mitigar o churn, promovendo a satisfação do cliente e garantindo a estabilidade e crescimento do negócio.

Os arquivos e códigos do projeto estão disponíveis no repositório Github.com. Já a aplicação está disponível clicando na imagem abaixo.

sobre a base de dados

O dataset utilizado neste projeto foi o Churn for Bank Customers, que esta disponível na plataforma Kaggle.com.

contextualização

Diante da crescente competitividade no setor bancário, a retenção de clientes emerge como uma prioridade estratégica essencial para assegurar a sustentabilidade e expansão das instituições. O fenômeno conhecido como churn, caracterizado pela perda de clientes para concorrentes ou pelo encerramento voluntário da relação bancária, apresenta-se como um desafio significativo e preocupante. Como medida para solucionar essa questão, as instituições estão recorrendo às suas equipes de dados para desenvolver projetos que permitam a previsão do churn.

Nesse contexto, uma instituição específica procurou a sua equipe de dados para analisar e criar uma solução que capacitasse a equipe de negócios a antecipar a saída dos clientes, visando reduzir a taxa de churn e aumentar a taxa de retenção.

desenvolvimento do projeto

Para melhor organização e desenvolvimento da solução, o projeto foi segmentado em fases, conforme indicado no checklist abaixo, que compreende as seguintes etapas:

Exploração e Análise dos Dados.

Balanceamento e Pré-processamento de Dados.

Modelagem Preditiva.

Validação do Modelo.

Implementação em Produção.

Abaixo esta o fluxo de trabalho do projeto.

Exploração e Análise dos Dados

Iniciamos o processo com a exploração e análise dos dados, no entanto, é crucial compreender as características do conjunto de dados. Abaixo, apresentamos uma descrição detalhada desses dados.

Agora que já sabemos a descrição de cada variável podemos prosseguir com a exploração dos dados. Suas variáveis são:

'RowNumber', 'CustomerId', 'Surname', 'CreditScore', 'Geography','Gender', 'Age', 'Tenure', 'Balance', 'NumOfProducts', 'HasCrCard','IsActiveMember', 'EstimatedSalary', 'Exited'.

As dimensões são 10.000 linhas e 14 colunas, não foram encontrados dados faltantes nem nulos e quanto a dados únicos, observamos o seguinte :

RowNumber          10000

CustomerId         10000

Surname             2932

CreditScore          460

Geography              3

Gender                 2

Age                   70

Tenure                11

Balance             6382

NumOfProducts          4

HasCrCard              2

IsActiveMember         2

EstimatedSalary     9999

Exited                 2

A fim de obtermos uma visão estatística abrangente dos dados, utilizamos o método describe da biblioteca pandas. Esse método proporciona uma visão geral das variáveis numéricas relevantes para a análise, como apresentado na tabela abaixo.

A análise das variáveis numéricas na tabela de estatística descritiva da base de dados oferece insights valiosos. Os clientes, em média, apresentam um score de crédito de 650 pontos, com variação entre 350 e 850.

A média de idade é de 39 anos, variando de 18 a 92 anos. O tempo médio de relacionamento dos clientes com o banco é de 5 anos, atingindo no máximo 10 anos. A média do saldo bancário é de 76.485, e aproximadamente 70% dos clientes possuem cartão de crédito, enquanto 51% são considerados ativos.

Além disso, a estimativa média de salário é de 100.090. Destaca-se que 20% dos clientes encerraram sua relação com o banco, indicando uma porcentagem significativa de churn. Essas métricas proporcionam uma visão abrangente do perfil e comportamento dos clientes na base de dados analisada.

Observando a Distribuição dos dados da Variável Alvo

Vamos observar o gráfico de distribuição abaixo.

A variável "Exited" possui duas categorias distintas: 0, indicando que o indivíduo é um cliente ativo, e 1, indicando que o mesmo não faz mais parte da base de clientes. A análise revela que, atualmente, 7.963 indivíduos permanecem como clientes, enquanto 2.037 optaram por encerrar sua relação com a empresa.

Essa constatação sugere que a organização ainda consegue reter uma parte considerável de seus clientes, mas enfrenta a perda de uma quantidade significativa, o que tem um impacto direto nos indicadores financeiros da instituição. Essa dinâmica ressalta a importância de estratégias eficientes de retenção e fidelização para otimizar o desempenho financeiro da empresa

Conforme o gráfico a seguir, podemos constatar que a taxa de churn, representando os clientes que encerraram sua relação com a empresa, é de 20.4%. Isso significa que 79.6% dos clientes conseguiram ser retidos

Clientes com Risco de Churn pela Pontuação de Crédito

O gráfico de histograma a seguir, revela uma assimetria à direita, sugerindo que a maioria dos clientes que encerraram sua relação com o banco possuía uma pontuação de crédito elevada. Além disso, nota-se que a faixa de clientes com pontuação entre 600 e 700 pontos apresentou um maior número de saídas.

Distribuição de Status de Clientes Por País

Ao analisar os dados de distribuição de clientes por país, percebemos que a Alemanha registra a maior incidência de saída de clientes. Dos 2.509 clientes na região, aproximadamente 814 optaram por encerrar sua relação com a instituição, enquanto 1.695 ainda mantêm vínculo ativo. Isso representa uma taxa de churn de 32.44%. Para melhorar o entendimento, abaixo está o gráfico demonstrando os dados citados anteriormente.

Clientes Por Gênero

Observando o gráfico abaixo, percebemos que entre os clientes autodeclarados como do gênero feminino, que totalizam 4.543, aproximadamente 1.139 encerraram sua relação com o banco. Em termos percentuais, isso representa uma taxa de churn de 25.07% no público feminino. Esses números destacam a importância de estratégias específicas de retenção voltadas para esse segmento, visando preservar e fortalecer a base de clientes femininos da instituição.

Distribuição de Status de Clientes Por Idade

Analisando os dois gráficos a seguir, fica evidente que os clientes com idades entre 40 e 50 anos têm uma propensão maior a encerrar sua relação com a instituição, enquanto aqueles com idades entre 30 e 40 anos constituem a maioria dos clientes que permanecem retidos.

Taxa de Churn de Anos em que o Cliente é Cliente do Banco

Observando o gráfico abaixo, percebemos que a duração do relacionamento do cliente com a instituição aparenta não ter uma influência significativa na taxa de churn. No entanto, destaca-se que há uma leve elevação na taxa de churn para clientes que possuem entre 0 e 1 ano de vínculo com a empresa.

Distribuição de Status dos Clientes Por Saldo Bancário

Ao examinar ambos os gráficos a seguir, nota-se que os clientes em churn possuem um saldo bancário mais elevado em comparação com aqueles que permaneceram, alcançando valores de até 250.000. Por outro lado, a maioria dos clientes que encerraram sua relação com o banco apresenta saldos predominantemente na faixa de 100.000 a 150.000.

Taxa de Churn pela Quantidade de Produtos

Conforme o gráfico abaixo, observamos que os clientes que adquirem no máximo 2 produtos apresentam uma taxa de churn de apenas 7.58%, consideravelmente menor em comparação com a taxa de churn para clientes que contratam 3 produtos, a qual atinge 82.71%. A situação é ainda mais evidente para aqueles que optam por 4 produtos, onde a taxa de churn atinge 100%. Esses dados indicam claramente que à medida que o número de produtos contratados aumenta, a probabilidade de ocorrência do churn também cresce significativamente.

Distribuição de Clientes que Tem ou Não Cartão de Crédito

Ao examinar o gráfico, constatamos que a posse ou a ausência de um cartão de crédito não parece influenciar na decisão de deixar a instituição, uma vez que ambos os grupos apresentam uma taxa de churn semelhante de 20%.

Taxa de Churn Por Clientes Ativos e Inativos

Observa-se que a taxa de churn para clientes inativos é de 26.85%, em comparação com os ativos, que registram uma taxa de 14.27%. Portanto, é evidente que os clientes inativos têm a maior taxa de churn.

Distribuição dos Clientes Por Estimativa de Salário

Por fim, analisando o gráfico de estimativa de salário, percebemos que aparentemente não exerce influência na taxa de churn dos clientes do banco.

Pré-processamento dos Dados

Vamos balancear os dados da variável 'Exited' que identificamos que estão desbalanceados, logo depois iremos dividi a base de dados, 'X' para os atributos e 'Y' para o objetivo. Para garantir a eficácia dos algoritmos de machine learning, realizaremos a conversão de atributos categóricos de string para valores numéricos, utilizando a técnica OneHotEncoder. Isso evita que o algoritmo atribua pesos desproporcionais aos atributos. Além disso, aplicaremos o escalonamento dos valores com o uso do StandardScaler para padronizar os atributos na mesma escala, garantindo uma análise mais consistente. Por fim, vamos salvar a base processada para ser usada nos modelos de machine learning.

Balanceamento dos Dados

Aplicaremos o método de resample para nivelar os atributos na classe minoritária em relação à classe majoritária.

Após o processo de balanceamento dos dados temos a seguinte distribuição:

Ao término do processo de manipulação dos dados, obtivemos uma base composta por 15.926 linhas e 18 colunas, distribuídas na proporção de 70/30. Isso significa que 70% da base foi alocada para o treinamento do modelo, enquanto os restantes 30% foram reservados para os conjuntos de teste, garantindo uma abordagem eficiente na avaliação da performance do modelo.

Machine Learning

Utilizaremos três algoritmos distintos para avaliar qual deles se destaca como o mais eficaz, eles são:

A estratégia adotada envolve a implementação da técnica de validação cruzada para avaliar o desempenho dos três algoritmos. Para a avaliação de cada modelo, serão aplicadas as seguintes métricas:

Ao término do processo, os valores obtidos por cada modelo serão analisados.

Análise dos Resultados

Os modelos treinados exibem uma distribuição normal. Isso indica que as previsões tendem a se agrupar em torno da média, proporcionando uma compreensão visual da consistência e padrões de comportamento dos modelos em diferentes conjuntos de dados.

Analisando os resultados dos modelos sobre as métricas de avaliação usadas:

O modelo Random Forest alcançou a maior taxa, 93.48%, indicando uma alta taxa geral de classificação correta. Por outro lado os modelos SVM e RNA tiveram acurácias de 80.11% e 81.37% respectivamente, sugerindo uma menor precisão global.


O modelo Random Forest apresentou uma precisão de 90.84%, isso destaca a capacidade deste modelo em minimizar falsos positivos, já os modelos SVM e RNA apresentaram respectivamente 80.84% e 81.64%, indicando uma menor capacidade de minimizar falsos positivos.


O Random Forest apresentou 96.62% de recall, sugerindo que o modelo tem uma boa habilidade em identificar verdadeiros positivos. Já os modelos SVM e RNA obtiveram uma pontuação muito abaixo sendo respectivamente 78.59% e 80.70%, indicando baixa capacidade em identificar os verdadeiros positivos.

O Random Forest se destaca pelas altas pontuações nas métricas, sendo assim, é a melhor opção dentre os três algoritmos.


Teste de Hipóteses ANOVA e Tukey

ANOVA

O teste ANOVA unidirecional avalia a hipótese nula entre dois ou mais grupos que possuem médias populacionais idênticas. Essa análise é aplicada a amostras provenientes de dois ou mais grupos, podendo apresentar tamanhos amostrais distintos. 

O resultado do teste após sua aplicação foi que, os dados de performance obtidos na análise anterior são diferentes, ou seja a hipótese nula foi rejeitada.

Tukey

O teste de Tukey desempenha uma análise de comparação entre pares de médias em um conjunto de amostras. Especificamente, ele é utilizado para identificar diferenças significativas entre as médias de diferentes grupos, permitindo uma avaliação mais aprofundada das disparidades existentes no conjunto de dados. Essa abordagem é valiosa para destacar de maneira precisa as divergências entre grupos específicos, contribuindo para uma interpretação mais refinada dos resultados.

Após realizar o teste de Tukey nas métricas de acurácia derivadas da aplicação de diversos algoritmos ao conjunto de dados, fica evidente a presença de uma notável discrepância no desempenho entre esses algoritmos.

A análise visual destaca o Random Forest como um destaque significativo, enquanto, em contraste, a SVM demonstra o desempenho mais modesto nesse cenário específico. Diante dessa constatação, a decisão de implementar o algoritmo Random Forest é plenamente respaldada pela análise estatística, reforçando sua eficácia superior em relação aos outros algoritmos considerados.

Tuning dos Hiperparâmetros

Agora que decidimos qual modelo aplicar, é hora de efetuar alguns ajustes. Inicialmente, o modelo RandomForest foi executado com suas configurações padrão. A fim de otimizar os resultados, procederemos com uma sintonia fina nos hiperparâmetros por meio da técnica de Grid Search, focando nos seguintes parâmetros:

parametros = {

    'criterion':['gini', 'entropy'],

    'n_estimators':[10, 50, 100, 200],

    'min_samples_split':[2, 5, 10],

    'min_samples_leaf':[1, 5, 10]

}

A melhor configuração para o algoritmo Random Forest para esse cenário é:

E apresentou uma precisão de 94.98%.

Criando Modelo e avaliando com as novas Definições

Modelo criado usando o código abaixo:

modelo = RandomForestClassifier(criterion='gini', n_estimators=100, min_samples_split=2,

                                min_samples_leaf=1, random_state=1)

modelo.fit(x_treino, y_treino)

Criando previsões usando o código:

previsoes = modelo.predict(x_teste)

Agora podemos avaliar o modelo criado antes de salva-lo. Começamos com a acurácia que apresentou uma taxa de 94%.

Na matriz de confusão, notamos que o modelo acertou a classificação de 2.117 registros como (0), indicando que esses clientes não deixaram de ser clientes. No entanto, houve 233 casos em que o modelo errou essa classificação. Quanto aos registros de clientes que deixaram de ser clientes (1), o modelo acertou a classificação de 2.352 registros e errou a classificação de apenas 76.

              precision    recall  f1-score   support


           0       0.97      0.90      0.93      2350

           1       0.91      0.97      0.94      2428


    accuracy                           0.94      4778

   macro avg       0.94      0.93      0.94      4778

weighted avg       0.94      0.94      0.94      4778

Ao analisar os dados provenientes do 'classification_report', observamos os seguintes resultados:

Em relação aos clientes que permanecem, 97% dos casos classificados como tal foram corretamente identificados, enquanto 91% dos casos classificados como "churn" realmente correspondiam a essa categoria.


O modelo acertou identificando 90% dos casos em que não há risco de "churn" e alcançou uma taxa de 97% de acertos na identificação dos casos em que há risco de "churn".

Essas métricas oferecem uma compreensão abrangente do desempenho do modelo. De maneira geral, o modelo demonstra uma habilidade sólida em distinguir entre as duas classes, apresentando valores elevados de precisão, recall e f1-score. A acurácia global atinge 94%, indicando um desempenho consistente na classificação do conjunto de dados.

Analisando os Pesos das Variáveis

Os dados gerados pelo método 'feature_importances_' fornecem insights sobre a importância relativa de cada atributo no processo de tomada de decisões do modelo. Cada atributo é associado a um peso, indicando a contribuição proporcional para a capacidade preditiva do modelo. Quanto maior o peso, mais influente é o atributo na previsão do resultado.

Interpretando esses dados, podemos destacar alguns pontos-chave:

A análise das importâncias das características permite uma compreensão mais profunda de como o modelo utiliza cada atributo para realizar previsões.


Probabilidade de Churn Entre os Clientes

Por fim, a forma mais eficaz de aplicar esse modelo é associar a probabilidade de evasão a cliente, assim será possivel segmentar essas probabilidades e possibilide de desenvolvimento de estratégias.

  CustomerId Probabilidade

0 15634602 63.0

1 15647311 33.0

2 15619304 98.0

3 15701354 38.0

4 15737888 5.0

... ... ...

9995 15606229 8.0

9996 15569892 19.0

9997 15584532 21.0

9998 15682355 69.0

9999 15628319 46.0


10000 rows × 2 columns

Com as informações sobre a probabilidade de "churn" para cada cliente, torna-se possível desenvolver estratégias para reter esses clientes. 

Implementação do Modelo na Aplicação

O deploy da aplicação foi realizado na Streamlit Community Cloud, que é uma plataforma aberta e gratuita para a comunidade implementar, descobrir e partilhar aplicações e código Streamlit entre si.

O aplicativo desenvolvido constitui uma solução web criada para facilitar a identificação de clientes propensos a churn, utilizando técnicas de machine learning. Visando proporcionar uma análise ágil e precisa, busca automatizar esse processo, agilizando a tomada de decisões para intervenções mais rápidas junto aos clientes em risco de deixar a empresa.

Benefícios da Aplicação

Visualização dos Elementos do App

A seguir algumas imagens da aplicação desenvolvida para análise e previsão de churn dos clientes.

CONCLUSÃO

Em conclusão, o projeto de "Análise de Churn" revelou-se um sucesso ao empregar o algoritmo Random Forest, o qual demonstrou uma notável precisão de 94%. Diante de uma taxa de churn inicial de 20%, a aplicação eficaz desse modelo oferece insights valiosos e a capacidade de identificar padrões complexos nos dados. O projeto proporcionou uma ferramenta confiável para antecipar e mitigar a perda de clientes. A alta precisão alcançada valida a escolha do algoritmo, destacando a sua eficácia na identificação de potenciais casos de churn. Este êxito não apenas fortalece a compreensão da dinâmica dos clientes, mas também oferece uma base sólida para estratégias proativas de retenção, contribuindo assim para a sustentabilidade e crescimento do negócio.