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 se centra en el análisis predictivo, el aprendizaje automático no supervisado se centra en el análisis descriptivo. 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.
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 BigQuery.
En el panel de la izquierda, haz clic en
Explorar:Si no ves el panel izquierdo, haz clic en
Expandir panel izquierdo para abrirlo.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 une estos datos con la información de la estación. Esto incluye la creación de una columna calculada que contenga la distancia de la estación al 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 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 instrucción 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 en la declaración SELECT
solo se mencionan los atributos.
Sigue estos pasos para crear un modelo de k-means:
En la consola de Google Cloud , ve a la página 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 BigQuery.
En el panel de la izquierda, haz clic en
Explorar:En el panel Explorador, expande tu proyecto y haz clic en Conjuntos de datos.
Haz clic en el conjunto de datos
bqml_tutorial
y, luego, ve a la pestaña 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 de datos determinado. 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 de la ciudad ocupada que se encuentra cerca del centro de la ciudad.
- El centroide 4 muestra una estación suburbana con viajes que son más largos.
Si tuvieras un negocio de alquiler de bicicletas, podrías usar esta información para tomar 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 ML.PREDICT
de SQL 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 tiene la cadena Kennington
en su nombre:
En la consola de Google Cloud , ve a la página 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.