Creare modelli di machine learning in BigQuery ML
Questo tutorial mostra come creare un modello di regressione logistica utilizzando di BigQuery ML nella console Google Cloud.
BigQuery ML ti consente di creare e addestrare modelli di machine learning in BigQuery usando query SQL. Questo contribuisce a migliorare il machine learning accessibile facendoti usare strumenti familiari come BigQuery editor SQL e aumenta anche la velocità di sviluppo, eliminando la necessità di spostare in un ambiente di machine learning separato.
In questo tutorial viene utilizzato il modello Set di dati di esempio di Google Analytics per BigQuery per creare un modello che prevede se il visitatore di un sito web farà transazione. Per informazioni sullo schema del set di dati di Analytics, consulta: Schema di esportazione BigQuery nel Centro assistenza Analytics.
Obiettivi
Questo tutorial mostra come eseguire le attività seguenti:
- L'utilizzo del
Dichiarazione
CREATE MODEL
per creare un modello di regressione logistica binaria. - L'utilizzo del
Funzione
ML.EVALUATE
per valutare il modello. - L'utilizzo del
Funzione
ML.PREDICT
per fare previsioni usando il modello.
Costi
Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:
- BigQuery
- BigQuery ML
Per ulteriori informazioni sui costi di BigQuery, consulta Prezzi di BigQuery.
Per ulteriori informazioni sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- BigQuery viene abilitato automaticamente nei nuovi progetti.
Per attivare BigQuery in un progetto preesistente, vai a
Attiva l'API BigQuery.
Crea un 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 Stati Uniti (più regioni negli Stati Uniti).
I set di dati pubblici vengono archiviati nell'
US
più regioni. Per semplicità, per archiviare il set di dati nella stessa posizione.Lascia invariate le restanti impostazioni predefinite e fai clic su Crea il set di dati.
Creare un modello di regressione logistica
Crea un modello di regressione logistica utilizzando l'esempio di Analytics per BigQuery.
SQL
Nella console Google Cloud, vai alla pagina BigQuery.
Esegui la seguente istruzione nell'editor query:
CREATE OR REPLACE MODEL `bqml_tutorial.sample_model` OPTIONS(model_type='logistic_reg') AS SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20160801' AND '20170630'
Il completamento della query richiede diversi minuti. Dopo la prima iterazione, completata, il tuo modello (
sample_model
) viene visualizzato nel pannello di navigazione. Poiché la query utilizza un'istruzioneCREATE MODEL
per creare un modello, non devi per vedere i risultati della query.
Dettagli query
L'istruzione CREATE MODEL
crea il modello, quindi lo addestra
utilizzando i dati recuperati dall'istruzione SELECT
della query.
La clausola OPTIONS(model_type='logistic_reg')
crea una classe logistica
di regressione lineare. R
il modello di regressione logistica suddivide i dati di input in due classi,
stima la probabilità che i dati siano in una delle classi. Che cosa sei
per tentare di rilevare, ad esempio se un'email è spam, è rappresentato da 1 e
gli altri valori sono rappresentati da 0. La probabilità che un determinato valore appartenga
alla classe che stai cercando di rilevare è indicata da un valore compreso tra 0 e 1.
Ad esempio, se un'email riceve una stima di probabilità pari a 0,9,
una probabilità del 90% che l'email sia spam.
L'istruzione SELECT
di questa query recupera le seguenti colonne utilizzate
dal modello per prevedere la probabilità che un cliente completi
transazione:
totals.transactions
: il numero totale di transazioni e-commerce durante la sessione. Se il numero di transazioni èNULL
, il valore nel La colonnalabel
è impostata su0
. In caso contrario, viene impostato su1
. Questi valori i risultati possibili. La creazione di un alias denominatolabel
è alternativa all'impostazione dell'opzioneinput_label_cols=
inCREATE MODEL
l'Informativa.device.operatingSystem
: il sistema operativo del dispositivo del visitatore.device.isMobile
: indica se il dispositivo del visitatore è un dispositivo mobile dispositivo.geoNetwork.country
: il paese da cui hanno avuto origine le sessioni, in base all'indirizzo IP.totals.pageviews
: il numero totale di visualizzazioni di pagina nella sessione.
La clausola FROM
: fa sì che la query addestra il modello utilizzando la proprietà
bigquery-public-data.google_analytics_sample.ga_sessions
tabelle di esempio.
Queste tabelle sono suddivise per data, pertanto le aggreghi utilizzando un carattere jolly
il nome della tabella: google_analytics_sample.ga_sessions_*
.
Clausola WHERE
- _TABLE_SUFFIX BETWEEN '20160801' AND '20170630'
: limita il numero di tabelle analizzate dalla query. L'intervallo di date
scansionati è l'1 agosto 2016 e il 30 giugno 2017.
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.
Visualizzare le statistiche di perdita del modello
Il machine learning consiste nel creare un modello che può utilizzare i dati per creare la previsione. Il modello è essenzialmente una funzione che prende input e applica agli input per produrre un output: una previsione.
Gli algoritmi di machine learning funzionano sulla base di diversi esempi in cui è già nota (come i dati storici degli acquisti degli utenti) e regolando iterativamente le varie ponderazioni del modello in modo che le previsioni corrispondano ai valori veri. Per farlo, riduce al minimo l'errore utilizza una metrica chiamata perdita.
L'aspettativa è che per ogni iterazione la perdita debba diminuire, idealmente a zero. Una perdita pari a zero indica che il modello è preciso al 100%.
Durante l'addestramento del modello, BigQuery ML suddivide automaticamente di inserire i dati set di addestramento e valutazione, per evitare l'overfitting del modello. Ciò è necessario per impedire all'algoritmo di addestramento di ai dati di addestramento da non poter generalizzare con nuovi esempi.
Utilizza la console Google Cloud per vedere come cambia la perdita del modello delle iterazioni di addestramento del modello:
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, espandi bqml_tutorial > Models e quindi fai clic su sample_model.
Fai clic sulla scheda Addestramento e osserva il grafico Perdita. La perdita la variazione della metrica della perdita rispetto alle iterazioni set di dati di addestramento. Se passi il cursore sul grafico, puoi vedere che sono presenti righe per Perdita di addestramento e Perdita di valutazione. Dato che una regressione logistica, il valore della perdita di addestramento viene calcolato perdita di log, utilizzando i dati di addestramento. La perdita di valutazione è la perdita log calcolata sulla di valutazione. Entrambi i tipi di perdita rappresentano i valori medi della perdita, su tutti gli esempi nei rispettivi set di dati per ogni iterazione.
Puoi anche vedere i risultati dell'addestramento del modello utilizzando
Funzione ML.TRAINING_INFO
.
Valuta il modello
Valutare le prestazioni del modello utilizzando la funzione ML.EVALUATE
. La
La funzione ML.EVALUATE
valuta i valori previsti generati dal modello
rispetto ai dati effettivi. Per calcolare la regressione logistica specifica
puoi utilizzare le metriche
ML.ROC_CURVE
Funzione SQL
o il
bigframes.ml.metrics.roc_curve
Funzione DataFrames di BigQuery.
In questo tutorial, utilizzerai un modello di classificazione binaria
rileva le transazioni. I valori nella colonna label
corrispondono alle due classi
generati dal modello: 0
(nessuna transazione) e 1
(transazione effettuata).
SQL
Nella console Google Cloud, vai alla pagina BigQuery.
Esegui la seguente istruzione nell'editor query:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.sample_model`, ( SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
I risultati dovrebbero essere simili ai seguenti:
+--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+ | precision | recall | accuracy | f1_score | log_loss | roc_auc | +--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+ | 0.468503937007874 | 0.11080074487895716 | 0.98534315834767638 | 0.17921686746987953 | 0.04624221101176898 | 0.98174125874125873 | +--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
Poiché hai eseguito una regressione logistica, i risultati includono quanto segue. colonne:
precision
: una metrica per i modelli di classificazione. La precisione identifica la frequenza con cui un modello era corretto nel prevedere la classe positiva.recall
: una metrica per i modelli di classificazione che risponde alle seguenti domanda: tra tutte le possibili etichette positive, quante ha fatto il modello identificare correttamente?accuracy
: l'accuratezza è la frazione delle previsioni che un modello di classificazione ha capito bene.f1_score
: una misura dell'accuratezza del modello. Il punteggio f1 è la media armonica di la precisione e il richiamo. Il valore migliore di un punteggio f1 è 1. Il valore peggiore è 0.log_loss
: la funzione di perdita usata in una regressione logistica. Questa è la misura di quanto sono distanti le previsioni del modello dalle etichette corrette.roc_auc
: l'area sotto il ROC della curva. Questa è la probabilità che un classificatore sia più sicuro che un un esempio positivo scelto in modo casuale è in realtà positivo di un esempio l'esempio di esclusione scelto è positivo. Per ulteriori informazioni, vedi Classificazione nel Machine Learning Crash Course.
Dettagli query
L'istruzione SELECT
iniziale recupera le colonne dal modello.
La clausola FROM
utilizza la funzione ML.EVALUATE
rispetto al modello.
L'istruzione SELECT
e la clausola FROM
nidificate sono le stesse
nella query CREATE MODEL
.
Clausola WHERE
- _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'
: limita il numero di tabelle analizzate dalla query. L'intervallo di date
scansionata è dal 1° luglio 2017 al 1° agosto 2017. Questi sono i dati che stai utilizzando per
valutano il rendimento predittivo del modello. È stato raccolto nel mese
subito dopo il periodo di tempo compreso dai dati di addestramento.
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.
Usa il modello per prevedere i risultati
Utilizza il modello per prevedere il numero di transazioni effettuate dai visitatori del sito web di ogni paese.
SQL
Nella console Google Cloud, vai alla pagina BigQuery.
Esegui la seguente istruzione nell'editor query:
SELECT country, SUM(predicted_label) as total_predicted_purchases FROM ML.PREDICT(MODEL `bqml_tutorial.sample_model`, ( SELECT IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801')) GROUP BY country ORDER BY total_predicted_purchases DESC LIMIT 10
I risultati dovrebbero essere simili ai seguenti:
+----------------+---------------------------+ | country | total_predicted_purchases | +----------------+---------------------------+ | United States | 220 | | Taiwan | 8 | | Canada | 7 | | India | 2 | | Turkey | 2 | | Japan | 2 | | Italy | 1 | | Brazil | 1 | | Singapore | 1 | | Australia | 1 | +----------------+---------------------------+
Dettagli query
L'istruzione SELECT
iniziale recupera la colonna country
e somma i
predicted_label
. La colonna predicted_label
viene generata dal metodo
Funzione ML.PREDICT
. Quando utilizzi la funzione ML.PREDICT
, l'output
il nome della colonna per il modello è predicted_<label_column_name>
. Per lineari
di regressione lineare, predicted_label
è il valore stimato di label
.
Per i modelli di regressione logistica, predicted_label
è l'etichetta migliore
descrive il valore dei dati di input specificato, 0
o 1
.
La funzione ML.PREDICT
viene utilizzata per prevedere i risultati mediante il modello.
L'istruzione SELECT
e la clausola FROM
nidificate sono le stesse
nella query CREATE MODEL
.
Clausola WHERE
- _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'
: limita il numero di tabelle analizzate dalla query. L'intervallo di date
scansionata è dal 1° luglio 2017 al 1° agosto 2017. Questi sono i dati per cui stai
per fare previsioni. È stato raccolto il mese successivo all'orario selezionato.
periodo compreso dai dati di addestramento.
Le clausole GROUP BY
e ORDER BY
raggruppano i risultati per paese e ordine
per la somma degli acquisti previsti in ordine decrescente.
La clausola LIMIT
viene utilizzata qui per visualizzare solo i primi 10 risultati.
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.
Prevedere gli acquisti per utente
Prevedere il numero di transazioni che verranno effettuate da ogni visitatore del sito web.
SQL
Questa query è identica a quella della sezione precedente, ad eccezione della query
GROUP BY
. Qui la clausola GROUP BY
: GROUP BY fullVisitorId
, viene utilizzato per raggruppare i risultati per ID visitatore.
Nella console Google Cloud, vai alla pagina BigQuery.
Esegui la seguente istruzione nell'editor query:
SELECT fullVisitorId, SUM(predicted_label) as total_predicted_purchases FROM ML.PREDICT(MODEL `bqml_tutorial.sample_model`, ( SELECT IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country, fullVisitorId FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801')) GROUP BY fullVisitorId ORDER BY total_predicted_purchases DESC LIMIT 10
I risultati dovrebbero essere simili ai seguenti:
+---------------------+---------------------------+ | fullVisitorId | total_predicted_purchases | +---------------------+---------------------------+ | 9417857471295131045 | 4 | | 112288330928895942 | 2 | | 2158257269735455737 | 2 | | 489038402765684003 | 2 | | 057693500927581077 | 2 | | 2969418676126258798 | 2 | | 5073919761051630191 | 2 | | 7420300501523012460 | 2 | | 0456807427403774085 | 2 | | 2105122376016897629 | 2 | +---------------------+---------------------------+
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.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi per le risorse utilizzate in questa pagina, segui questi passaggi.
Puoi eliminare il progetto che hai creato oppure mantenerlo ed eliminare del set di dati.
Eliminazione del 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:
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, seleziona il set di dati bqml_tutorial che hai creato.
Fai clic su > Elimina.
AzioniNella finestra di dialogo Elimina set di dati, digita per confermare il comando di eliminazione
delete
.Fai clic su Elimina.
Elimina il progetto
Per eliminare il progetto:
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Per saperne di più sul machine learning, consulta Machine Learning Crash Course.
- Per una panoramica di BigQuery ML, consulta Introduzione a BigQuery ML.
- Per saperne di più sulla console Google Cloud, consulta Utilizzo della console Google Cloud.