En este instructivo, aprenderás a usar un modelo de k-means en BigQuery ML para identificar clústeres en un conjunto de datos.
El algoritmo k-means que agrupa tus datos en clústeres es una forma de aprendizaje automático no supervisado. A diferencia del aprendizaje automático supervisado, que es sobre estadísticas predictivas, el aprendizaje automático no supervisado tiene que ver con estadísticas descriptivas. El aprendizaje automático no supervisado puede ayudarte a comprender tus datos para que puedas tomar decisiones basadas en ellos.
Las consultas en este instructivo usan funciones de geografía disponibles en estadísticas geoespaciales. Para obtener más información, consulta Introducción a las estadísticas geoespaciales.
En este instructivo, se usa el conjunto de datos públicos Alquileres de bicicletas de Londres. Los datos incluyen marcas de tiempo de inicio y parada, nombres de estaciones y duración del viaje.
Objetivos
En este instructivo, se te guiará para completar las siguientes tareas:- Examina los datos que se usaron para entrenar el modelo.
- Crear un modelo de agrupamiento en clústeres de k-means
- Interpretar los clústeres de datos producidos con la visualización de los clústeres de BigQuery ML
- Ejecuta la función
ML.PREDICT
en el modelo de k-means para predecir el clúster probable de un conjunto de estaciones de alquiler de bicicletas.
Costos
En este instructivo, se usan componentes facturables de Google Cloud, incluidos los siguientes:
- BigQuery
- BigQuery ML
Para obtener información sobre los costos de BigQuery, consulta la página Precios de BigQuery.
Si deseas obtener información sobre los precios de BigQuery ML, consulta los precios de BigQuery ML.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- BigQuery se habilita automáticamente en proyectos nuevos.
Para activar BigQuery en un proyecto existente, ve a
Enable the BigQuery API.
Permisos necesarios
- Para crear el conjunto de datos, necesitas el permiso
bigquery.datasets.create
de IAM. Para crear el recurso de conexión, necesitas los siguientes permisos:
bigquery.connections.create
bigquery.connections.get
Para crear el modelo, necesitas los siguientes permisos:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.connections.delegate
Para ejecutar inferencias, necesitas los siguientes permisos:
bigquery.models.getData
bigquery.jobs.create
Para obtener más información sobre los roles y permisos de IAM en BigQuery, consulta Introducción a IAM.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de k-means:
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haz clic en
Ver acciones > Crear conjunto de datos.En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, ingresa
bqml_tutorial
.En Tipo de ubicación (Location type), selecciona Multirregión (Multi-region) y, luego, UE (varias regiones en la Unión Europea) (EU [multiple regions in European Union]).
El conjunto de datos públicos de Alquileres de bicicletas de Londres se almacena en la multirregión
EU
. Tu conjunto de datos debe estar en la misma ubicación.Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos(Create dataset).
Examina los datos de entrenamiento
Examina los datos que usarás para entrenar tu modelo de k-means. En este instructivo, agruparás en clústeres las estaciones de bicicletas en función de los siguientes atributos:
- Duración de los alquileres
- Cantidad de viajes por día
- Distancia desde el centro de la ciudad
SQL
Esta consulta extrae datos sobre el alquiler de bicicletas, incluidas las columnas start_station_name
y duration
, y los une con la información de la estación. Esto incluye crear una columna calculada que contenga la distancia de la estación del centro de la ciudad. Luego, calcula los atributos de la estación en una columna stationstats
, incluida la duración promedio de los viajes y la cantidad de viajes, y la columna distance_from_city_center
calculada.
Sigue estos pasos para examinar los datos de entrenamiento:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
WITH hs AS ( SELECT h.start_station_name AS station_name, IF( EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OR EXTRACT(DAYOFWEEK FROM h.start_date) = 7, 'weekend', 'weekday') AS isweekday, h.duration, ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude), ST_GEOGPOINT(-0.1, 51.5)) / 1000 AS distance_from_city_center FROM `bigquery-public-data.london_bicycles.cycle_hire` AS h JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS s ON h.start_station_id = s.id WHERE h.start_date BETWEEN CAST('2015-01-01 00:00:00' AS TIMESTAMP) AND CAST('2016-01-01 00:00:00' AS TIMESTAMP) ), stationstats AS ( SELECT station_name, isweekday, AVG(duration) AS duration, COUNT(duration) AS num_trips, MAX(distance_from_city_center) AS distance_from_city_center FROM hs GROUP BY station_name, isweekday ) SELECT * FROM stationstats ORDER BY distance_from_city_center ASC;
Los resultados debería ser similar al siguiente:
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Crea un modelo de k-means
Crea un modelo de k-means con los datos de entrenamiento de Alquileres de bicicletas en Londres.
SQL
En la siguiente consulta, la sentencia CREATE MODEL
especifica la cantidad de clústeres que se usarán: cuatro. En la declaración SELECT
, la cláusula EXCEPT
excluye la columna station_name
porque esta columna no contiene un atributo. La consulta crea una fila única por station_name y solo se mencionan los atributos en la sentencia SELECT
.
Sigue estos pasos para crear un modelo de k-means:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
CREATE OR REPLACE MODEL `bqml_tutorial.london_station_clusters` OPTIONS ( model_type = 'kmeans', num_clusters = 4) AS WITH hs AS ( SELECT h.start_station_name AS station_name, IF( EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OR EXTRACT(DAYOFWEEK FROM h.start_date) = 7, 'weekend', 'weekday') AS isweekday, h.duration, ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude), ST_GEOGPOINT(-0.1, 51.5)) / 1000 AS distance_from_city_center FROM `bigquery-public-data.london_bicycles.cycle_hire` AS h JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS s ON h.start_station_id = s.id WHERE h.start_date BETWEEN CAST('2015-01-01 00:00:00' AS TIMESTAMP) AND CAST('2016-01-01 00:00:00' AS TIMESTAMP) ), stationstats AS ( SELECT station_name, isweekday, AVG(duration) AS duration, COUNT(duration) AS num_trips, MAX(distance_from_city_center) AS distance_from_city_center FROM hs GROUP BY station_name, isweekday ) SELECT * EXCEPT (station_name, isweekday) FROM stationstats;
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Interpreta los clústeres de datos
La información de la pestaña Evaluación de los modelos puede ayudarte a interpretar los clústeres que produce el modelo.
Sigue estos pasos para ver la información de evaluación del modelo:
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto, expande el conjunto de datos
bqml_tutorial
y, luego, expande la carpeta Modelos.Selecciona el modelo
london_station_clusters
.Selecciona la pestaña Evaluación. Esta pestaña muestra visualizaciones de los clústeres identificados por el modelo k-means. En la sección Atributos numéricos, los gráficos de barras muestran los valores de atributos numéricos más importantes para cada centroide. Cada centroide representa un clúster determinado de datos. Puedes seleccionar qué atributos visualizar en el menú desplegable.
Este modelo crea los siguientes centroides:
- El centroide 1 muestra una estación de la ciudad menos ocupada, con alquileres de menor duración.
- El Centroide 2 muestra la segunda estación de la ciudad que está menos ocupada y que se usa para alquileres de mayor duración.
- El centroide 3 muestra una estación urbana concurrida que está cerca del centro de la ciudad.
- El centroide 4 muestra una estación suburbana con viajes más largos.
Si dirigieras el negocio de alquiler de bicicletas, podrías usar esta información para fundamentar las decisiones comerciales. Por ejemplo:
Supongamos que necesitas experimentar con un tipo nuevo de anclaje. ¿Qué clúster de estaciones deberías elegir para realizar este experimento? Las estaciones los centroides 1, 2 o 4 parecen opciones lógicas porque no son las estaciones más concurridas.
Supongamos que deseas abastecer algunas estaciones con bicicletas de carrera. ¿Qué estaciones debes elegir? El centroide 4 es el grupo de estaciones que están lejos del centro de la ciudad y tienen los viajes más largos. Estas son las posibles candidatas para las bicicletas de carrera.
Usa la función ML.PREDICT
para predecir el clúster de una estación
Identifica el clúster al que pertenece una estación en particular con la función SQL ML.PREDICT
o la función predict
de BigQuery DataFrames.
SQL
En la siguiente consulta, se usa la función REGEXP_CONTAINS
para buscar todas las entradas en la columna station_name
que contienen la cadena Kennington
. La función ML.PREDICT
usa esos valores para predecir qué clústeres podrían contener esas estaciones.
Sigue estos pasos para predecir el clúster de cada estación que tenga la cadena Kennington
en su nombre:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
WITH hs AS ( SELECT h.start_station_name AS station_name, IF( EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OR EXTRACT(DAYOFWEEK FROM h.start_date) = 7, 'weekend', 'weekday') AS isweekday, h.duration, ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude), ST_GEOGPOINT(-0.1, 51.5)) / 1000 AS distance_from_city_center FROM `bigquery-public-data.london_bicycles.cycle_hire` AS h JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS s ON h.start_station_id = s.id WHERE h.start_date BETWEEN CAST('2015-01-01 00:00:00' AS TIMESTAMP) AND CAST('2016-01-01 00:00:00' AS TIMESTAMP) ), stationstats AS ( SELECT station_name, isweekday, AVG(duration) AS duration, COUNT(duration) AS num_trips, MAX(distance_from_city_center) AS distance_from_city_center FROM hs GROUP BY station_name, isweekday ) SELECT * EXCEPT (nearest_centroids_distance) FROM ML.PREDICT( MODEL `bqml_tutorial.london_station_clusters`, ( SELECT * FROM stationstats WHERE REGEXP_CONTAINS(station_name, 'Kennington') ));
Los resultados deberían ser similares a los siguientes.
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
- Puedes borrar el proyecto que creaste.
- De lo contrario, puedes mantener el proyecto y borrar el conjunto de datos.
Borra tu conjunto de datos
Borrar tu proyecto quita todos sus conjuntos de datos y tablas. Si prefieres volver a usar el proyecto, puedes borrar el conjunto de datos que creaste en este instructivo:
Si es necesario, abre la página de BigQuery en la consola de Google Cloud.
En el panel de navegación, haz clic en el conjunto de datos bqml_tutorial que creaste.
Haz clic en Borrar conjunto de datos en el lado derecho de la ventana. Esta acción borra el conjunto de datos y el modelo.
En el cuadro de diálogo Borrar conjunto de datos, escribe el nombre del conjunto de datos (
bqml_tutorial
) para confirmar el comando de borrado y, luego, haz clic en Borrar.
Borra tu proyecto
Para borrar el proyecto, haz lo siguiente:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Próximos pasos
- Para obtener una descripción general de BigQuery ML, consulta Introducción a BigQuery ML.
- Para obtener información sobre cómo crear modelos, consulta la página de sintaxis de
CREATE MODEL
.