In questo tutorial, utilizzerai un file binario modello di regressione logistica in BigQuery ML per prevedere la fascia di reddito degli individui in base ai loro Dati demografici. Un modello di regressione logistica binaria prevede se una rientra in una delle due categorie, in questo caso se il reddito annuo sia superiore o inferiore a 50.000 $.
Questo tutorial utilizza
bigquery-public-data.ml_datasets.census_adult_income
del set di dati. Questo set di dati contiene i dati demografici e sul reddito degli Stati Uniti
residenti dal 2000 al 2010.
Obiettivi
In questo tutorial imparerai a:- Creare un modello di regressione logistica.
- Valutare il modello.
- Effettuare previsioni utilizzando il modello.
- Spiegare i risultati prodotti dal modello.
Costi
Questo tutorial utilizza i 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
-
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, è necessario quanto segue 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
Introduzione
Un'attività comune nel machine learning è classificare i dati in uno di due tipi:
note come etichette. Ad esempio, un rivenditore potrebbe voler prevedere se un determinato
il cliente acquisterà un nuovo prodotto in base ad altre informazioni a riguardo
al cliente. In questo caso, le due etichette potrebbero essere will buy
e won't buy
. La
può creare un set di dati in modo che una colonna rappresenti entrambe le etichette,
e contiene anche informazioni sul cliente quali la sua posizione, la sua
acquisti precedenti e le preferenze registrate. Il rivenditore può quindi utilizzare
modello di regressione logistica binaria che utilizza queste informazioni sul cliente per prevedere
quale etichetta rappresenta meglio
ogni cliente.
In questo tutorial, creerai un modello di regressione logistica binaria che prevede se il reddito di chi risponde al censimento degli Stati Uniti rientra in uno dei due intervalli in base al gli attributi demografici di chi risponde.
Crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello:
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
census
.In Tipo di località, seleziona Più regioni, quindi seleziona Stati Uniti (più regioni negli Stati Uniti).
I set di dati pubblici vengono archiviati
US
più regioni. Per semplicità, archivia il tuo set di dati nella stessa posizione.Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.
Esamina i dati
Esaminare il set di dati e identificare le colonne da utilizzare
di addestramento per il modello di regressione logistica. Seleziona 100 righe dall'elenco
Tabella census_adult_income
:
SQL
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query GoogleSQL:
SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, functional_weight FROM `bigquery-public-data.ml_datasets.census_adult_income` LIMIT 100;
I risultati sono 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.
I risultati della query mostrano che la colonna income_bracket
nella
La tabella census_adult_income
ha solo uno dei due valori: <=50K
o >50K
. La
La colonna functional_weight
indica il numero di persone che sono oggetto del censimento
che una determinata riga rappresenti. I valori di questa colonna
non sono correlati al valore income_bracket
per una determinata riga.
Prepara i dati di esempio
In questo tutorial, prevedi il reddito degli intervistati a un censimento in base ai seguenti attributi:
- Età
- Tipo di lavoro svolto
- Stato civile
- Livello di istruzione
- Professione
- Ore lavorate a settimana
Per creare questa previsione, dovrai estrarre informazioni dai dati sugli intervistati del censimento in
Tabella census_adult_income
. Seleziona le colonne delle caratteristiche, tra cui:
education_num
, che rappresenta il livello di istruzione della persona intervistataworkclass
, che rappresenta il tipo di lavoro svolto dall'intervistato
Escludi le colonne che contengono dati duplicati. Ad esempio:
education
, perchéeducation
eeducation_num
esprimono gli stessi dati in formati diversi
Separa i dati in set di addestramento, valutazione e previsione creando un
nuova colonna dataframe
derivata dalla colonna functional_weight
.
Etichetta l'80% dell'origine dati per l'addestramento del modello e prenota il resto
20% dei dati per la valutazione e la previsione.
SQL
Per preparare i dati di esempio, crea una vista per
contengono i dati di addestramento. Questa visualizzazione è utilizzata dall'istruzione CREATE MODEL
più avanti in questo tutorial.
Esegui la query che prepara i dati di esempio:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query:
CREATE OR REPLACE VIEW `census.input_data` 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`
Nel riquadro Explorer, espandi il set di dati
census
e individua il percorsoinput_data
visualizzazione.Fai clic sul nome della vista per aprire il riquadro delle informazioni. Lo schema di visualizzazione compare nella scheda Schema.
DataFrame BigQuery
Crea un DataFrame
denominato input_data
. Userai input_data
in seguito in
questo tutorial in cui imparerai ad addestrare il modello, valutarlo e fare previsioni.
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.
Creare un modello di regressione logistica
Crea un modello di regressione logistica con i dati di addestramento che hai etichettato nel sezione precedente.
SQL
Utilizza la
Dichiarazione CREATE MODEL
e specifica LOGISTIC_REG
per il tipo di modello
Di seguito sono riportate informazioni utili in merito all'istruzione CREATE MODEL
:
La
input_label_cols
specifica quale colonna dell'istruzioneSELECT
da utilizzare come colonna dell'etichetta. In questo caso, la colonna dell'etichetta èincome_bracket
, quindi la il modello apprende quale dei due valori diincome_bracket
è più probabile per per una determinata riga in base agli altri valori presenti al suo interno.Non è necessario specificare se un modello di regressione logistica è binario o multiclasse. BigQuery può determinare quale tipo di modello addestrare per il numero di valori univoci nella colonna dell'etichetta.
La
auto_class_weights
è impostata suTRUE
per bilanciare le etichette della classe nel dati di addestramento. Per impostazione predefinita, i dati di addestramento non sono ponderati. Se le etichette nei dati di addestramento sono sbilanciate, il modello può imparare a prevedere in modo più massiccio la classe di etichette più popolare. Nella in questo caso, la maggior parte degli intervistati nel set di dati ha un reddito inferiore parentesi quadra aperta. Questo può portare a un modello che prevede anche la fascia di reddito più bassa molto. I pesi di una classe bilanciano le etichette della classe calcolando le ponderazioni per ogni classe in modo inversamente proporzionale alla frequenza di quella classe.L'istruzione
SELECT
esegue una query nella vistainput_data
che contiene i dati di addestramento.WHERE
la clausola filtra le righe ininput_data
in modo che solo quelle etichettate come e i dati di addestramento sono usati per addestrare il modello.
Esegui la query che crea il tuo modello di regressione logistica:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa 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_data` WHERE dataframe = 'training'
Nel riquadro Explorer, espandi il set di dati
census
e poi la sezione Modelli .Fai clic sul modello census_model per aprire il riquadro delle informazioni.
Fai clic sulla scheda Schema. Lo schema del modello elenca gli attributi usato da BigQuery ML per eseguire la regressione logistica. Lo schema dovrebbe avere il seguente aspetto:
DataFrame BigQuery
Utilizza la
fit
per addestrare il modello
to_gbq
per salvarlo nel set di dati.
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.
Valuta le prestazioni del modello
Dopo aver creato il modello, valuta le prestazioni del modello rispetto alle effettive e i dati di Google Cloud.
SQL
La
Funzione ML.EVALUATE
valuta i valori previsti generati dal modello rispetto
i dati effettivi.
Per l'input, la funzione ML.EVALUATE
prende il modello addestrato e le righe
dalla vista input_data
che hanno evaluation
nella colonna dataframe
valore. La funzione restituisce una singola riga di statistiche sul modello.
Esegui la query ML.EVALUATE
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query:
SELECT * FROM ML.EVALUATE (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation' ) )
I risultati sono simili ai seguenti:
DataFrame BigQuery
Utilizza la
score
per valutare il modello rispetto ai dati effettivi.
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.
Puoi anche esaminare il riquadro delle informazioni del modello nella console Google Cloud per visualizzare le metriche di valutazione calcolate durante l'addestramento:
Prevedere la fascia di reddito
Individuare la fascia di reddito a cui probabilmente appartiene un particolare intervistato utilizzando il modello.
SQL
Utilizza la
Funzione ML.PREDICT
per fare previsioni sulla probabile fascia di reddito. Inserisci il modello addestrato e
le righe della vista input_data
che hanno prediction
come dataframe
.
Esegui la query ML.PREDICT
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui questa query:
SELECT * FROM ML.PREDICT (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'prediction' ) )
I risultati sono simili ai seguenti:
predicted_income_bracket
è il valore previsto di income_bracket
.
DataFrame BigQuery
Utilizza la
predict
per fare previsioni sulla fascia di reddito probabile.
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.
Spiegare i risultati della previsione
Per capire perché il modello sta generando questi risultati di previsione, puoi utilizzare
il
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 anche
colonne aggiuntive per spiegare i risultati della previsione. In pratica, puoi eseguire
ML.EXPLAIN_PREDICT
anziché ML.PREDICT
. Per ulteriori informazioni, vedi
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 `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation'), STRUCT(3 as top_k_features))
I risultati sono simili ai seguenti:
Per i modelli di regressione logistica, vengono utilizzati i valori di Shapley per generare caratteristiche
i valori di attribuzione per ogni caratteristica del modello. ML.EXPLAIN_PREDICT
output
le prime tre attribuzioni delle caratteristiche per riga della vista input_data
perché
top_k_features
è stato impostato su 3
nella query. Queste attribuzioni sono ordinate per
il valore assoluto dell'attribuzione in ordine decrescente. Nella riga 1 di questo
Ad esempio, la caratteristica hours_per_week
ha contribuito maggiormente alla creazione generale
ma nella riga 2, occupation
ha contribuito maggiormente alla
la previsione complessiva.
Spiegare il modello a livello globale
Per sapere quali caratteristiche sono in genere le più importanti per determinare
fascia di reddito, puoi utilizzare
Funzione ML.GLOBAL_EXPLAIN
.
Per utilizzare ML.GLOBAL_EXPLAIN
, devi riaddestrare il modello con
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:
CREATE OR REPLACE MODEL `census.census_model` OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, enable_global_explain=TRUE, input_label_cols=['income_bracket'] ) AS SELECT * EXCEPT(dataframe) FROM `census.input_data` WHERE dataframe = 'training'
Nell'editor query, esegui questa query per ottenere spiegazioni globali:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `census.census_model`)
I risultati sono 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.
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.
Nella barra di navigazione, fai clic sul set di dati census 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 (
census
), 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
CREATE MODEL
pagina sulla sintassi.