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 fornecer um modelo com dados tabulares usando um console. Essa oferta é a adição favorita para a disponibilização e o treinamento de modelo com base 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

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

2. Sobre os dados

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

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

  1. Os atributos V1, V2, ... V28 são os principais componentes obtidos com o PCA, e os únicos atributos que não foram transformados com PCA são "Time". e "Valor".
  2. Recurso "Time" contém os segundos decorridos entre cada transação e a primeira transação no conjunto de dados.
  3. Valor do atributo é o valor da transação. Esse atributo pode ser usado para aprendizado baseado em custo, dependente de exemplo.
  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) para mineração de Big Data e detecção de fraudes.

Mais detalhes sobre projetos atuais e anteriores sobre 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. Calibração da probabilidade com underamostragem para classificação desequilibrada. In Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015

Dal Pozzolo, Andrea Caelen, Olivier; Le Borgne, Yann-Ael Waterschoot, Serge Bontempi, Gianluca Lições aprendidas sobre detecção de fraudes de cartão de crédito da perspectiva de um profissional, sistemas especializados com aplicativos,41,10,4915-4928,2014, Pergamon

Dal Pozzolo, Andrea Boracchi, Giacomo Caelen, Olivier; Alippi, Cesare Bontempi, Gianluca Detecção de fraude de cartão de crédito: uma modelagem realista e uma nova estratégia de aprendizado, transações IEEE em redes neurais e sistemas de aprendizado,29,8,3784-3797,2018,IEEE

Dal Pozzolo, Adaptive Machine learning para detecção de fraudes em cartões de crédito da Andrea, tese de doutorado da ULB MLG (supervisionada por G. Bontempi)

Carcillo, Fabrizio Dal Pozzolo, Andrea Le Borgne, Yann-Aël Caelen, Olivier; Mazzer, Yannis; Bontempi, Gianluca Scarff: um framework escalonável para detecção de fraudes de cartão de crédito por streaming com o Spark, Information fusion,41, 182-194,2018,Elsevier

Carcillo, Fabrizio Le Borgne, Yann-Aël Caelen, Olivier; Bontempi, Gianluca Streaming de estratégias de aprendizado ativas para detecção de fraudes 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 Combinar aprendizado não supervisionado e supervisionado na detecção de fraudes de cartões de crédito , 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. Ativar a API BigQuery

Acesse o BigQuery e selecione "Ativar", caso essa opção ainda não esteja ativada. Você vai precisar disso para criar seu modelo.

4. explorar os dados

Etapa 1: acesse o BigQuery

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

Etapa 2: analisar os dados usando a consulta

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

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

Etapa 3: executar

Pressione o comando "Executar" acima para executar a consulta

c670e136ecd58236.png

Resultados

Deve estar no painel "Query Results" e ser parecido com este exemplo. 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 podem incluir

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. crie um conjunto de dados de saída

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

  1. No painel Explorer - À esquerda , selecione o projeto em que você está trabalhando no momento e clique nos três pontos ao lado dele

7618699754e066bd.png

  1. Clique em "Create Dataset" no canto superior direito.

17851cc9db05dc1.png

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

b8b6731408f61d57.png

6. Criar modelo de regressão logística

Etapa 1: criar instrução

Na janela "Consulta", digite a consulta abaixo para a criação do modelo. Entenda as principais opções com essa afirmação. Explicado neste link.

INPUT_LABEL_COLS indica o marcador de previsão

AUTO_CLASS_WEIGHTS são usados para conjuntos de dados desequilibrados

MODEL_TYPE indica que 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. Esse processo leva alguns minutos para ser concluído.

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

3385a54d3907443e.png

  1. O painel Explorer terá o modelo criado
  2. O painel de resultados da consulta terá a duração necessária para processar o SQL de ML, semelhante a qualquer instrução SQL
  3. O painel de resultados da consulta também terá o link "Ir para o modelo" para você analisar.

Etapa 3: explorar

Explore o modelo criado clicando em Ir para o modelo ou no painel Explorer. As guias fornecem informações sobre o modelo criado , treinamento, avaliação etc., Analisar os resultados

b350f1b94835f2d1.png

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

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

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

Nesta etapa, vamos conferir o desempenho do nosso modelo.

Depois que o job de treinamento do modelo for concluído, clique no modelo que você acabou de treinar e dê uma olhada na 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 mais ou menos assim. roc_auc geralmente é mais importante em um conjunto de dados desequilibrado

c3c80286082dc336.png

Para saber mais sobre os resultados. Procure os documentos do ML.Avaliar aqui.

Precisão e recall

Curva ROC e AUC

8. Prever a classe para um determinado tempo

Pressione Compose 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 será parecida com esta (os números podem variar)

676fc8accdab2f6c.png

Neste caso, estamos exibindo o valor com a probabilidade associada do rótulo. A coluna de classe indica quais foram os resultados reais.

Para saber mais sobre ML.PREDICT. Acesse este link

9. Limpeza

Se você quiser limpar os recursos criados neste laboratório, abra o conjunto de dados no painel Explorer no lado esquerdo

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 machine learning supervisionado.

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

Qual é a próxima etapa?

Veja algumas dessas outras maneiras envolvidas na previsão

Documentos de referência