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 usando una consola. Esta oferta es el complemento favorito de la entrega y el entrenamiento de modelos basados en SQL. BigQuery ML permite a los usuarios crear y ejecutar modelos de aprendizaje automático en BigQuery a través de 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

  • Explorar los datos disponibles en BigQuery
  • Crear un modelo con SQL en BigQuery mediante la consola
  • Evalúa los resultados del modelo creado
  • Predice una transacción si 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, donde tenemos 492 fraudes de 284,807 transacciones. Es muy desequilibrada, 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 PCA. Lamentablemente, debido a cuestiones de confidencialidad, no podemos proporcionar las funciones originales ni más información de contexto sobre los datos.

  1. Los atributos V1, V2, ... V28 son los componentes principales que se obtienen con el PCA. Los únicos atributos que no se transformaron con PCA son el “tiempo”. e 'importe' [Amount].
  2. “Time” de la función contiene los segundos transcurridos entre cada transacción y la primera transacción en el conjunto de datos.
  3. Feature “Amount” es el importe de la transacción. Esta función se puede usar para el aprendizaje basado en costos, según un ejemplo.
  4. El atributo “Class” 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.

Obtén más detalles sobre proyectos actuales y anteriores sobre temas relacionados en https://www.researchgate.net/project/Fraud-detection-5 y la página del proyecto DefeatFraud.

Cita:

Andrea Dal Pozzolo, Olivier Caelen y Reid A. Johnson y Gianluca Bontempi. Calibra las probabilidades con el submuestreo para una clasificación desequilibrada. En el simposio sobre inteligencia computacional y minería de datos (CIDM), IEEE, 2015

Dal Pozzolo, Andrea; Caelen, Olivier; Le Borgne, Yann-Ael; Waterschoot, Serge; Bontempi, Gianluca. Lecciones aprendidas sobre la detección de fraudes con tarjetas de crédito desde la perspectiva de un profesional, Sistemas expertos con aplicaciones,41,10,4915-4928,2014, Pérgamo

Dal Pozzolo, Andrea; Boracchi, Giacomo; Caelen, Olivier; Alippi, Cesare; Bontempi, Gianluca. Detección de fraudes con tarjetas de crédito: un modelo realista y una nueva estrategia de aprendizaje, transacciones del IEEE en redes neuronales y sistemas de aprendizaje,29,8,3784-3797,2018,IEEE

Dal Pozzolo, Andrea, Adaptive Machine learning for credit card fraudulent Detection, Tesis PhD de ULB MLG (supervisada por G. Bontempi)

Carcillo, Fabrizio; Dal Pozzolo, Andrea; Le Borgne, Yann-Aël; Caelen, Olivier; Mazzer, Yannis; Bontempi, Gianluca. Scarff: a escalable framework para transmisión de detección de fraudes de tarjetas de crédito con Spark, Information Fusion,41, 182-194,2018,Elsevier

Carcillo, Fabrizio; Le Borgne, Yann-Aël; Caelen, Olivier; Bontempi, Gianluca. Streaming active learning strategy for real-life credit card fraudulent intelligence: assessment and authentication,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 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é y Gianluca Bontempi Combinar el aprendizaje no supervisado y supervisado en la detección de fraudes de tarjetas de crédito en ciencias de la información, 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á habilitada. Lo necesitarás para crear tu modelo.

4. Explora los datos

Paso 1: Navega a BigQuery

Busque 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: Ejecuta

Presiona el comando Ejecutar que aparece arriba para realizar la consulta.

c670e136ecd58236.png

Resultados

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

be082fb135879158.png

Explora las columnas involucradas y el resultado.

Puedes ejecutar varias consultas para comprender cómo están distribuidos los datos. Algunos ejemplos pueden 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. Crea un conjunto de datos de salida

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

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

7618699754e066bd.png

  1. En la esquina superior derecha, haz clic en Crear conjunto de datos.

17851cc9db05dc1.png

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

b8b6731408f61d57.png

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

Paso 1: Crea una sentencia

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

INPUT_LABEL_COLS indican la etiqueta de predicción.

AUTO_CLASS_WEIGHTS se usa para conjuntos de datos desequilibrados.

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

DATA_SPLIT_METHOD indica la división entre los datos de entrenamiento y de 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: Ejecuta

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

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

3385a54d3907443e.png

  1. En el panel Explorador, se creará el modelo
  2. El panel Resultados de la consulta tendrá la duración que se demoró en procesar el AA de AA de manera similar a cualquier instrucción de SQL.
  3. El panel Resultados de la consulta también tendrá el vínculo Ir al modelo para que lo explores

Paso 3: Explora

Para explorar el modelo creado, haz clic en Ir al modelo o en 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

Veremos esto con más detalle en las próximas secciones.

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

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

En este paso, veremos el rendimiento de nuestro modelo.

Cuando se complete el trabajo de entrenamiento de modelos, haz clic en el modelo que acabas de entrenar y revisa la pestaña Evaluar. Hay muchas métricas de evaluación aquí; nos enfocaremos en una sola :roc_auc

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

Los resultados se verían más o menos así: roc_auc suele ser más importante en un conjunto de datos desequilibrado

c3c80286082dc336.png

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

Precisión y recuperación

Curva ROC y AUC

8. Predecir la clase para un período específico

Presiona Redactar una nueva consulta y ejecuta el siguiente SQL. El tiempo identificado aquí tiene un importe fraudulento. Estamos tratando de 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 a este (los números pueden variar)

676fc8accdab2f6c.png

En este caso, estamos mostrando la cantidad con la probabilidad asociada de la etiqueta. La columna class indica cuáles fueron los resultados reales.

Para obtener más información sobre ML.PREDICT. Busca aquí.

9. Limpieza

Si quieres limpiar los recursos creados con este lab, abre el conjunto de datos desde el panel Explorador 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 correctamente tu primer modelo, lo evaluaste y predijiste con aprendizaje automático supervisado.

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

¿Qué sigue?

Echa un vistazo a algunas de estas otras formas de predecir

Documentos de referencia