BigQuery ML supporta l'apprendimento supervisionato tramite il tipo di modello regressione logistica. Puoi utilizzare il tipo di modello di regressione logistica binaria per prevedere se un valore rientra in una di due categorie oppure puoi utilizzare il tipo di modello di regressione multi-classe per prevedere se un valore rientra in una di più categorie. Questi problemi sono noti come problemi di classificazione perché tentano di classificare i dati in due o più categorie.
In questo tutorial utilizzerai un modello di regressione logistica binaria in BigQuery ML per prevedere la fascia di reddito degli intervistati nel set di dati di censimento degli Stati Uniti. Questo set di dati contiene informazioni demografiche e sul reddito dei residenti negli Stati Uniti dal 2000 al 2010. I dati includono lo stato del lavoro, la categoria lavorativa, il livello di istruzione e i dati sul reddito.
Obiettivi
Questo tutorial è composto dalle seguenti attività:- Crea un modello di regressione logistica.
- Valuta il modello di regressione logistica.
- Fare previsioni utilizzando il modello di regressione logistica.
Costi
Questo tutorial utilizza i componenti fatturabili di Cloud Platform, 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 la pagina 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.
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
- BigQuery viene abilitato automaticamente nei nuovi progetti.
Per attivare BigQuery in un progetto preesistente, vai a
Attiva l'API BigQuery.
Introduzione
Un problema comune del machine learning è la classificazione dei dati in uno di due tipi, noti come etichette. Ad esempio, un rivenditore potrebbe voler prevedere se un determinato cliente acquisterà un nuovo prodotto in base ad altre informazioni relative a tale cliente. In tal caso, le due etichette potrebbero essere "comprerà", e "non guadagnerà". Puoi creare il tuo set di dati in modo che una colonna rappresenti l'etichetta. I dati che puoi utilizzare per addestrare un modello di regressione logistica di questo tipo includono la località del cliente, i suoi acquisti precedenti, le preferenze segnalate del cliente e così via.
In questo tutorial, utilizzerai BigQuery ML per creare un modello di regressione logistica binaria che prevede se un reddito di un censimento degli Stati Uniti rientra in uno di due intervalli in base agli attributi demografici degli intervistati.
La creazione del modello di regressione logistica prevede i seguenti passaggi.
- Passaggio 1: crea un set di dati per archiviare il modello.
- Il primo passaggio consiste nel creare un set di dati BigQuery per archiviare il tuo modello.
- Passaggio 2: esamina i dati.
- In questo passaggio, esamina il set di dati e identifica le colonne da utilizzare come dati di addestramento per il tuo modello di regressione logistica.
- Passaggio 3: seleziona i dati di addestramento.
- Il passaggio successivo consiste nel preparare i dati che utilizzi per addestrare il tuo modello di regressione binaria binaria eseguendo una query sulla tabella
census_adult_income
. Questo passaggio identifica le funzionalità pertinenti e le archivia in una vista per mostrarle in un secondo momento da utilizzare come dati di input.
- Passaggio 4: crea un modello di regressione logistica.
- In questo passaggio puoi utilizzare l'istruzione
CREATE MODEL
per creare il tuo modello di regressione logistica.
- Passaggio 5: utilizza la funzione
ML.EVALUATE
per valutare il modello. - Utilizza quindi la funzione
ML.EVALUATE
per fornire statistiche sul rendimento del modello.
- Passaggio 5: utilizza la funzione
- Passaggio 6: utilizza la funzione
ML.PREDICT
per prevedere il reddito di un partecipante. - Infine, utilizzi la funzione
ML.PREDICT
per prevedere la fascia di reddito per un determinato insieme di partecipanti al censimento.
- Passaggio 6: utilizza la funzione
Passaggio 1: crea il set di dati
Il primo passaggio consiste nel creare un set di dati BigQuery per archiviare il tuo modello. Per creare il set di dati:
In Cloud Console, vai alla pagina BigQuery.
Nella sezione Risorse del pannello di navigazione, fai clic sul nome del progetto.
Sul lato destro, fai clic su Crea set di dati nel riquadro dei dettagli.
Nella pagina Crea set di dati, per ID set di dati, inserisci
census
.Lascia invariate tutte le altre impostazioni predefinite e fai clic su Crea set di dati.
Passaggio 2: esamina i dati
Il passaggio successivo consiste nell'analizzare il set di dati e identificare le colonne da utilizzare come dati di addestramento per il tuo modello di regressione logistica. Puoi utilizzare una query SQL standard per restituire righe dal set di dati.
La seguente query restituisce 100 righe dal set di dati di Censimento degli Stati Uniti:
SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket FROM `bigquery-public-data.ml_datasets.census_adult_income` LIMIT 100;
Esegui la query
Per eseguire la query che restituisce le righe del set di dati:
In Cloud Console, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query SQL standard nell'area di testo Editor query:
SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket FROM `bigquery-public-data.ml_datasets.census_adult_income` LIMIT 100;
Fai clic su Esegui.
Una volta completata la query, fai clic sulla scheda Risultati sotto l'area di testo della query. Il risultato dovrebbe essere simile all'esempio seguente:
I risultati della query mostrano che la colonna
income_bracket
nella tabellacensus_adult_income
ha solo uno dei due valori:<=50K
o>50K
. Mostra inoltre che le colonneeducation
eeducation_num
nella tabellacensus_adult_income
esprimono gli stessi dati in formati diversi. La colonnafunctional_weight
indica il numero di persone che secondo le organizzazioni censite rappresenta una determinata riga; i valori di questa colonna non sono correlati al valore diincome_bracket
per una determinata riga.
Passaggio 3: seleziona i dati di addestramento
In seguito, devi selezionare i dati utilizzati per addestrare il tuo modello di regressione logistica. In questo tutorial, prevedi il reddito degli intervistati censiti in base ai seguenti attributi:
- Età
- Tipo di lavoro svolto
- Stato civile
- Livello di istruzione
- Professione
- Ore lavorate a settimana
La query seguente crea una vista che compila i tuoi dati di addestramento. che troverai nell'istruzione CREATE MODEL
più avanti nel tutorial.
CREATE OR REPLACE VIEW `census.input_view` AS SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, CASE WHEN MOD(functional_weight, 10) < 8 THEN 'training' WHEN MOD(functional_weight, 10) = 8 THEN 'evaluation' WHEN MOD(functional_weight, 10) = 9 THEN 'prediction' END AS dataframe FROM `bigquery-public-data.ml_datasets.census_adult_income`
Dettagli query
Questa query estrae i dati degli intervistati censiti, tra cui education_num
, che rappresenta il livello di istruzione degli intervistati e workclass
, che rappresenta il tipo di lavoro svolto. Questa query esclude diverse categorie che duplicano dati: ad esempio, le colonne education
e education_num
nella tabella census_adult_income
esprimono gli stessi dati in formati diversi, quindi questa query esclude la colonna education
. La colonna dataframe
utilizza la colonna functional_weight
esclusa per etichettare l'80% dell'origine dati per l'addestramento e riserva i dati rimanenti per la valutazione e la previsione. La query crea una vista contenente queste colonne, in modo da poterla utilizzare in seguito per eseguire attività di addestramento e previsione.
Esegui la query
Per eseguire la query che compila i dati di addestramento per il modello:
In Cloud Console, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query SQL standard nell'area di testo Editor query:
CREATE OR REPLACE VIEW `census.input_view` AS SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, CASE WHEN MOD(functional_weight, 10) < 8 THEN 'training' WHEN MOD(functional_weight, 10) = 8 THEN 'evaluation' WHEN MOD(functional_weight, 10) = 9 THEN 'prediction' END AS dataframe FROM `bigquery-public-data.ml_datasets.census_adult_income`
Fai clic su Esegui.
Nella sezione Risorse del pannello di navigazione, fai clic sul nome del progetto. Sotto il riquadro dovrebbe essere visualizzata la vista.
Fai clic sulla visualizzazione. Lo schema della vista viene visualizzato nella scheda Schema sotto l'Editor query.
Passaggio 4: crea un modello di regressione logistica
Ora che hai esaminato i tuoi dati di addestramento, il passaggio successivo consiste nel creare un modello di regressione logistica utilizzando i dati.
Puoi creare e addestrare un modello di regressione logistica utilizzando l'istruzione CREATE MODEL
con l'opzione 'LOGISTIC_REG'
. La query seguente utilizza un'istruzione CREATE MODEL
per addestrare un nuovo modello di regressione logistica binaria nella vista dalla query precedente.
CREATE OR REPLACE MODEL `census.census_model` OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, input_label_cols=['income_bracket'] ) AS SELECT * EXCEPT(dataframe) FROM `census.input_view` WHERE dataframe = 'training'
Dettagli query
L'istruzione CREATE MODEL
addestra un modello utilizzando i dati di addestramento nell'istruzione SELECT
.
La clausola OPTIONS
specifica il tipo di modello e le opzioni di addestramento. L'opzione
LOGISTIC_REG
specifica un tipo di modello di regressione logistica. Non è necessario specificare un modello di regressione logistica binaria rispetto a un modello di regressione logistica multiclasse: BigQuery ML può determinare quale addestrare in base al numero di valori univoci nella colonna dell'etichetta.
L'opzione input_label_cols
specifica la colonna nell'istruzione SELECT
da utilizzare come colonna dell'etichetta. In questo caso, la colonna dell'etichetta è income_bracket
, pertanto il modello apprenderà quale dei due valori di income_bracket
è più probabilmente basato sugli altri valori presenti in ogni riga.
L'opzione 'auto_class_weights=TRUE' bilancia le etichette della classe nei dati di addestramento. Per impostazione predefinita, i dati di addestramento non sono ponderati. Se le etichette nei dati di addestramento non sono bilanciate, il modello potrebbe imparare a prevedere in modo più rigoroso la classe di etichette più apprezzata. In questo caso, la maggior parte degli intervistati nel set di dati si trova nella fascia di reddito più bassa. Questo potrebbe portare a un modello che prevede una fascia di reddito troppo bassa. Le ponderazioni delle classi bilanciano le etichette della classe calcolando le ponderazioni di ogni classe in proporzione inversa rispetto alla frequenza di tale classe.
L'istruzione SELECT
esegue una query sulla visualizzazione del Passaggio 2. Questa visualizzazione contiene solo le colonne che contengono i dati sulle caratteristiche per l'addestramento del modello. La clausola WHERE
filtra le righe in input_view
in modo che solo le righe appartenenti al
frame dati di addestramento siano incluse nei dati di addestramento.
Esegui la query CREATE MODEL
Per eseguire la query che crea il tuo modello di regressione logistica, completa i seguenti passaggi:
In Cloud Console, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query SQL standard nell'area di testo Editor query:
CREATE OR REPLACE MODEL `census.census_model` OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, data_split_method='NO_SPLIT', input_label_cols=['income_bracket'], max_iterations=15) AS SELECT * EXCEPT(dataframe) FROM `census.input_view` WHERE dataframe = 'training'
Fai clic su Esegui.
Nel pannello di navigazione, nella sezione Risorse, espandi [PROJECT_ID] > census e poi fai clic su census_model.
Fai clic sulla scheda Schema. Lo schema del modello elenca gli attributi che BigQuery ML ha utilizzato per eseguire la regressione logistica. Lo schema dovrebbe avere il seguente aspetto:
Passaggio 5: utilizza la funzione ML.EVALUATE
per valutare il modello
Dopo aver creato il modello, valutane le prestazioni utilizzando la funzione ML.EVALUATE
. La funzione ML.EVALUATE
valuta i valori previsti rispetto ai dati effettivi.
La query per valutare il modello è la seguente:
SELECT * FROM ML.EVALUATE (MODEL `census.census_model`, ( SELECT * FROM `census.input_view` WHERE dataframe = 'evaluation' ) )
Dettagli query
La funzione ML.EVALUATE
prende il modello addestrato nel
Passaggio 1 e restituisce i dati di valutazione restituiti da una
subquery SELECT
. La funzione restituisce una singola riga di statistiche sul modello. Questa query utilizza dati di input_view
come dati di valutazione. La clausola WHERE
filtra i dati di input in modo che la sottoquery contenga solo le righe nel dataframe evaluation
.
Esegui la query ML.EVALUATE
Per eseguire la query ML.EVALUATE
che valuta il modello, segui questi passaggi:
In Cloud Console, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query SQL standard nell'area di testo Editor query:
SELECT * FROM ML.EVALUATE (MODEL `census.census_model`, ( SELECT * FROM `census.input_view` WHERE dataframe = 'evaluation' ) )
(Facoltativo) Per impostare la località di elaborazione, fai clic su Altro &Impostazioni impostazioni di query. In Località di elaborazione, scegli
US
. Questo passaggio è facoltativo perché la località di elaborazione viene rilevata automaticamente in base alla posizione del set di dati.Fai clic su Esegui.
Una volta completata la query, fai clic sulla scheda Risultati sotto l'area di testo della query. Il risultato dovrebbe essere simile all'esempio seguente:
Poiché hai eseguito una regressione logistica, i risultati includono le seguenti colonne:
precision
recall
accuracy
f1_score
log_loss
roc_auc
Puoi anche chiamare ML.EVALUATE
senza fornire dati di input. ML.EVALUATE
recupera le metriche di valutazione calcolate durante l'addestramento, che utilizza
il set di dati di valutazione prenotato automaticamente. In questa query CREATE MODEL
con l'opzione NO_SPLIT
specificata per l'opzione di addestramento data_split_method
, l'intero set di dati di input viene utilizzato sia per l'addestramento sia per la valutazione.
Le chiamate a ML.EVALUATE
senza dati di input recuperano le metriche di valutazione in un set di dati di addestramento. Questa valutazione è meno efficace di una esecuzione su un set di dati che è stato mantenuto separato dai dati di addestramento del modello.
Puoi anche utilizzare Cloud Console per visualizzare le metriche di valutazione calcolate durante l'addestramento. Il risultato dovrebbe essere simile all'esempio seguente:
Passaggio 6: utilizza la funzione ML.PREDICT
per prevedere la fascia di reddito
Per identificare la fascia di reddito a cui appartiene un determinato intervistati, utilizza la funzione ML.PREDICT
. La seguente query prevede la fascia di reddito di ogni intervistati
nel frame di dati prediction
.
SELECT * FROM ML.PREDICT (MODEL `census.census_model`, ( SELECT * FROM `census.input_view` WHERE dataframe = 'prediction' ) )
Dettagli query
La funzione ML.PREDICT
prevede i risultati utilizzando il tuo modello e i dati di input_view
,
filtrati per includere solo le righe nel dataframe 'previsione'. L'istruzione SELECT
più in alto recupera l'output della funzione ML.PREDICT
.
Esegui la query ML.PREDICT
Per eseguire la query ML.PREDICT
, segui questi passaggi:
In Cloud Console, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query SQL standard nell'area di testo Editor query.
SELECT * FROM ML.PREDICT (MODEL `census.census_model`, ( SELECT * FROM `census.input_view` WHERE dataframe = 'prediction' ) )
Fai clic su Esegui.
Una volta completata la query, fai clic sulla scheda Risultati sotto l'area di testo della query. Il risultato dovrebbe essere simile all'esempio seguente:
predicted_income_bracket
è il valore previsto diincome_bracket
.
Passaggio 7: spiega i risultati delle previsioni con metodi AI esplicativi
Per capire perché il tuo modello sta generando questi risultati della previsione, puoi utilizzare la funzione ML.EXPLAIN_PREDICT
.
ML.EXPLAIN_PREDICT
è una versione estesa di ML.PREDICT
. ML.EXPLAIN_PREDICT
non solo genera risultati di previsione, ma restituisce anche colonne aggiuntive per spiegare i risultati della previsione. Quindi, in pratica, dovrai eseguire ML.EXPLAIN_PREDICT
solo saltando l'esecuzione di ML.PREDICT
. Per una spiegazione più approfondita dei valori di Shapley e delle offerte di AI spiegabili in BigQuery ML, consulta la panoramica di AI ML Explainable AI.
La query utilizzata per generare spiegazioni è la seguente:
#standardSQL SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `census.census_model`, ( SELECT * FROM `census.input_view` WHERE dataframe = 'evaluation'), STRUCT(3 as top_k_features))
Esegui la query ML.EXPLAIN_PREDICT
Per eseguire la query ML.EXPLAIN_PREDICT
che spiega il modello:
In Cloud Console, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query SQL standard nell'editor di query.
#standardSQL SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `census.census_model`, ( SELECT * FROM `census.input_view` WHERE dataframe = 'evaluation'), STRUCT(3 as top_k_features))
Fai clic su Esegui.
Dopo aver completato la query, fai clic sulla scheda Risultati sotto l'editor delle query. Il risultato dovrebbe essere simile all'esempio seguente:
Per i modelli di regressione logistica, i valori di Shapley vengono utilizzati per generare valori di attribuzione delle caratteristiche per ogni caratteristica nel modello. ML.EXPLAIN_PREDICT
restituisce le tre principali attribuzioni delle caratteristiche per riga della tabella fornita, perché top_k_features
è stato impostato su 3 nella query. Queste attribuzioni vengono ordinate in base al valore assoluto dell'attribuzione in ordine decrescente. Nella riga 1 di questo esempio, la funzionalità hours_per_week
ha contribuito maggiormente alla previsione complessiva, ma per la riga 2 di questo esempio occupation
ha contribuito maggiormente alla previsione complessiva. Per informazioni dettagliate sulle colonne di output della query ML.EXPLAIN_PREDICT
, consulta la documentazione sulla sintassi ML.EXPLAIN_PREDICT
(Facoltativo) Passaggio 8: spiega il tuo modello a livello globale
Per sapere quali sono le funzionalità più importanti per determinare la fascia di reddito in generale, puoi utilizzare la funzione ML.GLOBAL_EXPLAIN
. Per utilizzare ML.GLOBAL_EXPLAIN
, il modello deve essere addestrato nuovamente con l'opzione ENABLE_GLOBAL_EXPLAIN=TRUE
. Esegui di nuovo la query di addestramento con questa opzione utilizzando la seguente query:
CREATE OR REPLACE MODELcensus.census_model
OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, enable_global_explain=TRUE, input_label_cols=['income_bracket'] ) AS SELECT * EXCEPT(dataframe) FROMcensus.input_view
WHERE dataframe = 'training'
Accedi alle spiegazioni globali tramite ML.GLOBAL_EXPLAIN
La query utilizzata per generare spiegazioni globali è la seguente:
#standardSQL SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `census.census_model`)
Esegui la query ML.GLOBAL_EXPLAIN
Per eseguire la query ML.GLOBAL_EXPLAIN
:
In Cloud Console, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query SQL standard nell'area di testo Editor query.
#standardSQL SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `census.census_model`)
(Facoltativo) Per impostare la località di elaborazione, fai clic su Altro &Impostazioni impostazioni di query. In Località di elaborazione, scegli
US
. Questo passaggio è facoltativo perché la località di elaborazione viene rilevata automaticamente in base alla posizione del set di dati.Fai clic su Esegui.
Una volta completata la query, fai clic sulla scheda Risultati sotto l'area di testo della query. Il risultato dovrebbe essere simile all'esempio seguente:
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.
Eliminazione del set di dati
L'eliminazione del progetto comporta la rimozione di tutti i set di dati e di tutte le tabelle al suo interno. Se preferisci riutilizzare il progetto, puoi eliminare il set di dati che hai creato in questo tutorial:
Se necessario, apri la pagina BigQuery in Cloud Console.
Nella navigazione, fai clic sul set di dati del censimento 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, conferma il comando Elimina digitando il nome del tuo set di dati (
census
) e fai clic su Elimina.
Eliminazione del progetto
Per eliminare il progetto:
- In Cloud Console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto da 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 la pagina Introduzione a BigQuery ML.
- Per informazioni sulla creazione dei modelli, consulta la pagina della sintassi di
CREATE MODEL
.