Como Machine Learning pode ajudar seu negócio na análise de riscos

Analisar o risco de uma operação de crédito é uma atividade necessária para quase todos os negócios, seja seu core business ou não.

Por isso, neste texto falarei sobre como machine learning pode auxiliar empresas a analisar o risco de suas operações passando pelos seguintes tópicos:

  1. Importância da análise de risco e machine learning
  2. Conhecendo a base de dados usada como exemplo
  3. Explorando a base de dados
  4. Criando o modelo de machine learning para análise de risco
  5. Analisando os ganhos financeiros da solução

Ao final do texto, mostrarei como é possível economizar R$ 12.3 milhões* com a implementação de um modelo de machine learning para analisar risco de operações de crédito. O código completo pode ser encontrado neste link.

* Foram utilizados dados fictícios para este cálculo, mas a abordagem pode ser replicada em seu contexto pessoal.

Importância da análise de risco e machine learning

A análise de crédito é uma das principais atividades de um banco, pois enquanto ele guarda o dinheiro de alguns clientes, também empresta para outros. Seu lucro é baseado nesta diferença entre a captação do dinheiro e seu empréstimo e é chamada de spread.

Outros tipos de negócios que precisam analisar o risco de suas operações são seguradoras e empresas de plano de saúde. Nos dois cenários é preciso adequar a parcela cobrada do cliente com o seu potencial de risco para que não existam perdas no pagamento de apólices, ou no momento do usufruto do plano de saúde.

Além destes exemplos, outro tipo de negócio que se beneficia da análise de risco são as lojas de varejo que oferecem cartões de crédito do próprio estabelecimento para seus clientes. Ao oferecer este crédito, que costuma dar descontos a seus clientes, é preciso avaliar o risco de cada cliente em não honrar com seus compromissos futuros.

Em todos os casos citados acima é preciso que exista uma área de risco com profissionais qualificados para entender os diferentes perfis de clientes e operações e realizar as adequações de riscos necessárias.

Entretanto, em um mundo em que:

  • As informações disponíveis para análise aumentam exponencialmente;
  • O ambiente de negócios se tornam cada dia mais competitivos;
  • Os clientes esperam (com razão) por um atendimento velozassertivo, personalizado e de qualidade.

Uma única área de risco não seria capaz de acompanhar a evolução dos processos de forma veloz e assertiva sem o auxílio de alguma tecnologia que permita escalar seus processos de análise.

Uma das tecnologias que podem auxiliar neste processo é a aprendizagem de máquina, conhecida como machine learning.

Com machine learning o computador aprende através de métodos estatísticos quais foram os padrões passados que levaram a ocorrer aqueles eventos.

Em nosso caso de análise de risco, passaríamos exemplos de operações perdidas ou fraudulentas e ao final teríamos um modelo matemático que prevê o grau de risco de uma nova operação nunca feita antes.

Estes modelos de aprendizagem de máquina costumam ser adotados pelas empresas em dois contextos:

  • Auxiliar na tomada de decisão dos profissionais que realizam a análise de risco da empresa. Classificando quais operações são mais arriscadas, além de informar quais variáveis podem explicar o porquê do risco ser maior ou menor;
  • Automatizar a análise de risco completamente integrando com outros sistemas e processos da empresa.

Nas próximas seções apresentarei como criar um modelo de machine learning que calcula a probabilidade de uma operação de crédito ser arriscada.


Conhecendo a base de dados usada como exemplo

Para exemplificar a situação de como é possível prever operações de risco, usarei neste artigo uma base de dados do Kaggle que contém informações de empréstimos de uma empresa indiana.

No Kaggle estão disponíveis:

  • 252 mil amostras para treinamento com respostas;
  • 28 mil amostras para teste sem respostas;
  • 13 variáveis de entrada como são apresentadas na tabela abaixo.
Variáveis da base de dados e seus tipos. Fonte Kaggle

Ao carregar os dados realizaremos as seguintes etapas:

  1. Entender a proporção entre as operações com e sem risco;
  2. Realizar uma “checagem de realidade” (Sanity check) nos dados;
  3. Realizar uma limpeza básica de dados;

Nota: a partir deste ponto omitirei etapas intermediárias no processo de tratamento dos dados pois focarei apenas em demonstrar as partes essenciais. O notebook em python completo deste texto com todos os códigos pode ser encontrado neste link.


Proporção entre operações

O gráfico abaixo demonstra a proporção entre as operações de risco (em que o cliente não honrou com os pagamentos) e as operações sem risco, em que os clientes pagaram corretamente o valor devido.

Proporção entre operações de crédito. Fonte: autor

A relação entre os dois em nosso conjunto de dados com 252 mil amostras é de:

  • 12.3% de operações de risco;
  • 87.7% de operações comuns.

Ou seja, possuímos um problema em que os dados entre cada uma das classes estão desbalanceados.


Sanity Check no dataset

Para realizar a checagem de realidade no dataset vamos responder três perguntas:

1. Existem diferenças entre os dados de entrada da base de treinamento e os da base de testes?

Respostanão.

2. Quais os tipos de dados nos dados de treinamento?

Respostaos dados batem com a descrição do dataset no site do Kaggle.

3. Qual o percentual de valores nulos?

Respostanenhum valor nulo em nenhuma das colunas.

As três perguntas são avaliadas e respondidas em detalhes no notebook python.


Limpeza básica de dados

Como verificamos na etapa anterior que não existem dados faltantes, portanto focaremos os esforços em entender quais colunas que possuem dados de texto que podem ser substituídas por números.

Para isso, veremos o histograma das seguintes variáveis que possivelmente possuem um baixo número de categorias:

  • Married/Single;
  • Car_Ownership;
  • House ownership.
Histogramas de variáveis categóricas. Fonte: autor

Ao analisar os gráficos acima verificamos que apenas a variável “House_Ownership” possui mais de uma categoria. Portanto, para a limpeza de dados realizaremos duas operações que estão descritas no código abaixo:

  1. Converter a coluna “Married/Single” para “Is_Single” em que teremos o valor de 1, caso o cliente seja solteiro e 0 caso contrário;
  2. Converter a coluna “Car_Ownership” para “Has_car” em que teremos o valor de 1, caso o cliente tenha carro e 0 caso contrário;
  3. Remover as colunas “Car_Ownership” e “Married/Single”.

Função para limpeza básica de dados. Fonte: autor

Com a nossa função de limpeza de dados definida podemos prosseguir para explorar a base de dados.


Explorando a base de dados

Para esta seção de Análise e Exploratória realizaremos dois procedimentos para explorar a base de dados:

  1. Análise de correlações entre as variáveis modelo e a variável alvo (risco);
  2. Análise de dados baseada por hipóteses.

Análise de correlações

Nessa análise queremos entender se numericamente existe alguma correlação entre as variáveis de entrada do modelo e a variável que desejemos prever. Podemos ver essa análise no gráfico abaixo que mostra o mapa de calor da correlação entre as variáveis:

Mapa de calor da correlação entre variáveis. Fonte: autor

É possível tirar as seguintes conclusões:

  • Existem correlações positivas entre a variável “experiência profissional” e “anos no atual emprego”. O que faz sentido, dado que a senioridade de um profissional é desenvolvida através dos anos de experiência;
  • Não existem outras correlações relevantes desta análise.

Nota: para as variáveis categóricas foi feita uma transformação nos dados em que para cada categoria foi atribuído um número sequencial de 0 até número de categorias.


Análise de dados baseada por hipóteses

Nesta etapa, dividiremos as variáveis de nosso conjunto de dados baseado no segmento de demografia , em que faremos nossas análises baseada em hipóteses.

Nota: o ideal a ser realizado nesta etapa é a exploração de dados por todos os diferentes segmentos de uma forma MECE (ver referência), como por exemplo analisar os aspectos: demográficos, profissionais e de patrimônio.

Entretanto, devido ao tamanho do texto, vi que seria melhor deixar as outras análises de fora. Se você, leitor, ficou interessado no problema apresentado, sugiro fazer uma cópia do jupyter notebook, fazes suas hipóteses, análises e então compartilhar nos comentários =)

Demografia

Para este tópico estamos interessados em entender a relação entre as variáveis de renda (Income), idade (Age) e estado (State). Então faremos as seguintes hipóteses:

  1. Pessoas jovens que têm baixa renda fazem parte de um perfil de risco?
  2. Existe algum estado com uma proporção muito maior de operações de risco do que outros?

Pessoas jovens que têm baixa renda fazem parte de um perfil de risco?

Para responder a primeira pergunta, analisaremos os três gráficos abaixo que mostram a relação de renda média por idade para cada um dos grupos.

No primeiro gráfico que mostra todas as idades, de 21 a 79 anos, podemos ver:

  • Algumas idades de grupos de risco possuem uma renda maior que a média geral e renda maior que a das pessoas na mesma faixa etária;
  • Não existe um crescimento linear entre idade e renda.
Renda por idades e por grupo — Todas as idades. Fonte: autor

No segundo gráfico, com foco nos adultos abaixo de 36 anos podemos ver que:

  • 42% dos jovens do grupo de risco recebem mais que os demais na mesma faixa. Considerando as idades de 21, 22, 27, 28, 31 e 32 anos. Importante: desses, 5 recebem acima da média geral;
  • Os demais 58% recebem abaixo que seus pares na mesma idade;
  • A relação de receita e risco não é linear com a idade, podendo ser melhor explicada por outros fatores como: cidade, profissão e patrimônio.
Renda por idades e por grupo — Abaixo de 36 anos. Fonte: autor

Existe algum estado com uma proporção muito maior de operações de risco do que outros?

Para responder a segunda pergunta, analisaremos dois gráficos que demonstram o risco por estado.

No primeiro gráfico, podemos ver a proporção de clientes de risco dentro de cada estado:

  • 5 cinco estados possuem uma taxa de 15% de inadimplência enquanto a média é de 12%;
  • Podemos ver que os estados de Manipur e Sikkim se destacam por possuírem o maior e o menor percentual respectivamente. Talvez esta diferença possa indicar um padrão de clientes diferente em cada região ou um número reduzido de amostras.
Percentual de inadimplência por estado. Fonte: autor

No segundo gráfico podemos ver a relação de renda média do estado por operações de risco. Nele é perceptível a diferença de inadimplência por estado baseado na renda, em que poderíamos dividir os estados em três grupos:

  1. Estados cujo perfil inadimplente são pessoas com maior renda: estado de Manipur até Jharkhand, incluindo Puducherry e Himachal_Pradesh;
  2. Estados cujo perfil inadimplente são pessoas com menor renda: como Uttarakhand, Punjab, Chattisgarth, entre outros;
  3. Estados cuja diferença de renda entre os grupos não é perceptível: como West_Bangal, Tripura, entre outros.
Relação entre média de receita por estado e percentual de inadimplência. Fonte: autor

Recapitulando as hipóteses de demografia:

1. Pessoas jovens que têm baixa renda fazem parte de um perfil de risco?

Resposta: não. Inclusive há jovens que possuem uma renda maior que a média geral dos clientes e não estão em perfil de risco. Talvez uma segmentação por estado ou aspectos profissionais consiga responder melhor esta pergunta.

2. Existe algum estado com uma proporção muito maior de operações de risco do que outros?

Resposta: sim. Existe diferença nos risco de operações por estado. Além disso, é possível dividir os estados por clientes inadimplentes que possuem maior e menor renda que os clientes comuns.


Criando o modelo de machine learning para análise de risco

Nesta seção, criaremos o modelo preditivo de nosso problema, e para realizarmos este desenvolvimento passaremos pelas seguintes etapas:

  • Definição da relação entre o modelo e suas predições;
  • Definição das métricas de avaliação para o modelo;
  • Desenvolvimento e avaliação do modelo preditivo.

Relação entre modelo e predições

Para o nosso caso, em que estamos lidando com um problema de classificação, teremos:

Relação entre modelo, predições e consequências. Fonte: autor

A partir do quadro acima podemos priorizar as métricas de acordo com as necessidades do negócio.

Por exemplo, em operações com alto valor de crédito é preferível focar em não deixar que ocorra uma inadimplência ao custo de negar operações que não sejam arriscadas. Ou seja, o falso negativo é o pior cenário.

Em contrapartida, para uma empresa que tem foco em nano-crédito pode ser mais prejudicial deixar de dar crédito e reduzir seu volume de transações, ao invés de detectar o risco. Neste caso um falso positivo é o pior cenário.


Métricas de avaliação para o modelo

Para este problema, utilizaremos duas métricas para avaliar o desempenho dos modelos de machine learning criados:

  • ROC AUC: área sob a curva ROC. Quanto maior, melhor;
  • PR AUC: área sob a curva de Precision-Recall. Quanto maior, melhor;

Não entrarei em detalhes sobre o funcionamento e cálculo de cada uma dessas métricas, porém destaco os seguintes pontos que motivam a escolha:

  • Ambas as métricas avaliam o resultado do modelo independente de um ponto de corte para a predição;

Ou seja, eu não preciso informar de antemão que o limiar para classificar uma operação como arriscada seja caso a probabilidade seja maior que 0.5 ou 0.75 ou 0.87;

  • É possível comparar diretamente o resultado de um modelo com o outro e escolher o melhor baseado no critério de prioridade do negócio;

Além das duas métricas, também mostrarei a matriz de confusão para cada modelo em que veremos a relação entre Verdadeiro Positivo, Verdadeiro Negativo, Falso Positivo e Falso Negativo.


Desenvolvimento e avaliação do modelo preditivo

Para o desenvolvimento do modelo, os dados foram divididos em três conjuntos:

  • Treinamento — 70% dos dados serão usados para treinar o modelo de machine learning a partir de exemplos anteriores de operações comuns e de inadimplência;
  • Teste — 20% dos dados serão usados para avaliar o modelo treinado. Neste conjunto de dados, poderemos mudar as estratégias de modelagem, além de testar diferentes algoritmos para entender qual o melhor resultado possível;
  • Validação — 10% dos dados serão usados para a avaliação final. Ou seja, durante nenhum momento do desenvolvimento do modelo teremos contato com estes dados, simulando um cenário “real”.

Para nos certificarmos que não existe desproporção com relação ao número de operações inadimplentes em cada um dos conjunto de dados, avaliamos o percentual de operações de risco em cada um deles.

Na imagem abaixo percebemos que não há diferença significativa, com todos estando em torno de 12%.

Proporção de operações inadimplentes por conjunto de dados. Fonte: autor

Após alguns testes e diferentes modelagens abordadas, chegamos aos seguintes resultados com os dados de teste comparando três diferentes algoritmos que podem ser vistos nos dois gráficos abaixo.

  1. Random Forest com ROC AUC de 0.94 e PR AUC de 0.59;
  2. Decision Tree (Árvore de decisão) com ROC AUC de 0.84 e PR AUC de 0.4;
  3. SVM com ROC AUC de 0.5 e PR AUC de 0.12.

O melhor resultado é proveniente do Random Forest e na imagem da direita é possível ver a relação entre as métricas de precision e recall para diferentes limiares de predição.

Comparação entre diferentes modelos avaliados usando curva ROC (esquerda) e curva de Precision Recall (direita). Fonte: autor

Agora vamos avaliar o resultado do modelo escolhido (Random Forest) nos dados de validação e utilizando um limiar de predição de 0.85, ou seja:

  • Caso o modelo preveja que uma operação é de risco com uma probabilidade de 85% , então ela é classificada como risco;
  • Neste limiar, o valor de precision é de aproximadamente 0.58 e o valor de recall é de aproximadamente 0.6.

Esta imagem do Andreas Holzinger exemplifica bem a diferença entre as duas métricas no momento de uma predição.

Relação entre predições, precision e recall. Fonte: https://www.researchgate.net/figure/Visualization-of-three-metrics-in-a-recommendation-example-precision-recall-and_fig1_309583367

Abaixo podemos ver matriz de confusão para o nosso problema, utilizando os dados de validação, ou seja, simulando um ambiente real:

Matriz de confusão usando o modelo de machine learning random forest. Fonte: autor

Podemos ver que:

  • Classificamos corretamente 1.930 operações de inadimplência e erramos 1.209;
  • Classificamos corretamente 20.730 operações de crédito e erramos 1.331.

Apenas estes resultados não conseguem tangibilizar os ganhos reais de nossa solução, portanto, façamos um pequeno exercício com valores possíveis na seção seguinte.


Analisando os ganhos financeiros da solução

Na última seção, criamos o nosso modelo de predição e encontramos a matriz de confusão para os dados de validação. Agora colocaremos os dados de predição em um contexto de negócio que poderia ser real.

Imaginemos que a instituição financeira tenha contabilizado:

  • Valor médio por operação de crédito: valor que em média um cliente pede de crédito;
  • Lucro médio por operação: valor que a instituição recebe da operação de crédito acrescido de juros;
  • Perda por inadimplência médio: valor que a instituição perde contabilizando o montante emprestado acrescido de outras despesas, como a tentativa de recuperação de crédito.

Para nosso exemplo, colocaremos esses valores fictícios na tabela abaixo:

Valores médios de operação, lucro e perda. Fonte: autor

Agora coloquemos os nossos dados de validação em perspectiva com a tabela acima e veremos que:

  • A instituição teve R$ 53.3M em perdas;
  • Lucro total de R$387.8M no período analisado com 25.2k operações de crédito.
Resultado da instituição sem modelo preditivo. Fonte: autor

Vejamos um cenário em que utilizaremos o nosso modelo de predição de risco de crédito


Resultados utilizando modelo de machine learning

Para quantificar o resultado de nossa solução, colocaremos em perspectiva os valores médios por operação em relação às predições realizadas e, em seguida, calcularemos os ganhos e perdas totais.

Podemos dividir os resultados do modelo em:

Ganhos

  • Situações em que não perdemos dinheiro ao dar crédito para as operações que seriam inadimplentes (Operação de risco e modelo previu risco);
  • Situações em que aprovamos crédito corretamente e a instituição lucrará com a operação (Operação sem risco e modelo previu sem risco);

Perdas

  • Situações em que aprovamos crédito incorretamente e a operação foi inadimplente (Operação era de risco e modelo previu como sem risco);
  • Situações em que não aprovamos crédito para clientes que honrariam a dívida e consequentemente a instituição deixou de lucrar com o valor da operação com lucro (Operação era sem risco e modelo previu com risco).

Análise de predições realizadas e impacto financeiro. Fonte: autor

Ao transcrever os resultados da matriz acima para um formato de tabela podemos ver que ao final a instituição teria um resultado de R$ 400.2M, sendo:

  • R$ 32.8M com economias via redução de perdas por inadimplência;
  • Receita de R$ 416.6M proveniente de lucros com a operação;
  • Perdas de R$ 47.1M devido a erros do modelo.
Resultado financeiro alcançado com a implementação de um modelo preditivo. Fonte: autor

Ao compararmos os dois cenários (com e sem modelo) veremos que a implementação de um modelo de machine learning para avaliar o risco de operações de crédito traz uma economia R$ 12.3M:

Comparação de cenários com e sem implementação de machine learning. Fonte: autor

Apesar de termos utilizado dados de uma base de dados pública e usado valores fictícios para a análise de negócio, é possível confirmar que modelos de machine learning podem trazer ganhos significativos em diversos negócios.


Com isso, concluímos nossa análise sobre como utilizar machine learning para análise de risco em operações de crédito. O código completo utilizado no desenvolvimento pode ser acessado neste link.

Se você quer saber como a ciência de dados pode ajudar a otimizar os resultados de seu negócio conheça a NAN Data e entre em contato conosco.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *