BigQuery ML para detecção de fraudes em transações de cartão de crédito usando o console

1. Introdução

Neste laboratório, você vai usar o BigQuery para treinar e veicular um modelo com dados tabulares usando um console. Essa oferta é a adição favorita para a disponibilização e o treinamento de modelos baseados em SQL. Com o BigQuery ML, é possível criar e executar modelos de machine learning no BigQuery usando consultas SQL. O objetivo é democratizar o machine learning, de modo que os especialistas em SQL criem modelos usando as respectivas ferramentas e aumentem a velocidade de desenvolvimento ao eliminar a necessidade de movimentar os dados.

O que você vai aprender

  • Analisar os dados disponíveis no BigQuery
  • Criar um modelo usando SQL no BigQuery com o console
  • Avaliar os resultados do modelo criado
  • Prever se uma transação é fraudulenta ou não com o modelo criado

2. Sobre os dados

Os conjuntos de dados contêm transações feitas com cartões de crédito em setembro de 2013 por titulares de cartões europeus. Esse conjunto de dados apresenta transações que ocorreram em dois dias, em que temos 492 fraudes de 284.807 transações. Ela é muito desequilibrada, e a classe positiva (fraudes) representa 0,172% de todas as transações.

Ela contém apenas variáveis de entrada numéricas, que são o resultado de uma transformação de PCA. Infelizmente, devido a questões de confidencialidade, não podemos fornecer os recursos originais e mais informações básicas sobre os dados.

  1. Recursos V1, V2, ... V28 são os principais componentes obtidos com PCA. Os únicos recursos que não foram transformados com PCA são "Time" e "Amount".
  2. O recurso "Tempo" contém os segundos decorridos entre cada transação e a primeira no conjunto de dados.
  3. O atributo "Amount" é o valor da transação e pode ser usado, por exemplo, no aprendizado sensível a custos dependente de exemplos.
  4. O atributo "Class" é a variável de resposta e assume o valor 1 em caso de fraude e 0 caso contrário.

O conjunto de dados foi coletado e analisado durante uma colaboração de pesquisa da Worldline e do Machine Learning Group ( http://mlg.ulb.ac.be) da ULB (Université Libre de Bruxelles) sobre mineração de Big Data e detecção de fraudes.

Mais detalhes sobre projetos atuais e anteriores em tópicos relacionados estão disponíveis em https://www.researchgate.net/project/Fraud-detection-5 e na página do projeto DefeatFraud.

Citação:

Andrea Dal Pozzolo, Olivier Caelen, Reid A. Johnson e Gianluca Bontempi. Calibrating Probability with Undersampling for Unbalanced Classification. In Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015

Dal Pozzolo, Andrea; Caelen, Olivier; Le Borgne, Yann-Ael; Waterschoot, Serge; Bontempi, Gianluca. Learned lessons in credit card fraud detection from a practitioner perspective, Expert systems with applications,41,10,4915-4928,2014, Pergamon

Dal Pozzolo, Andrea; Boracchi, Giacomo; Caelen, Olivier; Alippi, Cesare; Bontempi, Gianluca. Credit card fraud detection: a realistic modeling and a novel learning strategy,IEEE transactions on neural networks and learning systems,29,8,3784-3797,2018,IEEE

Dal Pozzolo, Andrea Adaptive Machine learning for credit card fraud detection Tese de doutorado da ULB MLG (supervisão de G. Bontempi)

Carcillo, Fabrizio; Dal Pozzolo, Andrea; Le Borgne, Yann-Aël; Caelen, Olivier; Mazzer, Yannis; Bontempi, Gianluca. Scarff: a scalable framework for streaming credit card fraud detection with Spark, Information fusion,41, 182-194,2018,Elsevier

Carcillo, Fabrizio; Le Borgne, Yann-Aël; Caelen, Olivier; Bontempi, Gianluca. Estratégias de aprendizado ativo de streaming para detecção de fraude de cartão de crédito na vida real: avaliação e visualização,International Journal of Data Science and Analytics, 5,4,285-300,2018,Springer International Publishing

Bertrand Lebichot, Yann-Aël Le Borgne, Liyun He, Frederic Oblé, Gianluca Bontempi Deep-Learning Domain Adaptation Techniques for Credit Cards Fraud Detection, INNSBDDL 2019: Recent Advances in Big Data and Deep Learning, pp 78-88, 2019

Fabrizio Carcillo, Yann-Aël Le Borgne, Olivier Caelen, Frederic Oblé, Gianluca Bontempi Combining Unsupervised and Supervised Learning in Credit Card Fraud Detection Information Sciences, 2019

3. Configurar o ambiente

Para executar este codelab, você vai precisar de um projeto do Google Cloud Platform com o faturamento ativado. Para criar um projeto, siga estas instruções.

  1. Ative a API bigquery

Acesse BigQuery e selecione "Ativar" se ainda não estiver ativado. Você vai precisar disso para criar seu modelo.

4. explore os dados

Etapa 1: acesse o BigQuery

Procure o BigQuery em https://cloud.google.com/console.

Etapa 2: analisar os dados usando consultas

No editor , digite a consulta SQL abaixo para analisar os dados no conjunto de dados público .

SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` LIMIT 5

Etapa 3: execução

Pressione o comando "Executar" acima para executar a consulta.

c670e136ecd58236.png

Resultados

Ele vai aparecer no painel "Resultados da consulta" e será parecido com isto: Os dados podem variar

be082fb135879158.png

Analise as colunas envolvidas e a saída.

É possível executar várias consultas para entender como os dados são distribuídos. Alguns exemplos:

SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=0;
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=1;

5. Criar um conjunto de dados de saída

Etapa 1: criar um conjunto de dados para a criação do modelo

  1. No painel "Explorer" (lado esquerdo), escolha o projeto em que você está trabalhando e clique nos três pontos ao lado dele.

7618699754e066bd.png

  1. Clique em "Criar conjunto de dados" no canto superior direito.

17851cc9db05dc1.png

  1. Insira os detalhes do nome, da retenção, do local etc. do conjunto de dados. Usar essas configurações

b8b6731408f61d57.png

6. Criar modelo de regressão logística

Etapa 1: criar uma declaração

Na janela de consulta, digite a consulta abaixo para criar o modelo. Entenda as principais opções com esta declaração. Explicado neste link.

INPUT_LABEL_COLS indica o rótulo de previsão

AUTO_CLASS_WEIGHTS são usados para conjuntos de dados desequilibrados

MODEL_TYPE indica o algoritmo usado. Neste caso, é a regressão logística.

DATA_SPLIT_METHOD indica a divisão entre os dados de treinamento e teste.

CREATE OR REPLACE MODEL advdata.ulb_fraud_detection 
TRANSFORM(
    * EXCEPT(Amount),
    SAFE.LOG(Amount) AS log_amount
)
OPTIONS(
    INPUT_LABEL_COLS=['class'],
    AUTO_CLASS_WEIGHTS = TRUE,
    DATA_SPLIT_METHOD='seq',
    DATA_SPLIT_COL='Time',
    MODEL_TYPE='logistic_reg'
) AS

SELECT 
 *
FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`

Etapa 2: executar

Execute a instrução acima. Isso deve levar alguns minutos.

Observe os principais pontos após a conclusão da execução

3385a54d3907443e.png

  1. O painel do Explorer vai ter o modelo criado
  2. O painel "Resultados da consulta" vai mostrar a duração do processamento do SQL de ML, assim como qualquer instrução SQL.
  3. O painel "Resultados da consulta" também terá o link "Acessar o modelo" para você explorar.

Etapa 3: explorar

Clique em "Acessar modelo" ou no painel "Explorador" para conferir o modelo criado. As guias fornecem informações sobre o modelo criado, treinamento, avaliação etc. Analisar os resultados

b350f1b94835f2d1.png

Vamos falar mais sobre isso nas próximas seções

Para saber mais sobre a regressão logística, clique aqui.

7. Como explorar métricas de avaliação de modelo

Nesta etapa, vamos conferir o desempenho do nosso modelo.

Depois que o trabalho de treinamento de modelo for concluído, clique no modelo que você treinou e consulte a guia "Avaliar". Há muitas métricas de avaliação aqui. Vamos nos concentrar em apenas uma :roc_auc

 SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)

Os resultados seriam parecidos com este. Em geral, roc_auc é mais importante em um conjunto de dados desbalanceado.

c3c80286082dc336.png

Para saber mais sobre os resultados. Confira a documentação do ML.Evaluate aqui.

Precisão e recall

Curva ROC e AUC

8. Prever a classe para um determinado período

Clique em "Escrever nova consulta" e execute o SQL abaixo. O tempo identificado aqui tem um valor fraudulento. Estamos tentando avaliar se a previsão funciona

SELECT Amount, predicted_class_probs, Class
FROM ML.PREDICT( MODEL advdata.ulb_fraud_detection,
 (SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` WHERE Time = 85285.0)
)

A saída vai ser parecida com esta (os números podem variar):

676fc8accdab2f6c.png

Neste caso, mostramos o valor com a probabilidade associada do rótulo. A coluna "Classe" indica quais foram os resultados reais.

Para saber mais sobre ML.PREDICT. Confira aqui

9. Limpeza

Se você quiser limpar os recursos criados com este laboratório, abra o conjunto de dados no painel "Explorador" à esquerda.

e7d18fadd2b781be.png

Clique em "Excluir conjunto de dados" no canto superior direito.

b47bc819869bed6c.png

Insira o nome do conjunto de dados novamente para confirmar os detalhes. No nosso caso, será advdata.

10. Parabéns

Parabéns! Você criou seu primeiro modelo, avaliou e fez previsões usando o aprendizado de máquina supervisionado.

Agora você sabe as principais etapas necessárias para criar um modelo de regressão logística.

Qual é a próxima etapa?

Confira algumas dessas outras maneiras envolvidas na previsão

Documentos de referência