Puntos de control
Create a dataset
/ 25
Load Data to BigQuery Tables
/ 25
Explore and Investigate the Data with BigQuery
/ 10
Prepare Your Data
/ 10
Train an Unsupervised Model to Detect Anomalies
/ 10
Train a Supervised Machine Learning Model
/ 10
Predict Fraudulent Transactions on Test Data
/ 10
Detecta fraudes en transacciones financieras usando aprendizaje automático en Google Cloud
- GSP774
- Descripción general
- Configuración y requisitos
- Tarea 1: Descarga el archivo de datos del lab
- Tarea 2: Copia el conjunto de datos en Cloud Storage
- Tarea 3: Carga datos en tablas de BigQuery
- Tarea 4: Explora e investiga los datos con BigQuery
- Tarea 5: Prepara los datos
- Tarea 6: Entrena un modelo no supervisado para detectar anomalías
- Tarea 7: Entrena un modelo de aprendizaje automático supervisado
- Tarea 8: Mejora tu modelo
- Tarea 9: Evalúa los modelos de aprendizaje automático supervisado
- Tarea 10: Predice transacciones fraudulentas en datos de prueba
- ¡Felicitaciones!
GSP774
Descripción general
En este lab, explorarás datos de transacciones financieras para realizar análisis de fraudes y aplicarás técnicas de ingeniería de atributos y aprendizaje automático para detectar actividades fraudulentas usando BigQuery ML.
Se usarán datos públicos de transacciones financieras, que incluyen las siguientes columnas:
- Tipo de transacción
- Importe transferido
- ID de cuenta de origen y destino
- Saldos antiguos y nuevos
- Tiempo relativo de la transacción (cantidad de horas desde el comienzo del período de 30 días)
- Marca
isfraud
La columna de destino isfraud incluye las etiquetas de las transacciones fraudulentas, con las que entrenarás modelos supervisados para detectar fraudes y aplicarás modelos no supervisados para detectar anomalías.
The data for this lab is from the Kaggle site. If you do not have a Kaggle account, it's free to create one.
Aprendizajes esperados
- Cargar datos en BigQuery y explorarlos
- Crear atributos nuevos en BigQuery
- Crear un modelo no supervisado para detectar anomalías
- Crear modelos supervisados (con regresión logística y árbol con boosting) para detectar fraudes
- Evaluar y comparar los modelos, y seleccionar el mejor
- Usar los modelos seleccionados para predecir la probabilidad de fraude en datos de prueba
En este lab, usarás la interfaz de BigQuery para realizar ingeniería de atributos, y desarrollo, evaluación y predicción de modelos.
Participants that prefer Notebooks as the model development interface may choose to build models in AI Platform Notebooks instead of BigQuery ML. Then at the end of the lab, you can also complete the optional section. You can import open source libraries and create custom models or you can call BigQuery ML models within Notebooks using BigQuery magic commands.
If you want to train models in an automated way without any coding, you can use Google Cloud AutoML which builds models using state-of-the-art algorithms. The training process for AutoML would take almost 2 hours, that's why it is recommended to initiate it at the beginning of the lab, as soon as the data is prepared, so that you can see the results at the end. Check for the "Attention" phrase at the end of the data preparation step.
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
- Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón Abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debe usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta. -
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}} También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}} También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia Cuenta de Google podría generar cargos adicionales. -
Haga clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
- Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
-
Haz clic en Autorizar.
-
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
- Puedes solicitar el ID del proyecto con este comando (opcional):
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Tarea 1: Descarga el archivo de datos del lab
- Ejecuta el siguiente comando para descargar el archivo de datos en tu proyecto:
- Si se te solicita, haz clic en Autorizar.
- Después de cargar el archivo ZIP, ejecuta el comando
unzip
:
Verás que se descomprimió 1 archivo.
- Para que sea más fácil hacer referencia al archivo más adelante, crea una variable de entorno para su nombre.
- Ejecuta lo siguiente para encontrar el ID del proyecto del lab y copia el ID del proyecto:
- Crea una variable de entorno para el ID del proyecto y reemplaza <project_id> por el ID del proyecto copiado:
- Ejecuta lo siguiente para crear un conjunto de datos de BigQuery para almacenar tablas y modelos de este lab denominado
finance
en Cloud Shell:
Si el comando anterior se ejecuta correctamente, verás este resultado:
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 2: Copia el conjunto de datos en Cloud Storage
- Ejecuta lo siguiente para crear un bucket de Cloud Storage usando tu ID del proyecto único como el nombre:
- Copia el archivo CSV en el bucket que creaste recientemente:
Tarea 3: Carga datos en tablas de BigQuery
Para cargar los datos en BigQuery, puedes usar la interfaz de usuario de BigQuery o la terminal de comandos de Cloud Shell. Elige una de las opciones incluidas a continuación para cargar los datos.
Opción 1: Línea de comandos
- Carga datos en la tabla
finance.fraud_data
ejecutando el siguiente comando:
La opción --autodetect
leerá automáticamente el esquema de la tabla (los nombres de variables, tipos, etc.).
Opción 2: Interfaz de usuario de BigQuery
Puedes subir datos de tu bucket de Cloud Storage abriendo BigQuery en la consola de Cloud.
- Haz clic en Expandir nodo junto al ID del proyecto en la sección Explorador.
- Haz clic en Ver acciones junto al conjunto de datos de finance y, luego, en Crear tabla (Create table).
-
En la ventana emergente Crear tabla, establece la
Fuente
como Google Cloud Storage y selecciona el archivo CSV sin procesar en tu bucket de Cloud Storage. -
Ingresa fraud_data como el nombre de la tabla y selecciona la opción Detección automática en Esquema para que los nombres de las variables se lean automáticamente de la primera línea del archivo sin procesar.
-
Haz clic en Crear tabla.
El proceso de carga puede tardar uno o dos minutos.
- Una vez completado, en la vista del panel Explorador en BigQuery, haz clic en el conjunto de datos finance y busca la tabla fraud_data para ver los metadatos y una vista previa de los datos de la tabla.
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 4: Explora e investiga los datos con BigQuery
Si aún no lo has hecho, abre BigQuery en la consola de Cloud.
- Haz clic en el menú de navegación > BigQuery.
Luego, empieza a explorar los datos para comprenderlos mejor y prepararlos para los modelos de aprendizaje automático.
-
Agrega las siguientes consultas al EDITOR de consultas, haz clic en EJECUTAR y, luego, explora los datos.
-
Haz clic en REDACTAR CONSULTA NUEVA para iniciar la próxima consulta. De esa forma, podrás comparar resultados fácilmente cuando termines.
- ¿Cuál es la cantidad de transacciones fraudulentas para cada tipo de transacción?
En la columna isFraud
, busca 1 = yes.
- Ejecuta lo siguiente para ver la proporción de actividades fraudulentas de los tipos de transacción de TRANSFER y CASH_OUT (proporciona las cantidades de
isFraud
):
- Ejecuta el siguiente comando para ver las 10 cantidades máximas de transacciones:
DEDICA UN MINUTO A REFLEXIONAR:
- ¿Te llamó la atención algún saldo en las transacciones?, ¿cómo puedes hacer una transacción cuando el saldo en la cuenta de origen es cero?, ¿por qué el saldo nuevo en la cuenta de destino sigue siendo cero después de la transferencia monetaria? Marcaremos esos casos y los agregaremos como atributos nuevos en el próximo paso.
- ¿Crees que los datos están desequilibrados? Sí, la proporción de transacciones fraudulentas es considerablemente inferior al 1%. Cuando divides la cantidad de
isfraud
por el número total de observaciones, obtienes la proporción de transacciones fraudulentas.
En la próxima sección, aprenderás a responder esas preguntas y mejorar los datos para los modelos de aprendizaje automático.
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 5: Prepara los datos
Para mejorar los datos de modelado, agrega atributos nuevos, filtra tipos de transacciones innecesarios y aumenta la proporción de la variable de destino isFraud
con submuestreo.
En función de tus hallazgos de la etapa de análisis, solo debes analizar los tipos de transacción "TRANSFER"
y "CASH_OUT"
, y filtrar el resto. También puedes procesar variables nuevas de los valores de importes existentes.
El conjunto de datos tiene un objetivo extremadamente desequilibrado para el fraude (la tasa de fraude en los datos sin procesar equivale al 0.0013%). Tener eventos poco comunes es normal para los fraudes. Para que el patrón de comportamiento fraudulento sea más obvio para los algoritmos de aprendizaje automático y también interpretar los resultados, estratifica los datos y aumenta la proporción de las marcas fraudulentas.
- En el próximo paso, redacta una consulta nueva y agrega el siguiente código para agregar atributos nuevos a los datos, filtrar tipos de transacciones innecesarios y seleccionar un subconjunto de transacciones no fraudulentas con submuestreo:
-
Ejecuta la consulta.
-
Crea una tabla de datos de PRUEBA seleccionando una muestra aleatoria del 20%:
- Ejecuta la consulta.
Esos datos se mantendrán separados y no podrán incluirse en el entrenamiento. Los usarás para otorgarle una puntuación al modelo en la etapa final.
BigQuery ML y AutoML particionan automáticamente los datos del modelo como TRAIN y VALIDATE, mientras usan los algoritmos de aprendizaje automático para probar la tasa de errores en los datos de entrenamiento y validación, y evitar el sobreajuste.
- Ejecuta lo siguiente para crear datos de muestra:
Los datos de muestra que creaste para el modelado tienen aproximadamente 228,000 filas de transacciones bancarias.
También puedes particionar manualmente el conjunto de datos como TRAIN/VALIDATE y TEST, en especial si quieres comparar modelos de entornos diferentes como AutoML o AI Platform, y tener coherencia.
DEDICA UN MINUTO A REFLEXIONAR:
- ¿Qué enfoque usarías para el problema de no tener eventos fraudulentos etiquetados en los datos? Si no hay transacciones etiquetadas, puedes usar técnicas de modelado no supervisado para analizar anomalías en los datos como el agrupamiento en clústeres de k-means. En la próxima sección, probarás ese método.
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 6: Entrena un modelo no supervisado para detectar anomalías
Los métodos no supervisados suelen usarse en la detección de fraudes para explorar el comportamiento anormal en los datos. También son útiles cuando no hay etiquetas para fraude o la tasa de eventos es muy baja, y la cantidad de casos no permite crear un modelo supervisado.
En esta sección, usarás el algoritmo de agrupamiento en clústeres de k-means para crear segmentos de transacciones, analizar cada uno de los segmentos y detectar los que tienen anomalías.
- Redacta una consulta nueva y ejecuta el código incluido a continuación en BigQuery con CREATE OR REPLACE MODEL, y establece el model_type como
kmeans
:
De esa forma, se creará un modelo de k-means denominado model_unsupervised
con 5 clústeres usando las variables seleccionadas de fraud_data_model
.
Una vez que termine el entrenamiento del modelo, verás que aparece en Finanzas > Modelos.
- Haz clic en model_unsupervised y, luego, en la pestaña EVALUACIÓN (EVALUATION).
El algoritmo k-means crea una variable de salida denominada centroid_id. Cada una de las transacciones se asigna a una centroid_id. El algoritmo asigna las transacciones que son similares entre sí al mismo clúster.
El índice Davies–Bouldin muestra una indicación del nivel de homogeneidad de los clústeres. Mientras más bajo sea el valor, más distantes serán los clústeres entre sí, lo que es un resultado deseado.
En la pestaña Evaluación (Evaluation), se muestran los atributos numéricos con gráficos de barras para cada centroide (clúster). Los números junto a las barras muestran el valor promedio de las variables en cada clúster. Como práctica recomendada, las variables de entrada pueden estandarizarse o agruparse en buckets para evitar el impacto de valores atípicos o números grandes en los cálculos de distancia para el agrupamiento en clústeres. Para simplificar el proceso en el ejercicio de este lab, se usan las variables originales.
Las variables categóricas que se usan como entrada se muestran por separado. Puedes ver la distribución de las transacciones TRANSFER y CASH_OUT en cada uno de los segmentos incluidos a continuación.
Es posible que los gráficos de tu modelo se vean diferentes por lo que debes enfocarte en los segmentos más pequeños y tratar de interpretar las distribuciones.
La variable objetivo isFraud
no se usó en este modelo no supervisado. En este ejercicio, se recomienda guardar esa variable para la creación de perfiles y usarla para explorar la distribución de actividades fraudulentas en cada uno de los clústeres.
-
Otorga puntuaciones a los datos de prueba (
fraud_data_test
) usando este modelo y observa la cantidad de eventos de fraude en cadacentroid_id
. Los algoritmos de agrupamiento en clústeres crean grupos homogéneos de observaciones. En esta consulta,ML.PREDICT
llamará al modelo y generará elcentroid_id
de cada transacción en los datos de prueba. -
Ejecuta el siguiente código en la consulta nueva:
DEDICA UN MINUTO A REFLEXIONAR:
- ¿Qué clúster te llama más la atención? Los clústeres pequeños con grandes cantidades de errores.
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 7: Entrena un modelo de aprendizaje automático supervisado
Ya tienes todo listo para empezar a compilar modelos supervisados usando BigQuery ML para predecir la probabilidad de que ocurran transacciones fraudulentas. Empieza con un modelo simple: usa BigQuery ML para crear un modelo de regresión logística binario para clasificación. Con ese modelo, se intentará predecir si es probable que la transacción sea fraudulenta o no.
Para todas las variables no numéricas (categóricas), BigQuery ML realiza automáticamente una transformación de codificación one-hot. Esa transformación genera un atributo independiente para cada valor único en la variable. En este ejercicio, BigQuery ML realizará la codificación one-hot para la variable TYPE automáticamente.
- Para crear tu primer modelo supervisado, ejecuta la siguiente instrucción de SQL en BigQuery:
Cuando esté lista, verás la tabla model_supervised_initial
en Finanzas > Modelos.
Una vez que se creó el modelo, puedes obtener los metadatos, el entrenamiento y las estadísticas de evaluación del modelo en la IU de la consola de BigQuery.
- Haz clic en model_supervised_initial, en el panel lateral izquierdo. Luego haz clic en la pestaña Detalles, Entrenamiento, Evaluación o Esquema para obtener más información.
En la pestaña Evaluación, encontrarás distintas métricas de rendimiento específicas del modelo de clasificación.
Conocer el rendimiento del modelo es un tema clave del aprendizaje automático. Como se realizó una regresión logística para la clasificación, los siguientes conceptos clave son útiles para la comprensión:
- Precisión: Identifica la proporción de casos positivos seleccionados en los que el modelo tenía razón.
- Recuperación: Una métrica que responde lo siguiente: de todas las etiquetas positivas reales, ¿cuántas identificó correctamente el modelo?
- Exactitud: Es la proporción total de predicciones correctas.
- Puntuación F1: Es una medida de la exactitud del modelo. Corresponde al promedio armónico de la precisión y la recuperación. Se toman valores del 0 al 1 y, mientras más alto sea, mejor.
- AUC de la ROC: Es el área bajo la curva ROC. Proporciona información sobre la capacidad de discriminación de un clasificador binario teniendo en cuenta diferentes umbrales y tomando valores entre el 0 y el 1. Mientras más alta sea, mejor. Para un modelo moderado, se esperaría tener un valor de ROC mayor que 0.7.
En el gráfico de esta página de Wikipedia, se explican los conceptos de precisión y recuperación.
El valor de ROC para este modelo de regresión es muy alto. Puedes comprender mejor la exactitud haciendo pruebas con los resultados de los distintos umbrales de probabilidad.
Ahora analicemos las funciones que más influyen en el modelo.
- Ejecuta la siguiente consulta para verificar la importancia de la función:
Los pesos se estandarizan para eliminar el impacto de la escala de las variables usando la opción standardize. Los pesos más grandes son los más importantes. El signo del peso indica la dirección según la relación directa o inversa con el destino.
DEDICA UN MINUTO A REFLEXIONAR:
- ¿Cuáles crees que son las dos variables más importantes?
oldbalanceOrig
ytype
son las dos variables más importantes.
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 8: Mejora tu modelo
Haz un ejercicio divertido: crea un modelo nuevo y entrena los dos modelos para mejorar la exactitud.
- Crea un nuevo modelo de boosting de gradientes ejecutando el siguiente código:
Luego, compara los 2 modelos que creaste y elige el mejor.
Tarea 9: Evalúa los modelos de aprendizaje automático supervisado
Mejora el modelo de regresión logística actual agregando variables nuevas.
Después de crear el modelo, puedes evaluar el rendimiento del clasificador usando la función ML.EVALUATE
. La función ML.EVALUATE
compara el resultado o los valores predichos con los reales.
- Ejecuta las siguientes consultas para agregar los resultados de los dos modelos en una sola tabla y elige el mejor modelo para usar para asignar puntuaciones a datos nuevos.
DEDICA UN MINUTO A REFLEXIONAR:
- ¿Qué modelo tuvo el mejor rendimiento? Primero, ejecutaste un modelo de regresión. Luego, agregaste más variables y entrenaste un modelo nuevo usando regresión (el modelo supervisado). Por último, usaste un árbol con boosting como el segundo modelo supervisado. El modelo de árbol con boosting tiene un mejor rendimiento cuando comparas las tablas de rendimiento. Agregar funciones adicionales nuevas mejoró la exactitud del modelo.
Tarea 10: Predice transacciones fraudulentas en datos de prueba
El último paso del aprendizaje automático es usar el mejor modelo para predecir el resultado en nuevos conjuntos de datos.
Los algoritmos del aprendizaje automático en BQML crean una variable anidada llamada predicted_<target_name\>_probs
. Esa variable incluye las puntuaciones de probabilidad para la decisión del modelo. El modelo decide si las transacciones son fraudulentas o genuinas.
- Ejecuta la siguiente consulta en BigQuery para ver la predicción de transacciones fraudulentas en los datos de prueba que se crearon al principio de este lab. La sentencia WHERE incluida a continuación mostrará las transacciones con las puntuaciones de probabilidad más alta.
DEDICA UN MINUTO A REFLEXIONAR:
- ¿Cuál es la proporción de actividades fraudulentas en el conjunto predicho de transacciones? Menos del 3%.
- ¿Cuánto aumentó la tasa de eventos en el conjunto predicho de filas en comparación con los datos generales de prueba? Más del 95%.
Haz clic en Revisar mi progreso para verificar el objetivo.
¡Felicitaciones!
Próximos pasos
- Obtén más información sobre el aprendizaje automático en el curso intensivo para Google Developers.
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Actualización más reciente del manual: 12 de octubre de 2023
Prueba más reciente del lab: 12 de octubre de 2023
Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.