
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Write a query to determine available seasons and games
/ 10
Create a labeled machine learning dataset
/ 10
Create a machine learning model
/ 20
Evaluate model performance and create table
/ 10
Using skillful ML model features
/ 10
Train the new model and make evaluation
/ 10
Run a query to create a table ncaa_2018_predictions
/ 10
Run queries to create tables ncaa_2019_tournament and ncaa_2019_tournament_predictions
/ 20
BigQuery es la base de datos de análisis de Google de bajo costo, no-ops y completamente administrada. Con BigQuery, puedes consultar muchos terabytes de datos sin tener que administrar infraestructura o contar con un administrador de base de datos. Esta base de datos usa SQL y un modelo de pago por uso, y permite enfocarse en el análisis de datos para hallar estadísticas valiosas.
Con BigQuery ML, los analistas de datos pueden aprovechar sus conocimientos sobre SQL para crear modelos de aprendizaje automático rápidamente en el mismo lugar donde se encuentran sus datos en BigQuery.
BigQuery cuenta con un conjunto de datos público con información sobre los partidos, equipos y jugadores de baloncesto de la NCAA. Los datos de los partidos incluyen información detallada de las jugadas y anotaciones desde el 2009, así como resultados finales desde 1996. En el caso de algunos equipos, los datos adicionales sobre las victorias y las derrotas se remontan a la temporada de 1894-1895.
En este lab, usarás BigQuery ML para elaborar prototipos, entrenar modelos, realizar evaluaciones y predecir los “ganadores” y “perdedores” de dos equipos del torneo de baloncesto de la NCAA.
En este lab, aprenderás a hacer lo siguiente:
Este lab es de nivel intermedio, por lo que debes tener experiencia en SQL y conocer las palabras clave del lenguaje. También se recomienda tener conocimientos de BigQuery. Si necesitas ponerte al día en estas áreas antes de intentar este lab, debes realizar, como mínimo, uno de los siguientes labs:
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, 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:
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
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: Ordena las pestañas en ventanas separadas, una junto a la otra.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
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.
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Haz clic para avanzar por las páginas siguientes:
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Se abrirá el cuadro de mensaje Te damos la bienvenida a BigQuery en la consola de Cloud. Este cuadro de mensaje contiene un vínculo a la guía de inicio rápido y las notas de la versión.
Se abrirá la consola de BigQuery.
En la consola de Cloud, abre el menú de navegación y selecciona BigQuery.
Haz clic en LISTO para ir a la IU en fase beta. Asegúrate de que el ID de tu proyecto esté configurado en la pestaña Explorador, que debería verse de la siguiente manera:
Si haces clic en la flecha EXPANDIR EL NODO junto a tu proyecto, no verás bases de datos ni tablas, ya que aún no has agregado ninguna al proyecto.
Por suerte, hay muchos conjuntos de datos públicos y abiertos disponibles en BigQuery para que los uses. Ahora, obtendrás más información sobre el conjunto de datos de la NCAA y, luego, descubrirás cómo agregarlo a tu proyecto de BigQuery.
Cada año, la National Collegiate Athletic Association (NCAA) organiza dos torneos importantes de baloncesto universitario en Estados Unidos: uno para hombres y otro para mujeres. En el torneo masculino de la NCAA que se realiza en marzo, 68 equipos participan en partidos de eliminación directa y uno resulta ganador general del March Madness.
La NCAA ofrece un conjunto de datos público que contiene las estadísticas de los partidos de baloncesto masculinos y femeninos, y de los jugadores de la temporada y los torneos finales. Los datos de los partidos incluyen información detallada de las jugadas y anotaciones desde el 2009, así como resultados finales desde 1996. En el caso de algunos equipos, los datos adicionales sobre las victorias y las derrotas se remontan a la temporada de 1894-1895.
Asegúrate de permanecer en la consola de BigQuery para realizar este paso. En la pestaña Explorador, haz clic en el botón + AGREGAR y, luego, selecciona Conjuntos de datos públicos.
En la barra de búsqueda, escribe NCAA Basketball y presiona Intro. Aparecerá un resultado. Selecciónalo y, luego, haz clic en VER CONJUNTO DE DATOS:
Se abrirá una nueva pestaña de BigQuery con el conjunto de datos cargado. Puedes seguir trabajando en esa pestaña, o bien cerrarla y actualizar la consola de BigQuery en la otra pestaña para ver el conjunto de datos públicos.
Deberías ver 10 tablas en el conjunto de datos.
Haz clic en mbb_historical_tournament_games
y, luego, en VISTA PREVIA para ver las filas de muestra de datos.
Luego, haz clic en DETALLES para obtener los metadatos de la tabla.
La página debería tener el siguiente aspecto:
Ahora, escribirás una consulta sencilla en SQL para determinar cuántas temporadas y partidos se encuentran disponibles para explorar en nuestra tabla mbb_historical_tournament_games
.
Haz clic en Revisar mi progreso para verificar el objetivo.
Responde las siguientes preguntas de opción múltiple para reforzar tus conocimientos sobre los conceptos que tratamos hasta ahora. Trata de responderlas lo mejor posible.
El objetivo final de este lab es predecir el ganador de un determinado partido de baloncesto masculino de la NCAA usando datos históricos. En el aprendizaje automático, cada columna de datos que nos ayuda a determinar un resultado (en este caso, la victoria o derrota en un partido del torneo) se denomina atributo.
La columna de datos que intentas predecir se denomina etiqueta. Los modelos de aprendizaje automático “aprenden” la relación entre los atributos para predecir el resultado de una etiqueta.
Estos son algunos ejemplos de atributos del conjunto de datos histórico:
La etiqueta que intentarás predecir será el resultado de cada partido futuro, es decir, si un equipo gana o pierde.
Responde las siguientes preguntas de opción múltiple para reforzar tus conocimientos sobre los conceptos que tratamos hasta ahora. Trata de responderlas lo mejor posible.
Para compilar un modelo de aprendizaje automático, se requieren muchos datos de entrenamiento de alta calidad. Por suerte, nuestro conjunto de datos de la NCAA es lo suficientemente sólido como para que podamos compilar un modelo eficaz basándonos en él.
Regresa a la consola de BigQuery. Deberías haberte detenido en el resultado de la consulta que ejecutó.
En el menú de la izquierda, abre la tabla mbb_historical_tournament_games
haciendo clic en su nombre. Una vez que se cargue, haz clic en VISTA PREVIA. La página debería tener el siguiente aspecto:
Responde las siguientes preguntas de opción múltiple para reforzar tus conocimientos sobre los conceptos que tratamos hasta ahora. Trata de responderlas lo mejor posible.
Después de inspeccionar el conjunto de datos, observarás que una fila del conjunto de datos tiene las columnas win_market
y lose_market
. Deberás dividir el registro de un partido en un registro para cada equipo, de modo que puedas etiquetar cada fila como “ganador” o “perdedor”.
En el EDITOR de consultas, copia y pega la siguiente consulta y haz clic en EJECUTAR:
Deberías recibir el siguiente resultado:
Haz clic en Revisar mi progreso para verificar el objetivo.
Ahora que conoces qué atributos se encuentran disponibles a partir del resultado, responde la siguiente pregunta para reforzar tus conocimientos sobre el conjunto de datos.
Ahora que ya exploramos nuestros datos, es momento de entrenar un modelo de aprendizaje automático.
Para este problema en particular, compilarás un modelo de clasificación. Como tendremos dos clases, victoria o derrota, también se denomina modelo de clasificación binaria. Un equipo puede ganar o perder un partido.
Si lo deseas, después del lab, puedes predecir la cantidad total de puntos que anotará un equipo con un modelo de predicción, pero ese no es el enfoque de esta tarea.
Una manera sencilla de saber si estás prediciendo o clasificando es mirar el tipo de etiqueta (columna) de los datos que estás intentando predecir:
Nuestro modelo de clasificación llevará a cabo el aprendizaje automático con un modelo estadístico muy popular llamado regresión logística.
Necesitamos un modelo que genere una probabilidad para cada valor posible de etiqueta discreta, el que en nuestro caso es una “victoria” o una “derrota”. La regresión logística es un buen tipo de modelo para comenzar con este objetivo. Lo positivo es que el modelo de AA hará todos los cálculos y la optimización durante el entrenamiento del modelo, una actividad en la que las computadoras llegan a ser infalibles.
Para crear nuestro modelo de clasificación en BigQuery, solo hay que escribir la instrucción de SQL CREATE MODEL
y proporcionar algunas opciones.
Sin embargo, antes de poder crear el modelo, necesitamos un lugar para almacenarlo en nuestro proyecto.
bracketology
y haz clic en CREAR CONJUNTO DE DATOS.En nuestro código, observarás que solo se requieren unas pocas líneas de SQL para crear el modelo. Una de las opciones más importantes es elegir el tipo de modelo logistic_reg para nuestra tarea de clasificación.
Entrenar el modelo tardará entre 3 y 5 minutos. Deberías obtener el siguiente resultado cuando finalice el trabajo:
Haz clic en Revisar mi progreso para verificar el objetivo.
Si tienes experiencia en aprendizaje automático, observa que puedes personalizar todos esos hiperparámetros (opciones configuradas antes de ejecutar el modelo) definiendo su valor en la instrucción OPTIONS
.
Si no tienes experiencia, BigQuery ML configurará valores inteligentes predeterminados para cualquier opción que no esté configurada.
Si necesitas más información, consulta la lista de opciones de modelos de BigQuery ML.
Los modelos de aprendizaje automático “aprenden” la asociación entre los atributos conocidos y las etiquetas desconocidas. Como puedes suponer, algunos atributos, como la "clasificación" o el "nombre de la universidad", pueden ser de mayor ayuda para determinar una victoria o una derrota que otras columnas de datos (atributos), como el día de la semana en el que se juega el partido.
Los modelos de aprendizaje automático inician el proceso de entrenamiento sin esa intuición y, por lo general, aleatorizarán la ponderación de cada atributo.
Durante el proceso de entrenamiento, el modelo optimizará una ruta para ponderar cada atributo de la mejor manera posible. Con cada ejecución, se intenta minimizar la Pérdida de datos de entrenamiento y la Pérdida de datos de evaluación.
Si alguna vez descubres que la pérdida final de la evaluación es mucho mayor que la de entrenamiento, significa que tu modelo sobreajusta o memoriza tus datos de entrenamiento en vez de aprender relaciones generalizables.
Puedes ver cuántas ejecuciones de entrenamiento realiza el modelo haciendo clic en la pestaña ENTRENAMIENTO y seleccionando Tabla en la opción Ver como.
Durante nuestra ejecución en particular, el modelo completó 3 iteraciones de entrenamiento en aproximadamente 20 segundos. Es posible que tu modelo varíe.
Después del entrenamiento, puedes inspeccionar los pesos para ver qué atributos le proporcionaron más valor al modelo.
El resultado debería ser similar al siguiente:
Como puedes ver, si la clasificación de un equipo es muy baja (1, 2 o 3) o muy alta (14, 15 o 16), el modelo le proporciona un peso significativo (lo máximo es 1.0) para determinar el resultado de victorias y derrotas. De forma intuitiva, esto tiene sentido porque esperamos que los equipos con una clasificación muy baja tengan un buen rendimiento en el torneo.
El verdadero atractivo del aprendizaje automático es que no tuvimos que crear muchas instrucciones IF THEN
codificadas en SQL que le indicaran al modelo que, si la clasificación es 1, el equipo tiene un 80% más de probabilidades de ganar. El aprendizaje automático elimina las reglas codificadas y la lógica, y aprende esas relaciones por sí mismo. Si necesitas más detalles, consulta la documentación sobre la sintaxis de BQML en relación con los pesos.
Para evaluar el rendimiento del modelo, puedes ejecutar el fragmento de código ML.EVALUATE
en un modelo entrenado.
El resultado debería ser similar al siguiente:
El valor tendrá una exactitud de alrededor del 69%. Aunque es mejor que lanzar una moneda a la suerte, quedan aspectos por mejorar.
Ahora que entrenaste un modelo con datos históricos hasta la temporada del 2017 inclusive (todos los datos que tenías), es hora de realizar las predicciones para la temporada del 2018. Tu equipo de científicos de datos te proporcionó los resultados del torneo del 2018 en una tabla aparte que no tienes en tu conjunto de datos original.
Hacer predicciones es tan simple como llamar a ML.PREDICT
en un modelo entrenado y pasar el conjunto de datos sobre el que quieres realizar la predicción.
Algunos segundos después, deberías obtener el siguiente resultado:
Haz clic en Revisar mi progreso para verificar el objetivo.
Ahora verás el conjunto de datos original, además de tres columnas nuevas:
Como ya conoces los resultados del March Madness 2018, veamos cómo le fue al modelo con las predicciones. Sugerencia: Si quieres predecir los resultados del March Madness 2019, simplemente pasa un conjunto de datos con las clasificaciones y los nombres de los equipos de ese año. Desde luego, la columna de etiquetas estará vacía, ya que esos partidos aún no se jugaron (eso es lo que va a predecir).
El resultado debería ser similar al siguiente:
De un total de 134 predicciones (67 partidos del torneo), nuestro modelo se equivocó 38 veces. Obtuvo un 70% total de aciertos en los partidos del torneo 2018.
Hay muchos otros factores y atributos que influyen en las victorias estrechas y las derrotas increíbles de cualquier torneo March Madness que a un modelo le costaría mucho predecir.
Busquemos la mayor derrota del torneo 2017 según el modelo. Veremos dónde el modelo predice con una certeza de más del 80% y ERRA.
El resultado debería ser similar al siguiente:
Después del partido, el entrenador Odom de la UMBC declaró: “Increíble. No hay nada más que decir”. Obtén más información sobre este tema en el artículo 2018 UMBC vs. Virginia men's basketball game.
Nuestro próximo desafío será crear un modelo más eficaz SIN usar la clasificación ni el nombre del equipo como atributos.
En la segunda parte de este lab, crearás un segundo modelo de AA con atributos detallados que se proporcionaron recientemente.
Ahora que ya sabes crear modelos de AA usando BigQuery ML, tu equipo de científicos de datos te proporcionó un nuevo conjunto de datos con información sobre cada jugada, en el que crearon métricas nuevas de equipos para que tu modelo las aprenda. Estos incluyen:
Algunos segundos después, deberías obtener el siguiente resultado:
Haz clic en Revisar mi progreso para verificar el objetivo.
Tu tabla debería ser similar a la siguiente:
No te preocupes si el resultado no es idéntico al de la captura de pantalla anterior.
Clasificación de la eficiencia del rival: De todos los equipos, indica la clasificación que tiene nuestro rival para anotar de manera eficiente en el transcurso del tiempo (puntos por cada 100 posesiones del balón). Cuanto más baja, mejor.
Clasificación de la velocidad del rival: De todos los equipos, indica la clasificación que tiene nuestro rival en cuanto a la posesión del balón (cantidad de posesiones en 40 minutos). Cuanto más baja, mejor.
Ahora que tienes atributos esclarecedores sobre lo bien que puede anotar y manejar el balón un equipo, entrenemos nuestro segundo modelo.
Como medida adicional para evitar que tu modelo “memorice los equipos buenos del pasado”, excluye el nombre del equipo y la clasificación de este próximo modelo y enfócate solo en las métricas.
Algunos segundos después, deberías obtener un resultado similar al siguiente:
El resultado debería ser similar al siguiente:
¡Bien! Acabas de entrenar un modelo nuevo con atributos diferentes y de aumentar su exactitud a aproximadamente un 75%, o un aumento del 5% en comparación con el modelo original.
Una de las lecciones más importantes del aprendizaje automático es que la calidad de los atributos de un conjunto de datos puede marcar una gran diferencia en la exactitud del modelo.
Haz clic en Revisar mi progreso para verificar el objetivo.
El resultado debería ser similar al siguiente:
Ordenamos los pesos según su valor absoluto para que aparezcan en primer lugar los más determinantes (para una victoria o una derrota).
Como puedes ver en los resultados, los 3 principales son pace_stat_diff
, eff_stat_diff
y eff_rating_diff
. Pasemos a explorarlos un poco más.
Indica qué tan diferente fue, entre los equipos, la estadística real de posesiones en 40 minutos. Según el modelo, es el factor más determinante en el resultado del partido.
Indica qué tan diferente fue, entre los equipos, la estadística real de puntos netos por cada 100 posesiones.
Indica qué tan diferente fue, entre los equipos, la calificación normalizada de eficiencia para anotar.
La temporada es el último factor en la lista de pesos ordenados, por lo que tuvo poca influencia en las predicciones del modelo. Lo que indica el modelo es que la temporada (2013, 2014 y 2015) no es tan útil para predecir el resultado de los partidos. El 2014 no tuvo nada especial para ningún equipo.
Una estadística interesante es que el modelo valoró el ritmo del equipo (su capacidad para controlar el balón) por sobre la eficiencia para anotar.
El resultado debería ser similar al siguiente:
Haz clic en Revisar mi progreso para verificar el objetivo.
Como conoces el resultado real del partido, puedes ver en qué parte el modelo hizo una predicción errónea con el nuevo conjunto de datos de prueba.
Como puedes ver en la cantidad de registros que devolvió la consulta, el modelo erró en 48 enfrentamientos (24 partidos) de la cantidad total del torneo, con una exactitud del 64% para el 2018. Debió haber sido un año agitado. Veamos qué victorias inesperadas ocurrieron.
El resultado debería ser similar al siguiente:
La victoria inesperada más importante fue la misma que descubrió nuestro modelo anterior: la del equipo de UMBC contra el de University of Virginia. Obtén más información sobre cómo, en general, el 2018 fue un año de grandes victorias inesperadas en el artículo Has This Been the “Maddest” March? ¿El 2019 fue igual de agitado?
¿Qué ocurre con los casos en los que el modelo básico (que compara clasificaciones) erró, pero el modelo avanzado acertó?
El resultado debería ser similar al siguiente:
El modelo predijo que el equipo de Florida State University (09) vencería inesperadamente al de Xavier University (01), y así fue.
El modelo nuevo predijo correctamente la victoria inesperada (aunque la clasificación indicaba lo contrario) basándose en los nuevos atributos útiles, como el ritmo y la eficiencia para anotar. Mira los momentos destacados del partido en YouTube.
Ahora que conocemos los equipos y las clasificaciones de marzo 2019, hagamos predicciones del resultado de los próximos partidos.
El resultado debería ser similar al siguiente:
No sabemos qué equipos se enfrentarán a medida que avance el torneo, así que haremos que todos compitan entre sí.
En SQL, una manera sencilla de hacer que un solo equipo se enfrente a todos los de la tabla es usar la instrucción CROSS JOIN.
Haz clic en Revisar mi progreso para verificar el objetivo.
Estadística: El equipo de Duke University (1) tiene un 88.5% de probabilidades de derrotar al de North Dakota State University (16) el 22/3/19.
Cambia el filtro school_ncaa anterior para predecir los enfrentamientos en tu ronda. Escribe la puntuación de confianza del modelo y disfruta de los partidos.
Usaste BigQuery ML para predecir los equipos ganadores del torneo de baloncesto masculino de la NCAA.
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.
Última actualización del manual: 19 de marzo de 2024
Prueba más reciente del lab: 19 de marzo de 2024
Copyright 2025 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.
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
One lab at a time
Confirm to end all existing labs and start this one