Machine Learning monitorando fraudes no cartão

Como o uso de modelos de aprendizado de máquinas podem auxiliar instituições no combate a fraudes?

Angelo Buso Jr
7 min readJan 10, 2022

A tecnologia é um indutor global na economia, isso é fato. O E-Commerce é um exemplo desse movimento indutor. No entanto enquanto uma grande parte das pessoas estão focadas em desenvolver soluções tecnológicas que facilitam a vida dos usuários, há uma outra parcela que agem no ituito de obterem vantagens ilícitas. Podemos citar as imitações de sites, aplicativos e perfis de empresas em redes sociais estão cada vez mais fidedignas e com essas táticas, esses criminosos roubam os seus dados

“Ter o cartão clonado é algo que assusta 83% dos brasileiros; na comparação, a pandemia é uma grande ameaça para 61% dos entrevistados”. A preocupação dos brasileiros leva em conta o medo de ficarem no prejuízo financeiro, ou pelo menos, o prejuízo até o término na análise do possível fraude, pela operadora do cartão fraudado.

Sendo assim, as insituições operadoras de cartão tem o dever de monitorar, em tempo real, as transações financeiras, transacionadas pelos cartões de seus clientes. O desafio destas instituições é terem ferramentas que possam prever a probabilidade da transação ser fraude e agir com tempestividade, preservando os dados e o cliente. Apenas no Brasil, cerca de 12,1 milhões de pessoas já foram vítimas de algum tipo de fraude financeira no último ano. Traduzindo em valores, os golpes financeiros ultrapassaram a cifra de R$ 1,8 bilhão de prejuízo por ano para os últimos 12 meses.

Para abordar esse problema das fraudes em cartões de crédito, uma das principais preocupações das instituições financeiras como bancos e fintechs, usando (i.) uma base histórica, (ii.) um algoritmo de machine learning e (iii.) as compreensão das técnicas e boas práticas da Ciência de Dados, podemos desenvolver uma ferramenta que permitirá prever se a transação que está ocorrendo poderia ser uma possível fraude, gerando uma economia desses milhões de Reais.

Neste script, disponível em meu portifólio do gitHub, usamos uma coleção de informações catalogadas em um período de 2 dias, por usuários de cartões na Europa. Ao longo desse período foram registradas quase 290 mil transações envolvendo cartões, sendo que 492 foram fraudes. Os dados podem ser conferidos neste link.

A análise exploratória dos dados, observou-se que os mesmos são todos no formato numérico e não havia dados faltantes.

As vezes falta de dados missing causa estranheza e ficamos “receiosos” de entender o porque não existem😁😂😁…. mais os dados, por serem transações reais, foram anonimizadas por uma técnica conhecida como Análise de Componentes Principais (Principal Component Analysis — PCA), por isso que os atributos estão com label’s de V1 a V28.

Ainda no processo de exploração dos dados, por se tratar de um problema de classificação binária, separar as variáveis distribuídas pelas classes, nos deu um bom indício de quais variáveis poderia ter um maior de predição.

Verificamos também que a classe positiva (não relacione o sentido da palavra “positivo” com o objetivo do projeto, que é dectar fraude) encontra-se com baixíssima ocorrência no dataSet, mostrando um possível desbalanceamento dos dados. A classe fraudulenta representa 0,17% do total de entradas.

Como os atributos foram anonimizados pela técnica de PCA, assume-se a premissa que foram padronizados. Ao passo que, as colunas Time e Amount não estão padronizados, como as demais features. Essa fase de análise exploratória é muito importante para o cientista de dados obter uma consciência situacional dos dados com o qual esta trabalhando.

Algoritmos de machine learning esperam receber os dados em um formato específico. Logo temos que preparar os dados em uma estrutura que esteja adequada ao algoritmo que você está utilizando. É muito provável que você tenha que realizar tarefas de pré-processamento nos dados. Esse é um passo extremamente necessário dentro do processo.

O desafio é o fato que cada algoritmo requer uma estrutura diferente, o que pode requerer transformações diferentes nos dados. Mas é possível em alguns casos, obter bons resultados sem um trabalho de pré-processamento. Mas, é uma boa prática criar diferentes visões e transformações dos dados, de modo a poder testar diferentes algoritmos de Machine Learning. Testar é o lado divertido de Ciência de dados!!

Neste projeto utilizei a seguinte estratégia:

bit.ly/3f84qBZ

Padronizamos as features necessárias, separamos os dados em variáveis preditoras “X” e variável alvo “y”. Dividimos os dados em “dados de treino” e “dados de teste”.

Assim como nosso veículos🚙 precisam estar com as rodas “balanceadas” senão “puxa” mais para um lado e desgasta apenas um pneu, os dados categóricos também tem que manter um balancemanto entre as classes. Se temos classe majoritária, o modelo de ML possivelmente aprenderá mais sobre ela e temos um problema ➡ modelo sem generalização, devemos evitar. Para balancear classe podemos utilizar técnicas de:

  • oversampling : cria-se de forma randômica, dados sintéticos para classe minoritária, com base em regras estatísticas e de forma aleatória.
  • undersampling: remove-se alguns registros da classe majoritária, preservando as características da classe minoritária, ideal para quando se há um grande volume de dados. Este método pode acarretar em um desempenho inferior na hora de fazer predições da classe majoritária, pois reduz o tamanho do dataset.

ATENÇÃO 1: o ideal é sempre aplicar as técnicas depois de realizar o split dos dados (treino e teste). Se aplicar o balancemento antes, o padrão usado para aplicar o oversampling/undersampling será o mesmo nos dados de treino e de teste, com isso a avaliação do modelo fica comprometida.

ATENÇÃO 2: ao tomar decisão de balancear os dados, diretamente está alterando seu conjunto de dados. Ou seja, saiba o que está fazendo e para que está fazendo!!!!

Optamos por utilizar 3 técnicas de balanceamento, sendo 1 de undersamplig (método 1) e 2 de oversampling( método 2 e 3).

Usei 2 algoritmos de ML para problemas de classificação,

  • (i.) Regressão Logística é um algoritmo de análise preditiva e se baseia no conceito de probabilidade.
  • (ii.) Árvore de decisão, são construídas a partir de um processo de indução, onde os dados são divididos em subconjuntos cada vez mais puro — ganho de informação e entropia.

Treinei esses 2 algoritmos com os 4 dataSet que possuímos sendo 1 com dados desbalanceados e 3 com técnicas diferentes de balanceamento. Ou seja, no fim temos 8 modelos para decidir qual melhor usar.

Treinamos (fit)os modelos com os “dados de treino” desbalanceados e balanceados. Para estimar quão bem o modelo irá performar diante de novos dados, é entregue ao modelo (predict)“dados de teste”, informações que ele não viu ainda, para verificar o quão generalizável está o modelo. Por fim, comparamos a previsões como o que realmente deveria ser previsto (score).

Usaremos como métrica AUC (área sobre a curva) uma das melhores métricas para avaliar um modelo de Machine Leraning, uma vez que quando as previsões estão 100% erradas seu valor é zero e quando estão 100% certas seu valor é 1. Com base nessa métrica avaliamos o melhor modelo.

Verificamos que com os dados balanceados pelo método 3 (SMOTE) apresentou melhor perfamance tanto com algoritmo de Regressão Logistica, com Árvore de decisão. Visualizaremos uma matriz de confusão desses dois melhores modelos.

A confusion matrix permite identificar quais dos 2 tipos de erros o modelo incorreu.

Erros do tipo 1 são os conhecidos como falso Positivo (FP), para nosso caso esse erro é quando o modelo preveu que seria uma fraude ao passo que era uma transação genuína, ou seja, sabe quando você encontra uma oferta relâmpago na Amazon.com e vai comprar teu cartão nega…então… é isso… você poderá ter sido um Falso Positivo, ou ainda.. quando está comprando uma passagem aérea pela com aquele precinho na Itapemirim Airlines….. opa, nesse caso foi vantagem ser um Falso Positivo 😄😄😄.

Erros do tipo 2 são os falso Negativo (FN), ou seja, foi previsto que a transação seria genuína, no entanto era fraude. Para nosso problema de negócio, haveria um prejuízo financeiro para o cliente ou a instiuição do cartão.

Principais conclusões:

  1. Algoritmos de Árvores Decisão obtiveram um desempenho melhor ao lidar com os dados desbalanceados.
  2. Algoritmos de Regressão Logistica foram superiores ao lidar com dados balanceados. Sendo a técnica SMOTE que obteve melhores resultados.
  3. A solução ideal é aquela que melhor atende a instituição, podendo ser a com o maior AUC, ou a com o maior número de detecção de fraudes, ou a menor taxa de FP (falso positivo).
  4. O modelo que melhor conseguiu prever fraudes foi o Modelo de Regressão Logística que treinou com dados balanceados pelo método SMOTE.

Então quer dizer que para todo modelo de classificação podemos usar a Regressão logistica e a técnica de balanceamento SMOTE?

Não… 😶😶😶 vai depender do problema de negócio que quer responder… a qualidade de seus dados… o tempo de treinamento… o volume representativo de dados.. capacidade computacional….. 😄 Por isso que Data Science é apaixonante!! desafios únicos a cada projeto! E ainda podemos fazer um tunning dos hyperparâmetros para ver se melhoramos a acurácia… efim aqui é apenas o começo!!!!

Caso queiram entrar em contato: Angelo Buso!!

--

--

Angelo Buso Jr
Angelo Buso Jr

Written by Angelo Buso Jr

Apaixonado pela minha família 👨‍👩‍👦🐶 , corrida de rua 🏃‍♂️ e vídeo-games 🎮 .

No responses yet