Usare BigQuery ML per prevedere il peso dei pinguini


In questo tutorial, utilizzerai un modello di regressione lineare in BigQuery ML per prevedere il peso di un pinguino in base alle informazioni demografiche del pinguino. Una regressione lineare è un tipo di modello di regressione che genera un valore continuo da una combinazione lineare di caratteristiche di input.

Questo tutorial utilizza il set di dati di bigquery-public-data.ml_datasets.penguins.

Obiettivi

In questo tutorial imparerai a svolgere le seguenti attività:

  • Creare un modello di regressione lineare.
  • Valutare il modello.
  • Eseguire 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

  1. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  2. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  3. Attiva l'API BigQuery.

    Abilita l'API

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 modello
  • bigquery.jobs.create

Crea un set di dati

Crea un set di dati BigQuery per archiviare il tuo modello ML:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai alla pagina di BigQuery

  2. Nel riquadro Explorer, fai clic sul nome del progetto.

  3. Fai clic su Visualizza azioni > Crea set di dati.

    Crea set di dati.

  4. 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à, memorizza il set di dati nella stessa posizione.

    • Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.

      Pagina 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 alcune informazioni utili da conoscere sull'istruzione CREATE MODEL:

  • L'opzione input_label_cols specifica quale colonna dell'istruzione SELECT 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 nella tabella bigquery-public-data.ml_datasets.penguins per prevedere il peso di un pinguino:

    • species: la specie di pinguino.
    • island: l'isola in cui risiede il pinguino.
    • culmen_length_mm: la lunghezza del culmen del pinguino in millimetri.
    • culmen_depth_mm: la profondità del culmen del pinguino in millimetri.
    • flipper_length_mm: la lunghezza delle pinne del pinguino in millimetri.
    • sex: il genere del pinguino.
  • La clausola WHERE nell'istruzione SELECT di questa query, WHERE body_mass_g IS NOT NULL, esclude le righe in cui la colonna body_mass_g è NULL.

Esegui la query che crea il modello di regressione lineare:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, esegui la query seguente:

    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;
    
  3. La creazione del modello penguins_model richiede circa 30 secondi. Per visualizzare il modello, vai al riquadro Explorer, espandi il set di dati bqml_tutorial, quindi espandi la cartella Modelli.

Ricevere statistiche di addestramento

Per visualizzare i risultati dell'addestramento del modello, puoi utilizzare la funzione ML.TRAINING_INFO o 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 cercando di trovare un modello che minimizzi la perdita. Questo processo è chiamato minimizzazione empirica del rischio.

La perdita è la sanzione per una cattiva previsione. È un numero che indica quanto pessima la previsione del modello fosse su un singolo esempio. Se la previsione del modello è perfetta, la perdita è pari a zero, altrimenti è maggiore. L'obiettivo dell'addestramento di un modello è trovare un insieme di ponderazioni e bias con perdita, in media, bassa per tutti gli esempi.

Visualizza le statistiche di addestramento del modello generate quando hai eseguito la query CREATE MODEL:

  1. Nel riquadro Explorer, espandi il set di dati bqml_tutorial, quindi la cartella Modelli. Fai clic su penguins_model per aprire il riquadro delle informazioni del modello.

  2. Fai clic sulla scheda Addestramento, quindi su Tabella. I risultati dovrebbero essere simili ai seguenti:

    Output ML.TRAINING_INFO

    La colonna Perdita di dati di addestramento rappresenta la metrica di perdita calcolata dopo l'addestramento del modello 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 di normal_equation, pertanto è necessaria una sola iterazione per convergere al modello finale. Per saperne di più sull'impostazione della strategia di ottimizzazione del modello, consulta optimize_strategy.

Valuta il modello

Dopo aver creato il modello, valuta le sue prestazioni 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 utilizza il modello addestrato e un set di dati che corrisponde allo schema dei dati utilizzati per addestrare il modello. In un ambiente di produzione, dovresti 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:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, esegui la query seguente:

    SELECT
      *
    FROM
      ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`,
        (
        SELECT
          *
        FROM
          `bigquery-public-data.ml_datasets.penguins`
        WHERE
          body_mass_g IS NOT NULL));
    
  3. I risultati dovrebbero essere simili ai seguenti:

    Output ML.EVALUATE

    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 di regressione lineare corrispondono ai dati effettivi. Un valore 0 indica che il modello non spiega nessuna della variabilità dei dati di risposta intorno alla media. Un valore 1 indica che il modello spiega tutta la variabilità dei dati di risposta intorno alla media.

Puoi anche consultare il riquadro delle informazioni sul modello nella console Google Cloud per visualizzare le metriche di valutazione:

Output ML.EVALUATE

Usare il modello per prevedere i risultati

Ora che hai valutato il modello, il passaggio successivo è 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 risiedono nelle Isole Biscoe.

Per l'input, la funzione ML.PREDICT prende il modello addestrato e un set di dati che corrisponde allo schema dei dati utilizzati per addestrare il modello, escludendo la colonna Etichetta.

Esegui la query ML.PREDICT:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, esegui la query seguente:

    SELECT
      *
    FROM
      ML.PREDICT(MODEL `bqml_tutorial.penguins_model`,
        (
        SELECT
          *
        FROM
          `bigquery-public-data.ml_datasets.penguins`
        WHERE island = 'Biscoe'));
    
  3. I risultati dovrebbero essere simili ai seguenti:

    Output ML.PREDICT

Spiegare i risultati della previsione

Per capire perché il modello genera questi risultati della 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. Nella pratica, puoi eseguire ML.EXPLAIN_PREDICT anziché ML.PREDICT. Per ulteriori informazioni, consulta la panoramica sull'AI spiegabile di BigQuery ML.

Esegui la query ML.EXPLAIN_PREDICT:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, esegui la query seguente:

    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));
    
  3. I risultati dovrebbero essere simili ai seguenti:

    Output ML.EXPLAIN_PREDICT

Per i modelli di regressione lineare, i valori di Shapley vengono utilizzati per generare valori di attribuzione delle caratteristiche per ogni caratteristica nel modello. ML.EXPLAIN_PREDICT restituisce le prime tre attribuzioni delle funzionalità per riga della tabella penguins perché top_k_features è stato impostato su 3 nella query. Queste attribuzioni sono ordinate in base al valore assoluto dell'attribuzione. In tutti gli esempi, la funzionalità sex ha contribuito maggiormente alla previsione complessiva.

Spiegare il modello a livello globale

Per sapere quali caratteristiche sono generalmente le più importanti per determinare il peso del pinguino, 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.

Riaddestra e ricevi spiegazioni globali per il modello:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, esegui la query seguente 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;
    
  3. Nell'editor query, esegui la query seguente per ricevere spiegazioni globali:

    SELECT
      *
    FROM
      ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
    
  4. I risultati dovrebbero essere simili ai seguenti:

    Output ML.GLOBAL_EXPLAIN

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 che hai creato in questo tutorial:

  1. Se necessario, apri la pagina di BigQuery nella console Google Cloud.

    Vai alla pagina di BigQuery

  2. Nella barra di navigazione, fai clic sul set di dati bqml_tutorial che hai creato.

  3. 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.

  4. Nella finestra di dialogo Elimina set di dati, conferma il comando di eliminazione digitando il nome del set di dati (bqml_tutorial), quindi fai clic su Elimina.

Elimina il progetto

Per eliminare il progetto:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi