Angel Mansilla

Home Credit Group Prediction on Credit Payment Delay
PARTE 3
Modelagem Preditiva com Python
1 - Modelagem de Dados
Com o dataset fornecido pela empresa, existem algumas informações inúteis, informações que podem ser agregadas,
informações que estão faltando e precisam ser preenchidas, outliers que podem ser ruins para o modelo. Após fazer todas essas transformações ainda é necessário criar um modelo de machine learning que possa entregar resultados bons para a empresa, abaixo segue uma visualização do dataset fornecido, para facilitar o entendimento do processo.
​​

2 - Limpeza dos Dados
Neste primeiro código, realizei a remoção de algumas colunas que considerei irrelevantes para o processo de modelagem, para reduzir a dimensionalidade do conjunto de dados e evitar redundâncias, combinei determinadas colunas ao calcular a média entre elas, reduzindo o número total de variáveis sem perder informações significativas. trabalhando com um conjunto de dados mais enxuto e otimizado, o que pode contribuir para um melhor desempenho.

Em seguida criei duas funções para localizar valores faltantes no dataset, uma delas retorna uma Series ranqueando as colunas que possuem mais valores faltantes, e a outra cria dois gráficos, uma para os valores faltantes de colunas
numéricas e outras de colunas de objetos, separei eliminando as colunas que possuem mais de 60% dos valores em
falta e escolhi preencher o restante com estratégias diferentes, que serão explicadas melhor logo em seguida.

Considerei que preencher colunas com mais de 60% de valores ausentes poderia resultar em inconsistências ou perda de qualidade nos dados, optei por removê-las completamente. Para as demais colunas, adotei uma abordagem de imputação estratégica: nas variáveis numéricas, substituí os valores ausentes pela média da respectiva coluna, já nas variáveis de objetos preenchi com a moda das strings das colunas, segue o código utilizado nesse processo:

Em seguida realizei a remoção de outliers, utilizando uma função que filtra outliers, e aplicando ela sobre algumas colunas específicas que possuem potenciais outliers, depois realizei a codificação das variáveis de tipo objeto, pois os modelos apenas aceitam números, as colunas que possuem apenas dois tipos de string foram transformadas em zeros e uns, e uma outra coluna de grau escolar foi transformada pelo OrdinalEncoder, com um grau de importância.

3 - Modelo de Machine Learning
Comecei fazendo o pré-processamento dos dados, para isso selecionei quais seriam as variáveis que o modelo iria ser treinado, e qual ele iria se basear para realizar a previsão, depois apliquei uma técnica de undersampling chamada de
NearMiss, dito que existiam menos pessoas atrasando que pessoas pagando em tempo correto, isso ajuda a balancear
e evita que o modelo compreenda mal as informações, enfim a padronização dos dados usando o Standard Scaler.

Em seguida, defini os hiperparâmetros do LightGBM, utilizando o método DART para melhorar a regularização e evitar overfitting. Também ajustei a taxa de aprendizado, o número de folhas e a fração de features usadas em cada iteração. Para lidar com o desbalanceamento das classes, apliquei o parâmetro scale_pos_weight, dando mais peso à classe minoritária. Após isso, realizei uma validação cruzada estratificada com 5 folds, garantindo que a proporção das classes fosse mantida em cada divisão dos dados. Durante o treinamento, o modelo foi ajustado por até 600 iterações, sempre monitorando a métrica AUC para avaliar seu desempenho. Por fim, identifiquei o número ótimo de iterações observando em qual ponto a AUC atingiu seu valor máximo, garantindo que o modelo tivesse o melhor desempenho possível.

4 - Resultados do Modelo
Com o modelo treinado, precisamos definir como entenderemos o sucesso desse modelo, e vamos usar 3 métricas para isso, precision, recall e AUC (Area Under Curve), porém como os dados estão desbalanceados, a troca entre precision e
recall é muito custosa, então vamos usar o AUC-ROC, que serve para medir quão bom o modelo é em separar as classes,
uma AUC de 0.5 seria exatamente como um modelo aleatório, então temos que buscar aproximar ao máximo de 1.0, essa foi a métrica requisitada na competição que criou esse desafio do Home Credit Group, com o recorde sendo 0.80570.


Enfim, alcançamos o resultado de um AUC de 0.764, que significa que nosso modelo tem 76,4% de chance de classificar corretamente um cliente que vai atrasar o pagamento em comparação com um cliente que não vai atrasar, as métricas de precision e recall estarão incluídas no código desse projeto, porém como tivemos um grande desbalanceamento de classes,
a troca entre essas duas métricas era sempre muito custosa, sendo que um valor estava sempre bem maior que o outro.
Comparando os modelos, o anterior apresentava um AUC de 0.719. Mas como isso impacta o lucro da empresa? Embora um número seja maior que o outro, o mais importante é entender o impacto prático. A imagem abaixo vai ilustrar essa diferença, apesar do modelo antigo ter uma taxa de acerto ligeiramente superior no geral, nosso novo modelo se destaca na capacidade de identificação de clientes inadimplentes, tornando-o mais eficaz para mitigar riscos financeiros, que serão calculados logo:


Mesmo com uma pequena amostra de clientes, nosso novo modelo demonstrou uma melhoria significativa na previsão de atrasos no pagamento. Enquanto o modelo antigo identificou corretamente apenas 4 clientes, o novo modelo acertou 222, representando um aumento de 5450% na precisão. Embora ambos os modelos ainda precisem de aprimoramentos, essa atualização já representa um avanço significativo para a empresa. Considerando que, em média, cada cliente inadimplente solicita ¥557.778 em crédito e atrasa o pagamento por 4 meses, o banco pode ter um prejuízo médio de até ¥100.400.

Enfim, o novo modelo conseguiu prever 218 clientes a mais que poderiam gerar prejuízo, representando numa diferença financeira de mais de ¥21.88 milhões em perdas potenciais identificadas, isso apenas em um escopo de 30752 previsões, o número apenas tendem a aumentar conforme novas amostras surgem e o modelo melhora, muito obrigado pela atenção.