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.
- 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".
- O recurso "Tempo" contém os segundos decorridos entre cada transação e a primeira no conjunto de dados.
- O atributo "Amount" é o valor da transação e pode ser usado, por exemplo, no aprendizado sensível a custos dependente de exemplos.
- 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.
- 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.

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

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
- No painel "Explorer" (lado esquerdo), escolha o projeto em que você está trabalhando e clique nos três pontos ao lado dele.

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

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

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

- O painel do Explorer vai ter o modelo criado
- O painel "Resultados da consulta" vai mostrar a duração do processamento do SQL de ML, assim como qualquer instrução SQL.
- 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

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.

Para saber mais sobre os resultados. Confira a documentação do ML.Evaluate aqui.
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):

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.

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

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
- Introdução ao BigQuery ML
- Previsão de série temporal com o BigQuery ML
- Modelo de detecção de fraudes usando o AutoML
- Detecção de fraude usando o TensorFlow