BigQuery ML per il rilevamento di frodi nelle transazioni con carta di credito tramite la console

1. Introduzione

In questo lab utilizzerai BigQuery per addestrare e gestire un modello con dati tabulari utilizzando una console. Questa offerta è l'aggiunta preferita all'addestramento e alla pubblicazione di modelli basati su SQL. BigQuery ML consente agli utenti di creare ed eseguire modelli di machine learning in BigQuery utilizzando query SQL. L'obiettivo è democratizzare il machine learning consentendo a chi utilizza SQL di creare modelli con i propri strumenti esistenti e aumentare la velocità di sviluppo attraverso l'eliminazione della necessità di spostare i dati.

Cosa imparerai a fare

  • Esplorare i dati disponibili in BigQuery
  • Creare un modello utilizzando SQL in BigQuery utilizzando la console
  • Valuta i risultati del modello creato
  • Prevedi se una transazione è fraudolenta o meno con il modello creato

2. Informazioni sui dati

I set di dati contengono le transazioni effettuate con carte di credito a settembre 2013 dai titolari di carte europei. Questo set di dati presenta transazioni avvenute in due giorni, in cui abbiamo 492 frodi su 284.807 transazioni. È molto sbilanciato: la classe positiva (frodi) rappresenta lo 0, 172% di tutte le transazioni.

Contiene solo variabili di input numeriche che sono il risultato di una trasformazione PCA. Purtroppo, a causa di problemi di riservatezza, non possiamo fornire le funzionalità originali e ulteriori informazioni di base sui dati.

  1. Features V1, V2, ... V28 sono i componenti principali ottenuti con PCA. Le uniche funzionalità che non sono state trasformate con PCA sono "Time" e "Amount".
  2. La funzionalità "Tempo" contiene i secondi trascorsi tra ogni transazione e la prima transazione nel set di dati.
  3. La caratteristica "Importo" è l'importo della transazione. Questa caratteristica può essere utilizzata, ad esempio, per l'apprendimento sensibile ai costi dipendente dall'esempio.
  4. La funzionalità "Classe" è la variabile di risposta e assume il valore 1 in caso di frode e 0 in caso contrario.

Il set di dati è stato raccolto e analizzato durante una collaborazione di ricerca tra Worldline e il Machine Learning Group ( http://mlg.ulb.ac.be) dell'ULB (Université Libre de Bruxelles) su estrazione di big data e rilevamento di frodi.

Maggiori dettagli sui progetti attuali e passati su argomenti correlati sono disponibili su https://www.researchgate.net/project/Fraud-detection-5 e nella pagina del progetto DefeatFraud.

Citazione:

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 ULB MLG PhD thesis (supervised by 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. Streaming active learning strategies for real-life credit card fraud detection: assessment and visualization,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. Configura l'ambiente

Per eseguire questo codelab, devi avere un progetto Google Cloud Platform con la fatturazione abilitata. Per creare un progetto, segui le istruzioni riportate qui.

  1. Abilita l'API BigQuery

Vai a BigQuery e seleziona Abilita se non è già abilitata. Ti servirà per creare il modello.

4. esplora i dati

Passaggio 1: vai a BigQuery

Cerca BigQuery all'indirizzo https://cloud.google.com/console.

Passaggio 2: esplora i dati utilizzando la query

Nell'editor , digita la seguente query SQL per esaminare i dati nel set di dati pubblico .

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

Passaggio 3: esecuzione

Premi il comando Esegui riportato sopra per eseguire la query.

c670e136ecd58236.png

Risultati

Dovrebbe trovarsi nel riquadro Risultati query e avere un aspetto simile a questo. I dati potrebbero variare

be082fb135879158.png

Esplora le colonne coinvolte e l'output.

Puoi eseguire più query per capire come vengono distribuiti i dati. Alcuni esempi potrebbero includere

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. Crea un set di dati di output

Passaggio 1: crea il set di dati per la creazione del modello

  1. Nel riquadro Explorer, a sinistra, seleziona il progetto su cui stai lavorando e fai clic sui tre puntini accanto.

7618699754e066bd.png

  1. Fai clic su Crea set di dati in alto a destra.

17851cc9db05dc1.png

  1. Inserisci i dettagli per il nome, la conservazione, la posizione e così via del set di dati. Utilizza queste impostazioni

b8b6731408f61d57.png

6. Crea modello di regressione logistica

Passaggio 1: crea la dichiarazione

Nella finestra Query, digita la query riportata di seguito per la creazione del modello. Comprendi le opzioni chiave con questa dichiarazione. Spiegato in questo link.

INPUT_LABEL_COLS indica l'etichetta di previsione

AUTO_CLASS_WEIGHTS vengono utilizzati per i set di dati sbilanciati

MODEL_TYPE indica l'algoritmo utilizzato, in questo caso la regressione logistica

DATA_SPLIT_METHOD indica la suddivisione tra i dati di addestramento e di test

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`

Passaggio 2: esegui

Esegui l'istruzione precedente. Il completamento dell'operazione dovrebbe richiedere un paio di minuti

Notare le cose principali al termine della corsa

3385a54d3907443e.png

  1. Nel riquadro Esplora verrà visualizzato il modello creato.
  2. Il riquadro Risultati query mostrerà la durata dell'elaborazione di ML SQL in modo simile a qualsiasi istruzione SQL.
  3. Il riquadro Risultati query conterrà anche il link Vai al modello per consentirti di esplorarlo.

Passaggio 3: esplora

Esplora il modello creato facendo clic su Vai al modello o dal riquadro Explorer. Le schede forniscono informazioni sul modello creato, sull'addestramento, sulla valutazione e così via. Esaminare i risultati

b350f1b94835f2d1.png

Approfondiremo questo aspetto nelle sezioni successive.

Per saperne di più sulla regressione logistica, consulta questa pagina.

7. Esplorazione delle metriche di valutazione del modello

In questo passaggio vedremo il rendimento del nostro modello.

Una volta completato il job di addestramento del modello, fai clic sul modello appena addestrato e dai un'occhiata alla scheda Valuta. Qui sono presenti molte metriche di valutazione. Ci concentreremo solo su una :roc_auc

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

I risultati saranno simili a questi. roc_auc è generalmente più importante in un set di dati non bilanciato

c3c80286082dc336.png

Per saperne di più sui risultati. Cerca la documentazione di ML.Evaluate qui.

Precisione e richiamo

Curva ROC e AUC

8. Prevedi la classe per un determinato periodo di tempo

Premi Crea una nuova query ed esegui il seguente SQL. Il tempo identificato qui ha un importo fraudolento. Stiamo cercando di valutare che la previsione funzioni

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)
)

L'output dovrebbe essere simile al seguente (i numeri potrebbero variare)

676fc8accdab2f6c.png

In questo caso, mostriamo l'importo con la probabilità associata dell'etichetta. La colonna Classe indica i risultati effettivi.

Per saperne di più su ML.PREDICT. Guarda qui

9. Esegui la pulizia

Se vuoi ripulire le risorse create con questo lab, apri il set di dati dal riquadro Explorer sul lato sinistro.

e7d18fadd2b781be.png

Fai clic su Elimina set di dati nell'angolo in alto a destra.

b47bc819869bed6c.png

Inserisci di nuovo il nome del set di dati per confermare i dettagli. Nel nostro caso, sarà advdata

10. Complimenti

Congratulazioni, hai creato il tuo primo modello, lo hai valutato e hai eseguito la previsione utilizzando il machine learning supervisionato.

Ora conosci i passaggi chiave necessari per creare un modello di regressione logistica.

Passaggi successivi

Scopri alcuni di questi altri modi coinvolti nella previsione

Documentazione di riferimento