BigQuery ML para la detección de fraudes en las transacciones de tarjetas de crédito con la consola

1. Introducción

En este lab, usarás BigQuery para entrenar y entregar un modelo con datos tabulares a través de una consola. Esta oferta es la incorporación favorita al entrenamiento y la entrega de modelos basados en SQL. BigQuery ML permite a los usuarios crear y ejecutar modelos de aprendizaje automático en BigQuery con consultas en SQL. El objetivo es permitir que más personas tengan acceso al aprendizaje automático facultando a los profesionales de SQL para que creen modelos mediante sus herramientas existentes y quitando la necesidad de trasladar datos para aumentar la velocidad de desarrollo.

Qué aprenderás

  • Explora los datos disponibles en BigQuery
  • Crea un modelo con SQL en BigQuery usando la consola
  • Evalúa los resultados del modelo creado
  • Predecir si una transacción es fraudulenta o no con el modelo creado

2. Acerca de los datos

Los conjuntos de datos contienen transacciones realizadas con tarjetas de crédito en septiembre de 2013 por titulares de tarjetas europeos. Este conjunto de datos presenta transacciones que ocurrieron en dos días, en las que tenemos 492 fraudes de 284,807 transacciones. Está muy desequilibrado, ya que la clase positiva (fraudes) representa el 0.172% de todas las transacciones.

Solo contiene variables de entrada numéricas que son el resultado de una transformación de PCA. Lamentablemente, debido a problemas de confidencialidad, no podemos proporcionar las funciones originales ni más información de contexto sobre los datos.

  1. Las variables V1, V2, …, V28 son los componentes principales obtenidos con el PCA. Las únicas variables que no se transformaron con el PCA son "Time" y "Amount".
  2. La función "Time" contiene los segundos transcurridos entre cada transacción y la primera transacción del conjunto de datos.
  3. El atributo "Amount" es el importe de la transacción. Este atributo se puede usar para el aprendizaje sensible a los costos que depende del ejemplo.
  4. La variable de atributo "Clase" es la variable de respuesta y toma el valor 1 en caso de fraude y 0 en caso contrario.

El conjunto de datos se recopiló y analizó durante una colaboración de investigación entre Worldline y el Grupo de Aprendizaje Automático ( http://mlg.ulb.ac.be) de la ULB (Université Libre de Bruxelles) sobre la minería de macrodatos y la detección de fraudes.

En https://www.researchgate.net/project/Fraud-detection-5 y en la página del proyecto DefeatFraud, encontrarás más detalles sobre los proyectos actuales y anteriores relacionados con temas similares.

Cita:

Andrea Dal Pozzolo, Olivier Caelen, Reid A. Johnson y Gianluca Bontempi. Calibrating Probability with Undersampling for Unbalanced Classification. En 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, tesis de doctorado de MLG de la ULB (supervisada por 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 tu entorno

Para ejecutar este codelab, necesitarás un proyecto de Google Cloud Platform que tenga habilitada la facturación. Para crear un proyecto, sigue estas instrucciones.

  1. Habilita la API de BigQuery

Navega a BigQuery y selecciona Habilitar si aún no está habilitado. La necesitarás para crear tu modelo.

4. Explora los datos

Paso 1: Navega a BigQuery

Busca BigQuery en https://cloud.google.com/console.

Paso 2: Explora los datos con una consulta

En el editor , escribe la siguiente consulta en SQL para revisar los datos del conjunto de datos públicos .

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

Paso 3: Ejecución

Presiona el comando Ejecutar anterior para ejecutar la consulta.

c670e136ecd58236.png

Resultados

Debería estar en el panel Resultados de la consulta y verse de esta manera. Los datos pueden variar

be082fb135879158.png

Explora las columnas involucradas y el resultado.

Puedes ejecutar varias consultas para comprender cómo se distribuyen los datos. Algunos ejemplos podrían ser los siguientes:

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 conjunto de datos de salida

Paso 1: Crea un conjunto de datos para la creación del modelo

  1. En el panel Explorador, ubicado en el lado izquierdo, elige el proyecto en el que estás trabajando y haz clic en los tres puntos que se encuentran junto a él.

7618699754e066bd.png

  1. Haz clic en Crear conjunto de datos en la esquina superior derecha.

17851cc9db05dc1.png

  1. Ingresa los detalles del nombre, la retención, la ubicación, etcétera, del conjunto de datos. Usar estos parámetros de configuración

b8b6731408f61d57.png

6. Crea un modelo de regresión logística

Paso 1: Crea una declaración

En la ventana Consulta, escribe la siguiente consulta para crear el modelo. Comprende las opciones clave con esta instrucción. Se explica en este vínculo.

INPUT_LABEL_COLS indica la etiqueta de predicción.

Se usan AUTO_CLASS_WEIGHTS para los conjuntos de datos desequilibrados

MODEL_TYPE indicaría el algoritmo utilizado; en este caso, es la regresión logística.

DATA_SPLIT_METHOD indica la división entre los datos de entrenamiento y prueba.

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`

Paso 2: Ejecución

Ejecuta la instrucción anterior. Este proceso debería tardar un par de minutos en completarse.

Observa los aspectos clave después de que se complete la ejecución

3385a54d3907443e.png

  1. El panel Explorador tendrá el modelo creado
  2. El panel Resultados de la consulta mostrará la duración que tardó en procesarse el SQL de AA, de manera similar a cualquier instrucción de SQL.
  3. El panel de resultados de la consulta también tendrá el vínculo Ir al modelo para que lo explores.

Paso 3: Explora

Explora el modelo creado haciendo clic en Ir al modelo o desde el panel Explorador. Las pestañas proporcionan información sobre el modelo creado , el entrenamiento, la evaluación, etcétera. Revisa los resultados

b350f1b94835f2d1.png

Exploraremos este tema en más detalle en las próximas secciones.

Para obtener más información sobre la regresión logística, consulta este vínculo.

7. Explora las métricas de evaluación del modelo

En este paso, veremos el rendimiento de nuestro modelo.

Una vez que se complete el trabajo de entrenamiento del modelo, haz clic en el modelo que acabas de entrenar y revisa la pestaña Evaluar. Aquí hay muchas métricas de evaluación. Nos enfocaremos en una sola :roc_auc.

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

Los resultados se verían de la siguiente manera. En general, roc_auc es más importante en un conjunto de datos desequilibrado.

c3c80286082dc336.png

Para obtener más información sobre los resultados Busca la documentación de ML.Evaluate aquí

Precisión y recuperación

Curva de ROC y AUC

8. Clase de predicción para un momento determinado

Presiona Redactar una nueva consulta y ejecuta el siguiente código SQL. El tiempo identificado aquí tiene un importe fraudulento. Intentamos evaluar si la predicción 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)
)

El resultado debería ser similar al siguiente (los números pueden variar):

676fc8accdab2f6c.png

En este caso, mostramos el importe con la probabilidad asociada de la etiqueta. Aquí, la columna de clase indica cuáles fueron los resultados reales.

Obtén más información sobre ML.PREDICT. Mira aquí.

9. Limpieza

Si deseas limpiar los recursos creados con este lab, abre el conjunto de datos desde el panel del Explorador que se encuentra en el lado izquierdo.

e7d18fadd2b781be.png

Haz clic en Borrar conjunto de datos en la esquina superior derecha.

b47bc819869bed6c.png

Vuelve a ingresar el nombre del conjunto de datos para confirmar los detalles. En nuestro caso, será advdata.

10. Felicitaciones

¡Felicitaciones! Creaste con éxito tu primer modelo, y lo evaluaste y usaste para realizar predicciones con aprendizaje automático supervisado.

Ahora conoces los pasos clave necesarios para crear un modelo de regresión logística.

¿Qué sigue?

Consulta algunas de estas otras formas de predicción.

Documentos de referencia