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.
- 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].
- “Time” de la función contiene los segundos transcurridos entre cada transacción y la primera transacción en el conjunto de datos.
- 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.
- 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.
- 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.
Resultados
Debería estar en el panel Resultados de la consulta y verse así. Los datos pueden variar
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
- 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.
- En la esquina superior derecha, haz clic en Crear conjunto de datos.
- Ingresa los detalles del nombre del conjunto de datos, la retención, la ubicación, etcétera. Usar esta configuración
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
- En el panel Explorador, se creará el modelo
- 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.
- 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
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
Para obtener más información sobre los resultados. Busca la documentación sobre ML.Evaluar aquí
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)
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.
Haz clic en Borrar conjunto de datos en la esquina superior derecha.
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
- Comienza a usar BigQuery ML
- Previsión de series temporales con BigQuery ML
- Modelo de detección de fraudes con AutoML
- Detección de fraudes con TensorFlow