Introdução ao uso de dados desbalanceados e machine learning para detecção de fraudes

Camila Waltrick
Camila Waltrick
Published in
8 min readSep 9, 2022
Técnicas para preparação de dados e algoritmos de machine learning para prevenção, detecção e previsão de fraude em Python

De modo introdutório, esse artigo aborda algumas técnicas de preparação de dados desbalanceados e sugestões de algoritmos de machine learning em Python para prevenção, detecção e previsão de transações fraudulentas.

Preparação do conjunto de dados

Geralmente, a ocorrência de transações fraudulentas compõe uma minoria de registros dentro das bases de dados e o desejado para os negócios é, realmente, que essa quantidade seja a menor possível, até que inexista. Porém, no que se refere ao funcionamento ideal dos algoritmos de aprendizado de máquina, isso se torna um empecilho para obtenção de resultados consistentes. Pode-se nomear tal desequilíbrio de registros como dados desbalanceados, o que se caracteriza como a baixa ocorrência de uma determinada categoria (classe minoritária) em comparação com outra (classe majoritária). Lidar com dados desbalanceados é um dos principais desafios da detecção de fraudes, pois havendo poucos casos de fraude, haverão poucos dados para o modelo aprender a identificá-los.

➡️ Métodos de reamostragem de dados:

A maneira mais direta de ajustar o desequilíbrio dos dados é subamostrar (undersampling) a classe majoritária, que seria os casos de não fraude, ou superamostrar (oversampling) a classe minoritária, os casos de fraude. Ambos os métodos levam a um equilíbrio perfeito entre dados fraudulentos e não fraudulentos, mas existem desvantagens.

  • Undersampling: Com a subamostragem, fazemos sorteios aleatórios das observações “não fraudes”, para corresponder à quantidade de observações de fraudes. A desvantagem é que estaremos efetivamente jogando fora muitos dados e tais informações seriam importantes para o modelo.
  • Oversampling: Com a sobreamostragem, geramos sorteios aleatórios dos casos de fraude e copiamos essas observações para aumentar a quantidade de amostras de fraude que existem nos dados. A desvantagem aqui é que estaremos simplesmente copiando registros e, portanto, estaremos treinando o modelo baseado em muitas duplicatas.
Overview das técnicas de undersampling e oversampling

É possível implementar métodos de reamostragem usando o módulo de aprendizado desbalanceado do Python (imblearn.over_sampling). É compatível com scikit-learn e permite implementar esses métodos em apenas duas linhas de código, como mostrado na figura 1.

Aplicação do módulo imblearn.over_sampling do Python
Fig. 1
  • Sinthetic Minority Oversampling Techniques — SMOTE: A Técnica de Sobreamostragem de Minorias Sintéticas é outra alternativa para ajustar o desequilíbrio ao superamostrar os dados de minoria, ou seja, os casos de fraude. Entretanto, com o SMOTE, não estamos apenas copiando registros da classe minoritária. Em vez disso, conforme demonstrado na figura 2, o SMOTE usa características dos vizinhos mais próximos de casos de fraude para criar novos casos de fraude sintéticos e, assim, evita a duplicação de observações.
Sinthetic minority oversampling techniques — SMOTE: A Técnica de Sobreamostragem de Minorias Sintéticas
Fig. 2

➡️ Recomendações:

  • Se a quantidades de dados for grande e também houverem muitos casos de fraude, poderá ser computacionalmente mais fácil subamostrar, em vez de aumentar ainda mais os dados. Contudo, na maioria dos casos, descartar dados não é o ideal.
  • Quando se trata de oversampling, o SMOTE é mais robusto, pois não duplica dados; mas isso só funcionará bem se os casos de fraude forem bastante semelhantes entre si. Se a fraude estiver distribuída pelos registros e não for muito distinta, usar vizinhos mais próximos para criar mais casos de fraude introduz um pouco de ruído nos dados, visto que os vizinhos mais próximos podem não ser, necessariamente, casos de fraude.
  • Um detalhe imprescindível ao usar métodos de reamostragem é apenas reamostrar no conjunto de treinamento. O objetivo é treinar melhor o modelo fornecendo a ele quantidades equilibradas de dados, não é desejado prever amostras sintéticas.
  • Certifique-se de que não haja duplicatas ou dados sintéticos nos dados de teste, para que você possa testar seu modelo apenas em dados reais. A maneira de fazer isso é primeiro dividir os dados em um conjunto de treinamento e teste, como exemplo da figura 3. Em seguida, reaproveite apenas o conjunto de treinamento. Aplique o fit do modelo nos dados de treinamento reamostrados e, por fim, obtenha as métricas de desempenho comparando com os dados de teste originais, não reamostrados.
Fig. 3

Estes foram alguns exemplos de técnicas para preparar os dados para os procedimentos subsequentes, como por exemplo, a construção dos modelos baseados em machine learning.

À propósito, se houverem dúvidas sobre o que é machine learning e quais os tipos de aprendizado (supervisionado, não supervisionado e por reforço), confira este artigo que escrevi sobre o assunto aqui.

Previsão de fraude com aprendizado supervisionado

Classificação é o método de aprendizado supervisionado que consiste na identificação de qual classe uma nova observação pertence, com base em um conjunto de dados de treinamento contendo observações cuja classe é conhecida. A previsão de fraude é um problema de classificação binária, pois tentamos prever se as observações são fraudulentas, sim ou não. No caso de detecção de fraude, a classe negativa não-fraude é a classe majoritária, enquanto os casos de fraude são a classe minoritária.

➡️ Exemplos de algoritmos de classificação para detecção de fraudes

  • Regressão logística: é um dos modelos mais usados ​​para classificação binária. É um algoritmo simples que se pode usar como uma linha de base de desempenho. Ele também pode ser ajustado para funcionar razoavelmente bem em dados altamente desequilibrados, o que o torna bastante útil para detecção de fraudes.
  • Redes neurais: são capazes de ajustar modelos altamente não lineares aos nossos dados. Tendem a ser um pouco mais complexas de implementar do que a maioria dos outros classificadores, mas é um modelo adequado para essa aplicação.
  • Decision tree: as árvores de decisão dão resultados muito transparentes, que são facilmente interpretados. No entanto, elas são propensas a se ajustarem demais aosdados.
  • Random forest: Florestas aleatórias são uma opção mais robusta de usar do que a anterior, pois constroem uma infinidade de árvores de decisão ao treinar o modelo e gerar a classe que é a classe média ou a moda prevista de todas as árvores individuais. Mais especificamente, floresta aleatória consiste em uma coleção de árvores em um subconjunto aleatório de recursos. As previsões finais são os resultados combinados dessas árvores. Esse algoritmo pode lidar com dados complexos, não é propenso a overfiting e pode ser ajustado para funcionar bem em dados altamente desequilibrados. A desvantagem é que pode ser computacionalmente pesado ​​para execução. No entanto, florestas aleatórias são muito populares para detecção de fraudes.

Detecção de fraude com aprendizado não supervisionado

Quando não há rótulos de fraude no conjunto de dados, pode-se usar o aprendizado não supervisionado para detectar comportamentos suspeitos. Comportamento suspeito é algo muito incomum em seus registros, por exemplo, transações de valores muito altos ou muitas transações em um curto período de tempo. Esse comportamento geralmente é uma indicação de fraude, mas é claro que também pode ser incomum, mas não fraudulento. Esse tipo de detecção de fraude é desafiador, porque você não tem rótulos confiáveis ​​para verificar os resultados do seu modelo. De fato, não ter rótulos é a realidade para muitos casos na busca por fraudes.

Para detectar comportamentos suspeitos, você precisa entender muito bem seus dados. Uma boa análise exploratória de dados, incluindo gráficos de distribuição, verificação de valores discrepantes, correlações e etc é crucial. Além disso, você precisa investigar se seus dados são homogêneos ou se diferentes tipos de clientes exibem comportamentos muito diferentes.

➡️Exemplos de detecção de fraudes com aprendizado não supervisionado

  • Segmentação de clientes: É necessário garantir que todos os seus pontos de dados sejam do mesmo tipo. Por exemplos, são indivíduos, grupos de pessoas, empresas ou organizações governamentais? Em seguida, pense se os pontos de dados diferem em padrões de gastos, idade, localização ou frequência das transações. Especialmente para fraudes de cartão de crédito, a localização pode ser um grande indicativo de fraude. Isso também vale para e-commerces, onde está localizado o endereço IP se trata do local para onde o produto foi encomendado para ser enviado? Se estiverem distantes, isso pode não ser normal para a maioria dos clientes, a menos que indiquem o contrário. Outra coisa para se ter em mente é a necessidade de criar um modelo separado em cada segmento, porque deseja-se detectar comportamentos suspeitos em cada segmento. Mas isso significa que você precisa pensar em como agregar os vários resultados do modelo de volta em uma lista final.
Segmentação de clientes e suas características comportamentais
Exemplo de segmentação de clientes e suas características comportamentais
  • Clustering: O objetivo de qualquer modelo de clustering (ou agrupamento) é detectar padrões. Mais especificamente, agrupar seus dados em clusters distintos, que são compostos de pontos de dados muito semelhantes entre si, mas distintos dos pontos de dados nos outros clusters. Isso possibilita a sinalização desses dados como estranhos ou suspeitos de fraude. A imagem, abaixo, mostra um conjunto de dados original e o agrupamento dele em três clusters distintos. Exemplos de algoritmos de clustering são o K-means e o DBSCAN.
Algoritmos de clustering para agrupamento de dados na detecção de fraude
Exemplo de conjunto de dados original e o agrupamento dele em três clusters distintos
  • Outra abordagem usando clusters menores: Em vez de tratar a fraude como a exceção excêntrica nos clusters existentes, também é possível usar os clusters menores como uma sinalização de fraude. Essa abordagem pode ser utilizada quando o comportamento fraudulento tiver pontos em comum e, assim, se agrupar entre os dados. Nesse sentido, se espera que a fraude esteja agrupada em pequenos grupos, em vez de ser os outliers nos grupos maiores. A imagem abaixo é meramente explicativa, num caso real pode não ser tão fácil assim identificar os clusters menores, portanto a sugestão é utilizar PCA (Principal Component Analysis) — técnica para reduzir a dimensionalidade dos conjuntos de dados, aumentando a interpretabilidade, mas ao mesmo tempo minimizando a perda de informação.
Exemplo de uso do menor cluster para sinalizar como fraudes

Conclusão

De fato, o desbalanceamento de classes é um desafio comum a ser enfrentado quando o assunto é transações fraudulentas. Nesta publicações, foram exploradas algumas alternativas para equilibrar a quantidade de registros de cada classe, enfatizando que deve-se aplicar a reamostragem apenas no conjunto de treinamento e testar/validar o modelo somente com dados reais. Além disso, abordamos algumas técnicas de aprendizado de máquina supervisionado e não supervisionado que podem compor uma solução que vise a prevenção, detecção e/ou previsão de transações fraudulentas. Como sequência desse estudo, serão desenvolvidas outras publicação, em breve.

--

--