Detecção de fraudes em cartão de crédito com Machine Learning

Wesley Watanabe
Dados
Published in
5 min readJan 8, 2020

Criação de modelo preditivo em Python — Data Science.

Intro
Hoje vamos desenvolver um modelo de ML (Machine Learning) para detecção de transações fraudulentas. Existem ‘n’ maneiras de fazer validações para encontrar esses tipos de transações.
Vamos usar a base de dados disponibilizada pelo Kaggle neste link para trainar e testar o nosso modelo.

Adendo: é bem difícil de encontrar esse tipo de dataset, entendo que seja devido ao nível de segurança das informações.

Mãos a obra!

Importando as bibliotecas necessárias para o projeto.

Importando dataset com as transações financeiras de cartão de crédito.

Explorando os dados

Exibindo as colunas do dateset. As colunas foram anonimizadas através do PCA para preservar as informações iniciais. Os únicos dados que estão de forma ‘original’ é a coluna Time (Tempo entre a primeira transação do dateset e próxima), Amout (Valor da transação) e Class (Flag para definir o que é fraude)

Index(['Time', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10',
'V11', 'V12', 'V13', 'V14', 'V15', 'V16', 'V17', 'V18', 'V19', 'V20',
'V21', 'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28', 'Amount',
'Class'],
dtype='object')

O processo da análise exploratória de dados (EDA — Exploratory Data Analysis) consiste em desenvolver vários testes e informações inicias para suportar o processo.
Um desses passos é criar um mapa de calor das features disponíveis e encontrar as mais relevantes para o modelo de ML.
Para quem não conhece esse recurso, é muito simples. Quanto maior o valor da correlação entre cada variável (N a N) o gráfico fica mais claro.

Heatmap de features

Vamos manter em mente essas variáveis que possuem maior nível de correlação.
Dica: Não confunda correlação com causa e consequência, nem sempre isso está totalmente correlacionado.

Checando os valores nulls.

Geralmente é bem difícil encontrar um dataset que não possua valores ‘missing’. Nesse caso iremos poupar tempo de data cleaning e ajustes no dataset.

Análise das features em “V” em gráficos boxplot.

Boxplot variáveis
Boxplot das variáveis (V1, V2,V3,V4,V5,V6,V7,V8 e V9)
Boxplot das variáveis (V10, V11,V12,V13,V14,V15,V16,V17 e V18)
Boxplot das variáveis (V19, V20,V21,V22,V23,V24,V25,V26 e V27)

Mesmo o esse dataset ter sido disponibilizado com dados aparentemente padronizados temos uma grande quantidade de outliers conforme imagens acima. Nesse primeiro momento não vamos fazer nenhum tipo de alteração no dataset para balancear feature por feature.

Plotando a distribuição da feature “Class”.

Total de linhas no dataset com fraude e não fraude.

Como temos um dateset muito desbalanceado (imagem acima) é necessário balancear os dados para criar o modelo de Machine Learning.
A base possui cerca de 492 casos de fraudes, dessa forma vamos selecionar essa mesma quantidade de linhas de transações normais e criar um dataset balanceado (ou retirar uma amostragem).

Separando o dateset entre base para treinamento (X) e target (y).

Separando o data para treino e teste colocando usando o shuffle para ‘embaralhar’ os dados.

Criar o modelo de regressão usando o algoritmo RandomForest do Sklearn. Treinar o modelo para ser preditivo.

Treinando e testando o modelo

Vamos usar dois métodos para verificar a efetividade do nosso modelo. O ACCURRACY SCORE e o ROC AUC SCORE.

Conclusão

Apesar que o dataset omitir as informações na sua forma bruta, isso não é um impeditivo para criarmos o modelo preditivo. Esse dataset já vem de uma forma muito amigável para trabalhar com os dados, o que deixa um pouco do trabalha de um cientista de dados bem mais fácil.

Para um bom aprendizado nessa área eu sugiro fortemente você testar vários datasets de formatos e situações diferentes.

O código fonte do notebook usado no artigo está disponibilizado no Kaggle.

Referências e Links úteis

Github

https://github.com/wesleykaoru

Linkedin

https://www.linkedin.com/in/wesleywatanabe

Kaggle notebook

https://www.kaggle.com/wesleywatanabe/credit-fraud-random-forest-classifier

--

--