En este tutorial se explica cómo usar un modelo de k-means en BigQuery ML para identificar clústeres en un conjunto de datos.
El algoritmo k-medias 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 de este tutorial usan funciones de geografía disponibles en las analíticas geoespaciales. Para obtener más información, consulta la introducción a las analíticas geoespaciales.
En este tutorial se usa el conjunto de datos público de alquiler de bicicletas de Londres. Los datos incluyen marcas de tiempo de inicio y finalización, nombres de las estaciones y duración del trayecto.
Crear conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de k-means:
En la Google Cloud consola, ve a la página BigQuery.
En el panel de la izquierda, haz clic en
Explorador:Si no ves el panel de la izquierda, haz clic en
Ampliar panel de la izquierda 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, introduce
bqml_tutorial
.En Tipo de ubicación, selecciona Multirregional y, a continuación, UE (varias regiones de la Unión Europea).
El conjunto de datos público London Bicycle Hires se almacena en la
EU
multirregión. El conjunto de datos debe estar en la misma ubicación.Deje el resto de los ajustes predeterminados como están y haga clic en Crear conjunto de datos.
Examinar los datos de entrenamiento
Examina los datos que usarás para entrenar tu modelo de k-means. En este tutorial, agruparás las estaciones de bicicletas en clústeres en función de los siguientes atributos:
- Duración de los alquileres
- Número de viajes al día
- Distancia del centro de la ciudad
SQL
Esta consulta extrae datos sobre alquileres de bicicletas, incluidas las columnas start_station_name
y duration
, y combina estos datos con información de las estaciones. Esto incluye la creación de una columna calculada que contenga la distancia de la estación al centro de la ciudad. A continuación, calcula los atributos de la estación en una columna stationstats
, incluida la duración media de los trayectos y el número de viajes, así como la columna distance_from_city_center
calculada.
Sigue estos pasos para examinar los datos de entrenamiento:
En la Google Cloud consola, 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ían ser similares a los siguientes:
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican 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 los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Crear un modelo k-medias
Crea un modelo k-medias con los datos de entrenamiento de alquileres de bicicletas de Londres.
SQL
En la siguiente consulta, la instrucción CREATE MODEL
especifica el número de clústeres que se van a usar (cuatro). En la instrucción SELECT
, la cláusula EXCEPT
excluye la columna station_name
porque no contiene ninguna característica. La consulta crea una fila única por station_name y solo se mencionan las características en la instrucción SELECT
.
Para crear un modelo k-medias, sigue estos pasos:
En la Google Cloud consola, 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;
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican 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 los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Interpretar 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 genera el modelo.
Sigue estos pasos para ver la información de evaluación del modelo:
En la Google Cloud consola, ve a la página BigQuery.
En el panel de la izquierda, haz clic en
Explorador:En el panel Explorador, expande tu proyecto y haz clic en Conjuntos de datos.
Haga clic en el conjunto de datos
bqml_tutorial
y, a continuación, vaya a la pestaña Modelos.Selecciona el modelo
london_station_clusters
.Selecciona la pestaña Evaluación. En esta pestaña se muestran visualizaciones de los clústeres identificados por el modelo de k-means. En la sección Funciones numéricas, los gráficos de barras muestran los valores de las funciones numéricas más importantes de cada centroide. Cada centroide representa un clúster de datos determinado. Puedes seleccionar las funciones que quieras visualizar en el menú desplegable.
Este modelo crea los siguientes centroides:
- El centroide 1 muestra una estación de la ciudad menos concurrida, con alquileres de menor duración.
- El centroide 2 muestra la segunda estación de la ciudad, que tiene menos actividad y se usa para alquileres de mayor duración.
- El centroide 3 muestra una estación de una ciudad con mucho movimiento que está cerca del centro.
- El centroide 4 muestra una estación de cercanías con trayectos más largos.
Si tuvieras una empresa de alquiler de bicicletas, podrías usar esta información para tomar decisiones empresariales. Por ejemplo:
Supongamos que quieres probar un nuevo tipo de bloqueo. ¿Qué clúster de estaciones deberías elegir como sujeto para este experimento? Las estaciones de los centroides 1, 2 o 4 parecen opciones lógicas porque no son las más concurridas.
Supongamos que quieres incluir bicicletas de carreras en algunas estaciones. ¿Qué emisoras deberías elegir? El centroide 4 es el grupo de estaciones que están lejos del centro de la ciudad y que tienen los trayectos más largos. Es probable que sean candidatas para bicicletas de carreras.
Usar la función ML.PREDICT
para predecir el clúster de una estación
Identifica el clúster al que pertenece una estación concreta mediante la ML.PREDICT
función SQL o la predict
función DataFrames de BigQuery.
SQL
En la siguiente consulta se usa la función REGEXP_CONTAINS
para buscar todas las entradas de la columna station_name
que contengan la cadena Kennington
. La función ML.PREDICT
usa esos valores para predecir qué clústeres pueden 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 Google Cloud consola, 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 que se indican 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 los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.