Aumente as transações fraudulentas usando dados sintéticos no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Aumente as transações de fraude usando dados sintéticos no Amazon SageMaker

Desenvolver e treinar modelos de fraude de aprendizado de máquina (ML) bem-sucedidos requer acesso a grandes quantidades de dados de alta qualidade. O fornecimento desses dados é desafiador porque os conjuntos de dados disponíveis às vezes não são grandes o suficiente ou suficientemente imparciais para treinar o modelo de ML de forma útil e podem exigir custo e tempo significativos. Os requisitos de regulamentação e privacidade impedem ainda mais o uso ou compartilhamento de dados, mesmo dentro de uma organização corporativa. O processo de autorização de uso e acesso a dados confidenciais geralmente atrasa ou inviabiliza projetos de ML. Como alternativa, podemos enfrentar esses desafios gerando e usando dados sintéticos.

Os dados sintéticos descrevem conjuntos de dados criados artificialmente que imitam o conteúdo e os padrões do conjunto de dados original para lidar com riscos regulatórios e conformidade, tempo e custos de fornecimento. Os geradores de dados sintéticos usam os dados reais para aprender recursos, correlações e padrões relevantes para gerar as quantidades necessárias de dados sintéticos correspondentes às qualidades estatísticas do conjunto de dados originalmente ingerido.

Os Dados Sintéticos têm sido usados ​​em ambientes de laboratório para mais de duas décadas; o mercado tem evidências de utilidade que estão acelerando a adoção nos setores comercial e público. Gartner prevê que até 2024, 60 por cento dos dados usados ​​para o desenvolvimento de ML e soluções analíticas serão gerados sinteticamente e que o uso de dados sintéticos continuará a aumentar substancialmente.

A Autoridade de Conduta Financeira, órgão regulador do Reino Unido, reconhece que “o acesso aos dados é o catalisador da inovação, e os dados financeiros sintéticos podem desempenhar um papel no apoio à inovação e permitir que novos entrantes desenvolvam, testem e demonstrem o valor de novas soluções”.

Amazon SageMaker GroundTruth atualmente suporta geração de dados sintéticos de dados de imagens sintéticas rotuladas. Esta postagem de blog explora a geração de dados sintéticos tabulares. Dados estruturados, como tabelas únicas e relacionais, e dados de séries temporais são os tipos mais frequentemente encontrados em análises corporativas.

Esta é uma postagem de blog em duas partes; criamos dados sintéticos na primeira parte e avaliamos sua qualidade em parte dois.

Nesta postagem do blog, você aprenderá como usar a biblioteca de código aberto ydata-sintético e Blocos de anotações do AWS SageMaker para sintetizar dados tabulares para um caso de uso de fraude, onde não temos transações fraudulentas suficientes para treinar um modelo de fraude de alta precisão. O processo geral de treinamento de um modelo de fraude é abordado neste postar.

Visão geral da solução

O objetivo deste tutorial é sintetizar a classe minoritária de um conjunto de dados de fraude de cartão de crédito altamente desequilibrado usando um rede adversária generativa (GAN) chamado WGAN-GP para aprender padrões e propriedades estatísticas de dados originais e, em seguida, criar amostras infinitas de dados sintéticos que se assemelham aos dados originais. Esse processo também pode ser usado para aprimorar os dados originais aumentando a amostragem de eventos raros, como fraude, ou para gerar casos extremos que não estão presentes no original.

Usamos um conjunto de dados de fraude de cartão de crédito publicado por ULB, que pode ser baixado em Kaggle. A geração de dados sintéticos para a classe minoritária ajuda a resolver problemas relacionados a conjuntos de dados desequilibrados, o que pode ajudar no desenvolvimento de modelos mais precisos.

Usamos os serviços da AWS, incluindo Amazon SageMaker e Amazon S3, que incorrem em custos para usar recursos de nuvem.

Configure o ambiente de desenvolvimento

O SageMaker fornece uma instância de notebook Jupyter gerenciada para criação, treinamento e implantação de modelos.

Pré-requisitos:

Você deve ter uma conta da AWS para executar o SageMaker. Você pode ter começado com o SageMaker e tente tutoriais práticos.

Para obter instruções sobre como configurar seu ambiente de trabalho Jupyter Notebook, consulte Introdução às instâncias de notebook do Amazon SageMaker.

Etapa 1: configurar sua instância do Amazon SageMaker

  1. Faça login no console da AWS e procure por “SageMaker”.
  2. Selecionar Studio.
  3. Selecionar Instâncias de notebook na barra esquerda e selecione Criar instância de notebook.
  4. Na próxima página (como mostrado na imagem a seguir), selecione as configurações da máquina virtual (VM) de acordo com suas necessidades e selecione Criar instância de notebook. Observe que usamos uma VM otimizada para ML sem GPU e 5 GB de dados, ml.t3.medium executando um kernel Amazon Linux 2 e Jupyter Lab 3.
    Criar instância de notebook
  5. Uma instância de bloco de anotações estará pronta para uso em alguns minutos.
  6. Selecionar Abra o JupyterLab lançar.
    Aumente as transações fraudulentas usando dados sintéticos no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.
  7. Agora que temos um JupyterLab com nossas especificações necessárias, vamos instalar a biblioteca sintética.
pip install ydata-synthetic

Etapa 2: baixe ou extraia o conjunto de dados real para criar dados sintéticos

Baixe os dados de referência do Kaggle manualmente, como fazemos aqui, ou programaticamente por meio da API do Kaggle, se você tiver uma conta do Kaggle. Se você explorar esse conjunto de dados, notará que a classe “fraude” contém muito menos dados do que a classe “não fraude”.

Se você usar esses dados diretamente para previsões de aprendizado de máquina, os modelos sempre poderão aprender a prever "não fraude". Um modelo terá facilmente uma precisão maior em casos não fraudulentos, pois os casos de fraude são raros. No entanto, como detectar os casos de fraude é nosso objetivo neste exercício, aumentaremos os números das classes de fraude com dados sintéticos modelados a partir dos dados reais.

Crie uma pasta de dados no JupyterLab e carregue o arquivo de dados do Kaggle nela. Isso permitirá que você use os dados do bloco de anotações, pois o SageMaker vem com armazenamento que você teria especificado ao instanciar o notebook.

Aumente as transações fraudulentas usando dados sintéticos no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Este conjunto de dados tem 144 MB

Aumente as transações fraudulentas usando dados sintéticos no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Você pode ler os dados usando o código padrão por meio da biblioteca pandas:

import pandas as pd
data = pd.read_csv('./data/creditcard.csv')

Os dados de detecção de fraude têm certas características, a saber:

  • Grandes desequilíbrios de classe (normalmente em relação a pontos de dados não fraudulentos).
  • Preocupações relacionadas à privacidade (devido à presença de dados confidenciais).
  • Um grau de dinamismo, em que um usuário mal-intencionado está sempre tentando evitar a detecção por sistemas de monitoramento de transações fraudulentas.
  • Os conjuntos de dados disponíveis são muito grandes e geralmente não rotulados.

Agora que você inspecionou o conjunto de dados, vamos filtrar a classe minoritária (a classe “fraude” do conjunto de dados do cartão de crédito) e realizar as transformações necessárias. Você pode conferir as transformações de dados deste caderno.

Quando esse conjunto de dados de classe minoritária é sintetizado e adicionado de volta ao conjunto de dados original, ele permite a geração de um conjunto de dados sintetizado maior que aborda o desequilíbrio nos dados. Podemos obter maior precisão de previsão por treinando um modelo de detecção de fraude usando o novo conjunto de dados.

Vamos sintetizar o novo conjunto de dados de fraude.

Etapa 3: treinar os sintetizadores e criar o modelo

Como você tem os dados prontamente disponíveis no SageMaker, é hora de colocar nossos modelos GAN sintéticos em funcionamento.

Uma rede adversária generativa (GAN) tem duas partes:

A gerador aprende a gerar dados plausíveis. As instâncias geradas tornam-se exemplos de treinamento negativo para o discriminador.

A discriminador aprende a distinguir os dados falsos do gerador dos dados reais. O discriminador penaliza o gerador por produzir resultados implausíveis.

Quando o treinamento começa, o gerador produz dados obviamente falsos e o discriminador aprende rapidamente a dizer que é falso. À medida que o treinamento avança, o gerador se aproxima de produzir uma saída que pode enganar o discriminador. Finalmente, se o treinamento do gerador correr bem, o discriminador fica pior em dizer a diferença entre o real e o falso. Ele começa a classificar os dados falsos como reais e sua precisão diminui.

Tanto o gerador quanto o discriminador são redes neurais. A saída do gerador é conectada diretamente à entrada do discriminador. Através dos retropropagação, a classificação do discriminador fornece um sinal que o gerador usa para atualizar seus pesos.

Etapa 4: amostrar dados sintéticos do sintetizador

Agora que você construiu e treinou seu modelo, é hora de amostrar os dados necessários alimentando o modelo com ruído. Isso permite que você gere quantos dados sintéticos desejar.

Nesse caso, você gera uma quantidade igual de dados sintéticos à quantidade de dados reais porque isso facilita a comparação de tamanhos de amostra semelhantes na Etapa 5.

Temos a opção de amostrar linhas contendo transações fraudulentas – que, quando combinadas com os dados de fraude não sintéticos, levarão a uma distribuição igualitária das classes “fraude” e “não-fraude”. O original Conjunto de dados do Kaggle continha 492 fraudes de 284,807 transações, então criamos uma mesma amostra do sintetizador.

# use the same shape as the real data
synthetic_fraud = synthesizer.sample(492)

Temos a opção de aumentar a amostragem de linhas contendo transações fraudulentas em um processo chamado aumento de dados – que, quando combinado com os dados de fraude não sintéticos, levará a uma distribuição igualitária das classes “fraude” e “não-fraude”.

Passo 5: Compare e avalie os dados sintéticos com os dados reais

Embora esta etapa seja opcional, você pode visualizar e avaliar qualitativamente os dados sintéticos gerados em relação aos dados reais usando um gráfico de dispersão.

Isso nos ajuda a iterar nosso modelo ajustando parâmetros, alterando o tamanho da amostra e fazendo outras transformações para gerar os dados sintéticos mais precisos. Essa natureza de precisão sempre depende do objetivo da síntese

A imagem abaixo mostra a semelhança entre a fraude real e os pontos de dados de fraude sintética nas etapas de treinamento. Isso fornece uma boa inspeção qualitativa da semelhança entre os dados sintéticos e reais e como isso melhora à medida que os executamos por mais épocas (trânsito de todo o conjunto de dados de treinamento por meio do algoritmo). Observe que, à medida que executamos mais épocas, o conjunto de padrões de dados sintéticos se aproxima dos dados originais.

Aumente as transações fraudulentas usando dados sintéticos no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Etapa 6: limpar

Por fim, interrompa a instância do notebook quando terminar a síntese para evitar custos inesperados.

Conclusão

Como algoritmos de aprendizado de máquina e estruturas de codificação evoluir rapidamente, dados de alta qualidade em escala são o recurso mais escasso em ML. Conjuntos de dados sintéticos de boa qualidade podem ser usados ​​em uma variedade de tarefas.

Nesta postagem de blog, você aprendeu a importância de sintetizar o conjunto de dados usando uma biblioteca de código aberto que usa WGAN-GP. Esta é uma área de pesquisa ativa com milhares de artigos sobre GANs publicados e muitas centenas de GANs nomeados disponíveis para você experimentar. Existem variantes otimizadas para casos de uso específicos, como tabelas relacionais e dados de séries temporais.

Você pode encontrar todo o código usado para este artigo neste cadernoe, é claro, mais tutoriais como este estão disponíveis no SageMaker página de documentação oficial.

No segunda parte Nesta série de postagens de blog em duas partes, faremos um mergulho profundo em como avaliar a qualidade dos dados sintéticos de uma perspectiva de fidelidade, utilidade e privacidade.


Sobre o autor

Aumente as transações fraudulentas usando dados sintéticos no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Faris Haddad é o Líder de Data & Insights na equipe AABG Strategic Pursuits. Ele ajuda as empresas a se tornarem orientadas por dados com sucesso.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS