GithubHelp home page GithubHelp logo

sarahbarbosa / churn-prediction Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 10.98 MB

Análise e previsão de churn de uma empresa do ramo de telecomunicações.

License: MIT License

Jupyter Notebook 98.59% Python 1.41%
alura exploratory-data-analysis machine-learning python alurachallengedados shape-analysis streamlit

churn-prediction's Introduction

Alura Challenge Dados 2ª Edição 📊

No Alura Challenge Dados 2ª Edição, o objetivo é desenvolver uma solução para uma empresa de telecomunicações que visa compreender e prever a Taxa de Evasão de Clientes (Churn Rate). O projeto segue um cronograma de quatro semanas, com cada semana correspondendo a uma etapa específica.

📋 Detalhes do Projeto: Redução da Taxa de Evasão de Clientes na Novexus

➡️ Semana 01: Limpeza e Análise Exploratória de Dados (ETL & EDA)

Na primeira semana, focamos na preparação dos dados e na obtenção de insights iniciais (ETL & EDA). As atividades incluíram:

  • Compreensão do conteúdo do conjunto de dados;
  • Identificação e tratamento de inconsistências;
  • Análise do comportamento das features categóricas e numéricas em relação a target;
  • Avaliação da correlação entre as variáveis.

Notebook Correspondente: S01.ipynb

➡️ Semana 02: Feature Engineering e Construção do Modelo de Machine Learning (ML)

Na segunda semana, construímos e otimizamos o modelo de ML. Os processos incluíram:

  • Lidar com o desbalanceamento dos dados da target usando três abordagens: Oversampling (SMOTE), Undersampling (Tomek Links) e Default (mantendo o desbalanceamento).
  • Encoding dos dados categóricos usando CatBoost, normalização dos dados numéricos usando StandardScaler e construção do pipeline.
  • Utilização do RepeatedStratifiedKFold com 3 folds para avaliar o desempenho dos modelos.
  • Ajuste de hiperparâmetros usando Grid Search para cada abordagem.
  • Avaliação dos modelos usando o Recall como métrica crítica.
  • Visualização dos resultados usando a matriz de confusão e a curva ROC (com o valor da AUC).
  • Explicação dos resultados usando SHAP (Feature Importance e Waterfall).

Notebook Correspondente: S02.ipynb

➡️ Semana 03&04: Deploy do Modelo 💨

Nas últimas duas semanas desenvolvemos um aplicativo utilizando o Streamlit para disponibilizar nosso modelo de previsão de churn para a Novexus. Esse aplicativo oferece duas opções de entrada de dados: a possibilidade de importar um arquivo CSV contendo os dados do cliente ou a inserção manual desses dados. Quando o usuário utiliza o aplicativo, ele recebe como retorno a probabilidade de um cliente deixar a empresa. Essa probabilidade é apresentada de forma visual através de um gráfico tipo "gauge chart".

Para acessar o aplicativo, clique no link a seguir: Churn Predictor Novexus

O código-fonte do aplicativo está disponível em: S03.py.

➡️ Resultados dos Modelos 📈

Após o treinamento de 6 modelos (Regressão Logística, KNN, Gradient Boosting, Árvore de Decisão, Floresta Randômica e Support Vector Machine), observamos que a Regressão Logística se destacou nas três abordagens em relação ao Recall. Escolhemos mais dois modelos com melhor desempenho nessa métrica e realizaremos um ajuste de hiperparâmetros usando Grid Search. Os resultados foram os seguintes:

  • Na estratégia de Oversampling, a Regressão Logística alcançou um Recall de 76.29%.
  • Na estratégia de Oversampling e na estratégia Default, a Gradient Boosting alcançou um Recall de 74.67% e 73.62%, respectivamente.

Embora os três modelos tenham pontuações muito próximas, a estratégia de Oversampling se destacou. Portanto, utilizamos esses três melhores modelos para avaliar no conjunto de teste. Os resultados foram:

  • A Regressão Logística com Oversampling teve o recall mais alto, mas a precisão foi um pouco baixa.
  • O Gradient Boosting com Undersampling equilibrou razoavelmente a precisão e o recall.
  • O Gradient Boosting com amostragem padrão teve a melhor precisão para a classe 1, mas o recall foi mais baixo.

Dado o setor de telecomunicações, onde o custo de atrair novos clientes é alto, minimizar a perda de clientes é fundamental. Portanto, consideramos o modelo Regressão Logística com oversampling como a escolha mais adequada para prever a probabilidade de um cliente churn.

➡️ Resumo das Recomendações 🚀

  • Priorizar Contratos de Longo Prazo: A análise de dados demonstrou que clientes com contratos de maior duração têm maior probabilidade de permanecer na Novexus. Recomendamos que a empresa concentre-se em oferecer planos de contrato anual tradicionais, alocando recursos significativos de marketing e promoções para esses planos.

  • Planos Sem Contrato Fixo como Alternativa: Os planos sem contrato fixo podem ser oferecidos como uma opção secundária, mantendo o foco principal nos planos de contrato anual.

  • Promoção da Fibra Óptica: Para combater a alta taxa de churn entre os clientes de fibra óptica, considere oferecer descontos especiais para incentivá-los a permanecer. Comunique claramente esses benefícios aos clientes de fibra óptica.

  • Redução do Processamento de Cheques Eletrônicos: Avalie a possibilidade de incentivar os clientes a migrarem para métodos de pagamento mais eficientes, como pagamentos com cartão de crédito. Ofereça incentivos para essa transição.

Recomendações detalhadas: Última seção no arquivo S02.ipynb

Status do Projeto: Concluido ✔️

churn-prediction's People

Contributors

sarahbarbosa avatar

Stargazers

 avatar Jessica Assis avatar Antonio Lucas avatar Max Müller avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.