• Michel

Aplicações de Machine Learning para aprovação de crédito

Neste artigo usamos o software Rapid Miner para a exploração de dados e para gerar uma predição inicial. Finalizamos otimizando o modelo usando o modelo XGBoost no Python.

O crédito é um negócio massivo que afeta direta e indiretamente quase todos os setores da economia.

Segundo o Banco Central, o saldo das operações de crédito do sistema financeiro totalizou R$ 3,1 trilhões em junho de 2018. Neste período as concessões de crédito do sistema financeiro somaram R$ 312 bilhões.

A dívida é um grande negócio.

Com dezenas de milhões de pessoas detentoras de empréstimos no valor de trilhões de reais, qualquer tecnologia que possa fazer uma pequena melhoria nos retornos de uma empresa sobre os empréstimos que detém, ou que possa melhorar sua participação no mercado, vale uma quantia significativa de dinheiro. É por isso que tanto os bancos estabelecidos quanto as startups no campo estão constantemente procurando maneiras de inovar - e a inteligência artificial pode permitir exatamente isso.

Em sua essência, a concessão de crédito é um problema de predição, tornando-se um negócio naturalmente adequado para Machine Learning. Parte do valor de um empréstimo está atrelado à capacidade creditícia do indivíduo ou empresa que assumiu o empréstimo. Quanto mais dados você tiver sobre um tomador individual (e como indivíduos semelhantes pagaram dívidas no passado), melhor você poderá avaliar sua credibilidade.

Enquanto que, no passado, as instituições de crédito analisavam apenas algumas métricas, como o valor das garantias (carro, casa, negócios, obras de arte, etc.), e os dados na SERASA, as empresas agora podem analisar toda a vida de um indivíduo incluindo o uso de contas de mídia social, navegação na internet, dados de geolocalização e outras informações do smartphone para determinar a probabilidade de inadimplência. Utilizando-se ML pode-se analisar todas essas fontes de dados, que muitas vezes alcançam milhares de atributos do tomador, para gerar uma decisão coerente.

Competiçoes em Machine Learning

Como na maioria das ciências aplicadas, a melhor maneira de aprender Machine Learning é trabalhar com problemas reais e tentar resolvê-los.

Existem alguns sites de Competiçoes em Machine Learning, entre elas as promovidas pelo site indiano Analytics Vidhya.

Trata-se de uma plataforma em que cientistas de dados competem para produzir os melhores modelos para problemas reais enviados por empresas. Essa abordagem de crowdsourcing se baseia no fato de que existem inúmeras estratégias que podem ser aplicadas a qualquer tarefa de modelagem preditiva e é impossível saber de antemão qual delas será mais eficaz.

Em maio de 2018, haviam mais de 150.000 usuários registrados competindo no site. Na minha opinião a maior virtude dos sites de competição é patrocinar a troca de ideias e soluções para um dado problema ou um algoritmo entre os cientistas de dados. É claro que os prêmios são tentadores, mas vencer, ou chegar próximo, geralmente requer além do profundo conhecimento em Machine Learning, a disponibilidade de grande potência computacional e o trabalho em equipes.

Descrição da Competição

Sobre a empresa

Trata-se de empresa de financiamento de habitação na Índia que lida com empréstimos para a casa própria. Eles têm presença em todas as áreas urbanas, semi-urbanas e rurais. O cliente solicita o empréstimo e a empresa valida a elegibilidade do cliente para empréstimo.

Problema

A empresa quer automatizar o processo de qualificação do empréstimo em tempo real com base nos detalhes do cliente fornecidos ao preencher o formulário de inscrição on-line. Esses detalhes são variáveis como Gênero, Estado Civil, Educação, Número de Dependentes, Renda, Valor do Empréstimo, Histórico de Crédito e outros. Para automatizar esse processo, deve-se identificar quais Clientes são elegíveis para um valor do empréstimo solicitado. Note que o conjunto de variáveis é parcial, pois na prática são avaliados mais de uma centena de dados sobre um cliente.

Observe também que os dados podem ter valores omissos, pois algumas agências podem não relatar todos os dados devido a falhas humanas ou técnicas. Portanto, é necessário tratá-los de acordo.

A competição está em https://datahack.analyticsvidhya.com/contest/practice-problem-loan-prediction-iii/

Meus objetivos neste artigo são:

•Apresentar um processo de abordagem ao problema do ínicio ao fim;

•Demostrar o software RapidMiner.

•Finalizar a modelagem no Python usando o algoritmo XGBoost

Meu resultado final está nos 0,5% melhores de um total de 30.277 concorrentes.



Pré-requisisos

Este artigo não é um tutorial de Machine Learning nem do programa RapidMiner.

Como pré-requisitos você deve saber o que é uma Análise Exploratória de Dados e ter os conceitos centrais de algoritmos de Machine Learning.

Dados

São fornecidos os sets de treinamento (981 obs) e teste (367 obs), o set de treinamento tem variáveis de entrada e saída.

O objetivo é prever as vendas para o set de teste.



Métrica de avaliação

A métrica de avaliação é a precisão (Accuracy), ou seja, a porcentagem da aprovação do empréstimo no set de teste que você prevê corretamente.

O Fluxo do processo

O Fluxo do processo - Pré-processamento

Abaixo a fase de pré-processamento, que se inicia com o carregamento dos dados e termina com a armazenagem de ambos os sets pré-processados.

A seguir vamos detalhar as fases deste processo.

Primeiro unimos os sets de treinamento e teste no Rapid Miner.


Esta figura apresenta as estatísticas de cada variável

O processo de transformação dos dados começa com a imputação para os valores ausentes.


O processo de transformação dos dados continua com mudança nos tipos de variáveis, neste caso transformando a variável target (Loan_Status) de inteira para binominal.


Transformamos as outras variáveis nominais em variáveis “dummy” (one hot encoding), aumentando o número de variáveis para 26.


Finalmente definimos a variável target (Loan_Status) e a ID e separamos novamente os sets de treinamento e teste.


Inicialmente eu obtenho os pesos das variáveis, medidos pela correlação com a variável target. Como era de esperar, o principal indicador é Credit_History, que pesa mais que todas as outras variáveis somadas (52%).


Neste histograma vemos que todos os Clientes que tem histórico positivo ( = 1), tem Loan_Status = Y.

Modelagem

Agora que temos os dados pré-processados passamos à modelagem. Vamos usar um operação recentemente incorpada ao RM chamada Auto Model.

O RapidMiner Auto Model acelera o trabalho que os cientistas de dados tem ao criar modelos de aprendizado de máquina.

Ao contrário das abordagens de aprendizado de máquina automatizadas existentes, o Auto Model não é uma “caixa preta” que impede que os cientistas de dados compreendam como o modelo funciona. O Auto Model gera um processo do RM nos bastidores, para que os cientistas de dados possam ajustar e testar os modelos antes de colocá-los em produção.

Para mais informações sobre como começar a usar o RapidMiner Auto Model, visite https://rapidminer.com/resource/automated-machine-learning/


Usando o AutoModel vamos verificar se existem outliers em nossos dados, e se for o caso, eliminá-los do set de treinamento.


Observe que foram selecionados 10 outlliers. Por simplicidade vamos mannter os outliers no set de treinamento, embora neste caso deveríamos explorar mais estas observações, por exemplo, se também ocorrem outliers no set de teste.

Usando a função Auto Model do RM podemos rapidamente fazer uma avaliação inicial usando alguns modelos.


O que estamos fazendo é selecionar todos os modelos disponíveis no Auto Model, e ainda a correlação e os pesos das variáveis em um único passo!

Obtemos os resultados a seguir:

Aquí podemos ver a performance de cada modelo no set de treinamento. As performances foram muito parecidas em todos os modelos (82 a 84%). Isso pode indicar que uma combinação dos modelos pode melhorar ainda mais o resultado, pois isso diminuirá a variância final.


O F Measure pode ser interpretado como uma média ponderada da precisão e recall, em que um score de F atinge seu melhor valor em 1 e o pior em 0.


A curva ROC (Receiver Operating Characteristics) é uma técnica para a visualização e a seleção de classificadores baseado no seu desempenho. A Curva ROC é bastante útil no trato com domínios cujas classes estejam desbalanceadas e que possuam custos de classificação diferentes por classe. Vemos que as curvas não apresentam grandes diferenças.


Confirmamos os pesos já calculados acima.


Vejamos, por curiosidade, uma das 20 árvores geradas pelo modelo GBT.



A título de exemplo de como o Auto Model funciona, vamos analisar o modelo Decision Tree mais a fundo.

Para isso abrimos o processo que foi utilizado em background pelo RM. Como dissemos não é nossa intenção explicar os operadores do processo, porém nos gráficos a seguir damos uma visão dos principais blocos de operadores. Abaixo vemos o processo completo, porém não mostramos os sub-processos indicados pelos operadores que contém o símbolo.



As etapas de pré-processamento já haviam sido feitas anteriormente, porém se poderíamos te-las feito dentro do operador Preprocessing, por exemplo, a substituição dos valores faltantes (missing values ) no operador Replace Missing Values.


Dentro do operador Find Optimal Solution estão as operações de cross-validation, treinamento e medição da performance.


Nesta fase 20% do set de treinamento é retirada para o set de validação.


A fase de treinamento

O set de treinamento entra no operador de cross-validation usando 10 folds que tem como sub-processo o algoritmo Decision Tree. Os resultados são otimizados variando-se o parâmetro maximal_depth.

A árvore é treinada neste estágio, e retorna um modelo (port mod) que será aplicado ao set de validação na próxima etapa.


Performance e resultados




A partir dos sets de trinamento e testes pré-processados no RM e sabendo que a precisão

é de aproximadamente 82-84%, usaremos agora o algoritmo XGB no Python para gerar o modelo final.

Dentro do Python fazemos a otimização dos parâmetros do algoritmo (que está fora do escopo deste artigo) para alcançar o resultado mencionado no início do artigo

Nota: também é possível utilizar a interface do RM com o Python para esta tarefa

A seguir apresentamos somente a parametrização que utilizamos para obter a classificação menciona no início.



3 Dimensões

Inteligência Artificial nas Empresas

Al. das Papoulas, 147 - Santana de Parnaíba - Alphaville, SP 06539-180 - (11) 4153 6004  - (11) 9 9795 9765

michel@3dimensoes.com.br