In questo tutorial, utilizzerai un modello di regressione lineare in BigQuery ML per prevedere il peso di un pinguino in base alle sue informazioni demografiche. Una regressione lineare è un tipo di modello che genera un valore continuo da una combinazione lineare di caratteristiche di input.
Questo tutorial utilizza il set di dati bigquery-public-data.ml_datasets.penguins
.
Obiettivi
In questo tutorial imparerai a:
- Creare un modello di regressione lineare.
- Valutare il modello.
- Effettuare previsioni utilizzando il modello.
Costi
Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:
- BigQuery
- BigQuery ML
Per ulteriori informazioni sui costi di BigQuery, consulta la pagina Prezzi di BigQuery.
Per ulteriori informazioni sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.
Prima di iniziare
-
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.
-
Attiva l'API BigQuery.
Autorizzazioni obbligatorie
Per creare il modello utilizzando BigQuery ML, devi disporre delle seguenti autorizzazioni IAM:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Per eseguire l'inferenza, devi disporre delle seguenti autorizzazioni:
bigquery.models.getData
sul modellobigquery.jobs.create
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 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 in
US
più regioni. Per semplicità, archivia il tuo set di dati nella stessa località.Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.
crea il modello
Per creare un modello di regressione lineare, utilizza
l'istruzione CREATE MODEL
e specifica LINEAR_REG
per il tipo di modello. La creazione del modello include
l'addestramento del modello.
Di seguito sono riportate informazioni utili in merito all'istruzione CREATE MODEL
:
- L'opzione
input_label_cols
specifica quale colonna dell'istruzioneSELECT
utilizzare come colonna dell'etichetta. In questo caso, la colonna dell'etichetta èbody_mass_g
. Per i modelli di regressione lineare, la colonna dell'etichetta deve avere valori reali, ovvero i valori della colonna devono essere numeri reali. L'istruzione
SELECT
di questa query utilizza le seguenti colonne della tabellabigquery-public-data.ml_datasets.penguins
per prevedere il peso di un pinguino:species
: la specie del pinguino.island
: l'isola su cui risiede il pinguino.culmen_length_mm
: la lunghezza in millimetri del culmen del pinguino.culmen_depth_mm
: la profondità in millimetri del culmen del pinguino.flipper_length_mm
: la lunghezza delle pinne del pinguino in millimetri.sex
: il sesso del pinguino.
La clausola
WHERE
nell'istruzioneSELECT
di questa query,WHERE body_mass_g IS NOT NULL
, esclude le righe in cui la colonnabody_mass_g
èNULL
.
Esegui la query che crea il tuo modello di regressione lineare:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query:
CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS (model_type='linear_reg', input_label_cols=['body_mass_g']) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL;
Per creare il modello
penguins_model
sono necessari circa 30 secondi. Per visualizzare il modello, vai al riquadro Explorer, espandi il set di datibqml_tutorial
, quindi espandi la cartella Modelli.
Ottieni le statistiche di addestramento
Per visualizzare i risultati dell'addestramento del modello, puoi utilizzare la funzione ML.TRAINING_INFO
oppure visualizzare le statistiche nella console Google Cloud. In questo tutorial utilizzerai la console Google Cloud.
Un algoritmo di machine learning crea un modello esaminando molti esempi e tentando di trovare un modello che minimizzi la perdita. Questo processo è chiamato minimizzazione empirica del rischio.
La perdita è la penalità per una previsione errata. È un numero che indica quanto fosse negativa la previsione del modello su un singolo esempio. Se la previsione del modello è perfetta, la perdita è zero; in caso contrario, la perdita è maggiore. L'obiettivo dell'addestramento di un modello è trovare un insieme di ponderazioni e bias che presentino, in media, una perdita lieve in tutti gli esempi.
Visualizza le statistiche di addestramento del modello generate quando hai eseguito la
query CREATE MODEL
:
Nel riquadro Explorer, espandi il set di dati
bqml_tutorial
e poi la cartella Modelli. Fai clic su penguins_model per aprire il riquadro delle informazioni del modello.Fai clic sulla scheda Addestramento e quindi su Tabella. I risultati dovrebbero essere simili ai seguenti:
La colonna Perdita di dati di addestramento rappresenta la metrica relativa alla perdita calcolata dopo che il modello è stato addestrato sul set di dati di addestramento. Poiché hai eseguito una regressione lineare, questa colonna mostra il valore dell'errore quadratico medio. Per questo addestramento viene utilizzata automaticamente una strategia di ottimizzazione normal_equation, pertanto è necessaria una sola iterazione per convergere al modello finale. Per scoprire di più sull'impostazione della strategia di ottimizzazione del modello, consulta
optimize_strategy
.
Valuta il modello
Dopo aver creato il modello, valuta le prestazioni del modello utilizzando la
funzione ML.EVALUATE
.
La funzione ML.EVALUATE
valuta i valori previsti generati dal modello in base ai dati effettivi.
Per l'input, la funzione ML.EVALUATE
prende il modello addestrato e un set di dati
che corrisponde allo schema dei dati utilizzati per addestrare il modello. In un ambiente di produzione, devi valutare il modello sulla base di dati diversi da quelli utilizzati per addestrare il modello.
Se esegui ML.EVALUATE
senza fornire dati di input, la funzione recupera
le metriche di valutazione calcolate durante l'addestramento. Queste metriche vengono calcolate utilizzando il set di dati di valutazione riservato automaticamente:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`);
Esegui la query ML.EVALUATE
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL));
I risultati dovrebbero essere simili ai seguenti:
Poiché hai eseguito una regressione lineare, i risultati includono le seguenti colonne:
mean_absolute_error
mean_squared_error
mean_squared_log_error
median_absolute_error
r2_score
explained_variance
Una metrica importante nei risultati della valutazione è il punteggio R2.
Il punteggio R2 è una misura statistica che determina se le previsioni della regressione lineare si avvicinano ai dati effettivi. Un valore 0
indica
che il modello non spiega nessuna delle variabilità dei dati di risposta attorno alla
media. Un valore 1
indica che il modello spiega tutte le variabilità dei
dati di risposta attorno alla media.
Puoi anche esaminare il riquadro delle informazioni del modello nella console Google Cloud per visualizzare le metriche di valutazione:
Usa il modello per prevedere i risultati
Ora che hai valutato il modello, il passaggio successivo consiste nell'utilizzarlo per prevedere
un risultato. Puoi eseguire la funzione ML.PREDICT
sul modello per prevedere la massa corporea in grammi di tutti i pinguini che vivono sulle Isole Biscoe.
Per l'input, la funzione ML.PREDICT
prende il modello addestrato e un set di dati corrispondente allo schema dei dati utilizzati per addestrare il modello, esclusa la colonna dell'etichetta.
Esegui la query ML.PREDICT
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query:
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'));
I risultati dovrebbero essere simili ai seguenti:
Spiegare i risultati della previsione
Per capire perché il modello genera questi risultati di previsione, puoi utilizzare la funzione ML.EXPLAIN_PREDICT
.
ML.EXPLAIN_PREDICT
è una versione estesa della funzione ML.PREDICT
.
ML.EXPLAIN_PREDICT
non solo restituisce i risultati della previsione, ma genera anche colonne aggiuntive per spiegare i risultati della previsione. In pratica, puoi eseguire
ML.EXPLAIN_PREDICT
anziché ML.PREDICT
. Per ulteriori informazioni, consulta
Panoramica di BigQuery ML Explainable AI.
Esegui la query ML.EXPLAIN_PREDICT
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query:
SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'), STRUCT(3 as top_k_features));
I risultati dovrebbero essere simili ai seguenti:
Per i modelli di regressione lineare, vengono utilizzati i valori di Shapley per generare valori di attribuzione
per ciascuna caratteristica nel modello. ML.EXPLAIN_PREDICT
restituisce
le prime tre attribuzioni di caratteristiche per riga della tabella penguins
perché
top_k_features
è stato impostato su 3
nella query. Queste attribuzioni vengono ordinate in base
al valore assoluto dell'attribuzione in ordine decrescente. In tutti gli esempi, la caratteristica sex
ha contribuito maggiormente alla previsione complessiva.
Spiegare il modello a livello globale
Per sapere quali caratteristiche sono in genere le più importanti per determinare il peso dei pinguini, puoi utilizzare la funzione ML.GLOBAL_EXPLAIN
.
Per utilizzare ML.GLOBAL_EXPLAIN
, devi riaddestrare il modello con
l'opzione ENABLE_GLOBAL_EXPLAIN
impostata su TRUE
.
Reimposta il modello e ottieni spiegazioni globali:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query per riaddestrare il modello:
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS ( model_type = 'linear_reg', input_label_cols = ['body_mass_g'], enable_global_explain = TRUE) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL;
Nell'editor query, esegui questa query per ottenere spiegazioni globali:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
I risultati dovrebbero essere simili ai seguenti:
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 preferisci riutilizzare il progetto, puoi eliminare il set di dati creato in questo tutorial:
Se necessario, apri la pagina BigQuery 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, la tabella e tutti i dati.
Nella finestra di dialogo Elimina set di dati, digita il nome del set di dati (
bqml_tutorial
) per confermare l'eliminazione, quindi 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 una panoramica di BigQuery ML, consulta Introduzione a BigQuery ML.
- Per informazioni sulla creazione di modelli, consulta la pagina della sintassi di
CREATE MODEL
.