BigQuery ML supporta l'apprendimento non supervisionato . Puoi applicare k-means per raggruppare i dati in cluster. A differenza del machine learning supervisionato, che si occupa di analisi predittiva, l'apprendimento non supervisionato si occupa di analisi descrittive. Si tratta di comprendere i tuoi dati in modo da poter rendere i prendono le loro decisioni.
In questo tutorial utilizzi un modello k-means in BigQuery ML per creare cluster di dati nel set di dati pubblico Noleggi di biciclette a Londra. Dati di Londra Noleggio biciclette contiene il numero di persone che hanno assunto il programma di affitti del ciclo di Santander a Londra nel 2011 ad oggi. I dati includono i timestamp di partenza e di arrivo, i nomi delle stazioni e della corsa.
Le query in questo tutorial utilizzano Funzioni geografiche disponibili nell'analisi geospaziale. Per ulteriori informazioni sull'analisi geospaziale, vedi Introduzione all'analisi geospaziale.
Obiettivi
In questo tutorial:- Creare un modello di clustering K-means.
- Prendi decisioni basate sui dati in base alla visualizzazione dei cluster di BigQuery ML.
Costi
Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:
- BigQuery
- BigQuery ML
Per informazioni sui costi di BigQuery, consulta Prezzi di BigQuery.
Per informazioni sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.
Prima di iniziare
- 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 viene abilitato automaticamente nei nuovi progetti.
Per attivare BigQuery in un progetto preesistente, vai a
Enable the BigQuery API.
Introduzione
I tuoi dati potrebbero contenere raggruppamenti o cluster di dati naturali e potresti voler identificare questi raggruppamenti in modo descrittivo per prendere decisioni basate sui dati. Ad esempio, se sei un rivenditore, potresti voler identificare raggruppamenti naturali di clienti che hanno abitudini d'acquisto o località simili. Questo processo è noto come segmentazione dei clienti.
I dati utilizzati per la segmentazione dei clienti potrebbero includere il negozio alla quale visitato, quali articoli hanno comprato e quanto hanno pagato. Creeresti un modello per cercare di capire in che modo questi gruppi di clienti tipo di poter progettare elementi che risultino interessanti per i membri del gruppo.
Potresti anche trovare gruppi di prodotti tra gli articoli acquistati. In questo caso, raggruppa gli articoli in base a chi li ha acquistati, a quando sono stati acquistati, dove sono stati acquistati e altre caratteristiche simili. Dovresti creare un modello per determinare le caratteristiche di un gruppo di prodotti in modo da poter prendere decisioni consapevoli, ad esempio su come migliorare il cross-selling.
In questo tutorial utilizzerai BigQuery ML per creare k-means che esegue il clustering Dati sui noleggi biciclette di Londra basati su attributi delle stazioni di noleggio biciclette.
Per creare un modello K-means, segui questi passaggi.
- Passaggio 1: crea un set di dati per archiviare il modello
- Il primo passaggio consiste nel creare un set di dati in cui archiviare il modello.
- Passaggio due: esamina i dati di addestramento
- Il passaggio successivo è esaminare i dati che utilizzi per addestrare il modello di clustering
eseguendo una query sulla tabella
london_bicycles
. Poiché K-means è un supervisionato, l'addestramento del modello non richiede etichette è necessario suddividerli in dati di addestramento e dati di valutazione.
- Passaggio 3. Crea un modello K-means.
- Il terzo passaggio consiste nel creare il modello K-means. Quando crei il modello,
di clustering è
station_name
e i dati vengono raggruppati in base Attributo stazione, ad esempio la distanza della stazione dal centro città.
- Passaggio quattro: usa la funzione
ML.PREDICT
per prevedere il cluster di una stazione. - Successivamente, utilizzerai la funzione
ML.PREDICT
per prevedere il cluster per un un determinato insieme di stazioni. Prevedi i cluster per tutti i nomi delle stazioni che contengono la stringaKennington
.
- Passaggio quattro: usa la funzione
- Passaggio 5: usa il modello per prendere decisioni basate sui dati.
- L'ultimo passaggio consiste nell'utilizzare il modello per prendere decisioni basate sui dati. Ad esempio: sulla base dei risultati del modello, è possibile determinare quali stazioni trarrebbero vantaggio dalla capacità aggiuntiva.
Passaggio 1: crea il set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML:
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del tuo progetto.
Fai clic su
Visualizza azioni > Crea il set di dati.Nella pagina Crea set di dati, segui questi passaggi:
In ID set di dati, inserisci
bqml_tutorial
.Per Tipo di località, seleziona Più regioni e poi UE (più regioni nell'Unione Europea).
Il set di dati pubblico di London Noleggio biciclette è archiviato nel
EU
più regioni. Il set di dati deve trovarsi nella stessa località.Lascia invariate le restanti impostazioni predefinite e fai clic su Crea il set di dati.
Passaggio 2: esamina i dati di addestramento
Esamina quindi i dati utilizzati per addestrare il modello K-means. In questo tutorial, raggruppi le stazioni di noleggio in base ai seguenti attributi:
- Durata dei noleggi
- Numero di viaggi al giorno
- Distanza dal centro città
SQL
La seguente query GoogleSQL viene utilizzata per esaminare i dati utilizzati per addestrare il modello k-means.
#standardSQL 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
Dettagli della query
Questa query estrae i dati sulle prenotazioni di biciclette, tra cui start_station_name
e
duration
, e li unisce alle informazioni sulle stazioni, tra cui distance-from-city-center
. Quindi, calcola gli attributi
dalla stazione di stationstats
, inclusa la durata media delle corse e il
numero di corse e passa per l'attributo della stazione distance_from_city_center
.
Questa query utilizza il parametro
Clausola WITH
per definire le sottoquery. La query utilizza anche le funzioni di analisi geospaziale ST_DISTANCE
e ST_GEOGPOINT
. Per ulteriori informazioni su queste funzioni, consulta
Area geografica
. Per ulteriori informazioni
informazioni sull'analisi geospaziale, consulta Introduzione alle
analisi geospaziali.
Esegui la query
La seguente query compila i dati di addestramento e viene utilizzata anche
CREATE MODEL
più avanti in questo tutorial.
Per eseguire la query:
- Vai alla pagina BigQuery.
Nel riquadro dell'editor, esegui la seguente istruzione SQL:
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
Una volta completata la query, fai clic sulla scheda Risultati sotto il testo della query. in ogni area. La scheda Risultati mostra le colonne per cui hai eseguito query e che vengono utilizzate per addestrare il tuo modello:
station_name
,duration
,num_trips
,distance_from_city_center
. I risultati dovrebbero essere simili ai seguenti.
DataFrame BigQuery
Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.
Passaggio 3. Crea un modello K-means
Ora che hai esaminato i dati di addestramento, il passaggio successivo è creare Modello K-means utilizzando i dati.
SQL
Puoi creare e addestrare un modello K-means utilizzando
CREATE MODEL
con l'opzione model_type=kmeans
.
Dettagli query
L'istruzione CREATE MODEL
specifica il numero di cluster da utilizzare:
quattro. Nell'istruzione SELECT
, la clausola EXCEPT
esclude station_name
colonna perché station_name
non è una funzionalità. La query crea una riga univoca per station_name e solo le funzionalità sono menzionate nell'istruzione SELECT
.
Se ometti l'opzione num_clusters
, BigQuery ML sceglie una
valore predefinito ragionevole in base al numero totale di righe nei dati di addestramento. Tu
potresti anche eseguire l'ottimizzazione degli iperparametri per trovare un buon numero. Per determinare un
numero ottimale di cluster, esegui la query CREATE MODEL
per diversi
valori di num_clusters
, trova la misura dell'errore e scegli il punto in cui
la misura dell'errore ha il valore minimo. Puoi ottenere la misura dell'errore
Selezionando il modello e facendo clic sulla scheda Valutazione. Questa scheda mostra
l'indice di Davies-Bouldin.
Esegui la query
La seguente query aggiunge un'istruzione CREATE MODEL
alla query utilizzata per esaminare i dati di addestramento e rimuove anche i campi id
nei dati.
Per eseguire la query e creare un modello K-means:
- Vai alla pagina BigQuery.
Nel riquadro dell'editor, esegui il seguente statement SQL:
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
Nel pannello di navigazione, nella sezione Risorse, espandi il nome del tuo progetto, fai clic su bqml_tutorial, quindi su london_station_clusters.
Fai clic sulla scheda Schema. Lo schema del modello elenca i quattro attributi delle stazioni usato da BigQuery ML per eseguire il clustering. Lo schema deve avere come mostrato di seguito.
- Fai clic sulla scheda Valutazione. Questa scheda mostra le visualizzazioni di cluster identificati dal modello K-means. In Funzionalità numeriche, i grafici a barre mostrano fino a 10 dei valori delle funzionalità numeriche più importanti per ciascun centroide. Puoi selezionare le funzionalità da visualizzare dal menu a discesa o dal menu Fogli Google.
DataFrame BigQuery
Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta Documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.
Passaggio 4: usa la funzione ML.PREDICT
per prevedere il cluster di una stazione
Per identificare il cluster a cui appartiene una particolare stazione, utilizza
ML.PREDICT
Funzione SQL
oppure la funzione DataFrames BigQuery di predict
SQL
Dettagli query
Questa query utilizza la classe REGEXP_CONTAINS
per trovare tutte le voci della colonna station_name
contenenti la funzione
la stringa "Kennington". La funzione ML.PREDICT
utilizza questi valori per prevedere
quali cluster contengono queste stazioni.
Esegui la query
La seguente query prevede il cluster di ogni stazione che la stringa "Kennington" nel nome.
Per eseguire la query ML.PREDICT
:
- Vai alla pagina BigQuery.
Nel riquadro dell'editor, esegui il seguente statement SQL:
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')))
Una volta completata la query, fai clic sulla scheda Risultati sotto il testo della query. in ogni area. I risultati dovrebbero essere simili ai seguenti.
DataFrame BigQuery
Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta Documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.
Passaggio 5: usa il modello per prendere decisioni basate sui dati
I risultati della valutazione possono aiutarti a interpretare i diversi cluster. Nell'esempio seguente, il centroide 3 mostra una stazione cittadina trafficata vicino al centro città. Il centroide 2 mostra la seconda stazione della città, meno frequentata e utilizzata per le prenotazioni di durata più lunga. Il Centroid 1 mostra una stazione della città meno trafficata, con noleggi di durata più breve. Centroid 4 che mostra una stazione di periferia con corse più lunghi.
In base a questi risultati, puoi utilizzare questi dati per prendere decisioni più consapevoli. Ad esempio:
Supponiamo di dover sperimentare un nuovo tipo di blocco. Quale cluster stazioni di noleggio dovresti scegliere come soggetto per questo esperimento? Le stazioni di 1, 2 o 4 sembrano scelte logiche perché non sono le stazioni più trafficate.
Supponiamo di voler mettere in magazzino alcune stazioni di biciclette da corsa. Quali stazioni dovresti scegliere? Il centroide 4 è il gruppo di stazioni distanti dal in centro città e i loro viaggi sono i più lunghi. Questi sono probabili candidati per in bici da corsa.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
- Puoi eliminare il progetto che hai creato.
- In alternativa, puoi mantenere il progetto ed eliminare il set di dati.
Elimina il set di dati
L'eliminazione del progetto rimuove tutti i set di dati e tutte le tabelle nel progetto. Se se preferisci riutilizzare il progetto, puoi eliminare il set di dati creato tutorial:
Se necessario, apri la pagina BigQuery nel nella console Google Cloud.
Nel menu di navigazione, fai clic sul set di dati bqml_tutorial che hai creato.
Fai clic su Elimina set di dati sul lato destro della finestra. Questa azione elimina il set di dati e il modello.
Nella finestra di dialogo Elimina set di dati, digita per confermare il comando di eliminazione il nome del set di dati (
bqml_tutorial
), quindi fai clic su Elimina.
Elimina il progetto
Per eliminare il progetto:
- 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.
Passaggi successivi
- Per una panoramica di BigQuery ML, consulta Introduzione a BigQuery ML.
- Per informazioni sulla creazione di modelli, consulta
CREATE MODEL
pagina sulla sintassi.