Skip to content

exata0mente/alura_cash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Status Commits semanais

Challenge: Data Science Alura 2

Neste repositório postarei o meu progresso no 2º Challenge de Data Science da Alura. Se desejar, o meu progresso no 1ª Challenge pode ser encontrado aqui

O desafio

Fui contratado cientista de dados para trabalhar em um banco digital internacional chamado Alura Cash. Na primeira reunião do meu novo trabalho, a diretoria financeira informa que, recorrentemente, estão surgindo pessoas inadimplentes após a liberação de créditos. Portanto, é solicitada uma solução para que seja possível diminuir as perdas financeiras por conta de pessoas mutuarias que não quitam suas dívidas.

É então sugerido um estudo das informações financeiras e de solicitação de empréstimo para encontrar padrões que possam indicar uma possível inadimplência.

Desse modo, solicito um conjunto de dados que contenha as informações de clientes, da solicitação de empréstimo, do histórico de crédito, bem como se a pessoa mutuaria é inadimplente ou não. Com esses dados, consigo modelar um classificador capaz de encontrar potenciais clientes inadimplentes e solucionar o problema do Alura Cash.

O desafio será dividio em 4 partes (semanas):

  1. Tratamento de dados: entendendo como tratar dados com SQL
  2. Aprendendo com os dados: criando um modelo de previsão de inadimplência
  3. Parte 3 - Analisando métricas: criando visualizações com o Power BI

Abaixo destaco os pontos importantes de cada uma das etapas e os 'perrengues' vou deixar em minhas anotações.

Etapas

Parte 1: Tratamento de dados: entendendo como tratar dados com SQL

Ferramentas utilizadas

  • MySQL

Os dados brutos

A base de dados pode ser encontrada em script/dump-analise_risco-202207271411.sql que está em um formato DUMP.

O dicionário de dados pode ser consultado aqui.

O desenvolvimento

Após carregado o arquivo DUMP, optei por traduzir as colunas e os conteúdos e realizar pequenos tratamentos nos dados. Minha ideia nessa fase é apenas deixar os dados devidamente disponíveis para a etapa seguinte.

Realizei então:

  • Tradução das colunas
  • Tradução dos conteúdos
  • Limpeza dos campos elegíveis a chave primária
  • Adequação dos tamanhos dos campos de algumas tabelas
  • Criação das chaves primárias e estrangeiras (apesar de não ser estritamente necessária)
  • Exportar o arquivo como CSV para uso posterior

Aqui precisei tomar uma decisão sobre alguns campos categóricos com valores nulos.

Na tabela dados_mutuarios há uma coluna com nome situacao_propriedade que possuia várias situações entre elas a opção Outros. Aqui eu decidi então classificar os campos faltantes como Outros e assim manter estes registros utilizáveis.

O mesmo eu fiz para a tabela emprestimos coluna motivo. Aqui porém não havia a opção Outros então decidi criar essa classificação para esses valores faltantes.

Resultados

O script de tratamento, a view resultante e o arquivo gerado podem ser consultados na pasta de dados

Parte 2 - Aprendendo com os dados: criando um modelo de previsão de inadimplência

Tendo a base pronta para uso, retirei da base de estudos os registros que possuiam valores nulo e/ou outliers. Estes registros separo em uma base apartada para utilizar como mais um avaliador do modelo (a ideia é preencher os campos nulos, premissas ainda a definir, e testar o modelo). Identificamos uma correlação de inadimplência com as variáveis de situação da propriedade (Alugada), taxa de juros (quanto maior a taxa, maior a correlação) e classificações baixas (sendo A a mais alta e G a mais baixa). Antes da construção do modelo, decidimos normalizar os dados pois há grandes diferenças nos campos que referem-se a valores financeiros como salário e valor de empréstimo solicitado. A normalização se fez necessária para não enviesarmos o algoritmo.

Feito isso, testamos 3 algoritmos de machine learning: Random Forest, Gradient Boost, Logistic Regression

O que apresentou melhor resultado foi o Gradient Boost. Todos os modelos gerados foram salvos no diretório de modelos

Parte 3 e 4 - Analisando métricas: criando visualizações com o Power BI

Agora com os modelos prontos e otimizados, vamos montar uma API que irá injetar no modelo os valores e devolver a predição de inadimplência e montar um dashboard no PowerBI para trazer os resultados.

Para a criação da API vamos utilizar o framework FastAPI que irá, localmente, montar um servidor que receberá as requisições. Quem consumirá esta API será o Power BI onde irei passar todos os campos treinados no modelo através de parâmetros e apresentar o resultado predito pelo modelo .

Parte Bônus

Nesta parte irei utilizar os registros que foram separados por conter algum dado nulo, identificar uma forma de preenchê-lo com base na amostra que já temos, testar no modelo e potencialmente retreinar.

Também será realizado uma melhoria na estética do PowerBI. Será que dá para mostrar qual a feature que mais pesou na classificação de uma solicitação específica?

About

Challenge Data Science 2 - Alura

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published