Ottieni insight sui dati da un modello di analisi di contributo utilizzando una metrica di rapporto riassumibile
In questo tutorial, utilizzi un modello di analisi di contributo per analizzare il contributo del rapporto tra costo del venduto e vendite di alcolici nel set di dati sulle vendite di alcolici nell'Iowa. Questo tutorial ti guida nell'esecuzione delle seguenti attività:
- Crea una tabella di input basata sui dati sugli alcolici dell'Iowa disponibili pubblicamente.
- Crea un modello di analisi di contributo che utilizza una metrica di rapporto riassumibile. Questo tipo di modello riassume i valori di due colonne numeriche e determina le differenze di rapporto tra il set di dati di controllo e quello di test per ogni segmento di dati.
- Ottieni gli insight sulle metriche dal modello utilizzando la
ML.GET_INSIGHTSfunzione.
Prima di iniziare questo tutorial, devi avere familiarità con il caso d'uso dell'analisi di contributo.
Autorizzazioni obbligatorie
Per creare il set di dati, devi disporre dell'autorizzazione IAM (Identity and Access Management)
bigquery.datasets.create.Per creare il modello, devi disporre delle seguenti autorizzazioni:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
Per eseguire l'inferenza, devi disporre delle seguenti autorizzazioni:
bigquery.models.getDatabigquery.jobs.create
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- BigQuery ML: You incur costs for the data that you process in BigQuery.
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Per ulteriori informazioni sui prezzi di BigQuery, consulta Prezzi di BigQuery in la documentazione di BigQuery.
Prima di iniziare
-
Nella Google Cloud console, nella pagina di selezione del progetto, seleziona o crea un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico: puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'resourcemanager.projects.createautorizzazione. Scopri come concedere i ruoli.
-
Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.
-
Abilita l'API BigQuery.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (
roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.
Crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML.
Console
Nella Google Cloud console, vai alla pagina BigQuery.
Nel riquadro Spazio di esplorazione, fai clic sul nome del 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 Multi-regione e poi seleziona Stati Uniti.
Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.
bq
Per creare un nuovo set di dati, utilizza il
bq mk --dataset comando.
Crea un set di dati denominato
bqml_tutorialcon la località dei dati impostata suUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Verifica che il set di dati sia stato creato:
bq ls
API
Chiama il datasets.insert
metodo con una risorsa del set di dati definita.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Crea una tabella di dati di input
Crea una tabella contenente i dati di test e di controllo da analizzare. La query seguente crea due tabelle intermedie, una tabella di test per i dati sugli alcolici del 2021 e una tabella di controllo con i dati sugli alcolici del 2020, quindi esegue un'unione delle tabelle intermedie per creare una tabella con righe di test e di controllo e lo stesso insieme di colonne.
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
CREATE OR REPLACE TABLE bqml_tutorial.iowa_liquor_sales_data AS (SELECT store_name, city, vendor_name, category_name, item_description, SUM(sale_dollars) AS total_sales, SUM(state_bottle_cost) AS total_bottle_cost, FALSE AS is_test FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE EXTRACT(YEAR FROM date) = 2020 GROUP BY store_name, city, vendor_name, category_name, item_description, is_test) UNION ALL (SELECT store_name, city, vendor_name, category_name, item_description, SUM(sale_dollars) AS total_sales, SUM(state_bottle_cost) AS total_bottle_cost, TRUE AS is_test FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE EXTRACT(YEAR FROM date) = 2021 GROUP BY store_name, city, vendor_name, category_name, item_description, is_test);
Crea il modello
Crea un modello di analisi di contributo:
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
CREATE OR REPLACE MODEL bqml_tutorial.liquor_sales_model OPTIONS( model_type = 'CONTRIBUTION_ANALYSIS', contribution_metric = 'sum(total_bottle_cost)/sum(total_sales)', dimension_id_cols = ['store_name', 'city', 'vendor_name', 'category_name', 'item_description'], is_test_col = 'is_test', min_apriori_support = 0.05 ) AS SELECT * FROM bqml_tutorial.iowa_liquor_sales_data;
Il completamento della query richiede circa 35 secondi, dopodiché il modello liquor_sales_model viene visualizzato nel set di dati bqml_tutorial. Poiché la query utilizza un'istruzione CREATE MODEL per creare un modello, non vengono visualizzati i risultati della query.
Ottieni insight dal modello
Ottieni gli insight generati dal modello di analisi di contributo utilizzando la funzione ML.GET_INSIGHTS.
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione per selezionare le colonne dall' output per un modello di analisi di contributo della metrica di rapporto riassumibile:
SELECT contributors, metric_test, metric_control, metric_test_over_metric_control, metric_test_over_complement, metric_control_over_complement, aumann_shapley_attribution, apriori_support contribution FROM ML.GET_INSIGHTS( MODEL `bqml_tutorial.liquor_sales_model`) ORDER BY aumann_shapley_attribution DESC;
Le prime righe dell'output dovrebbero essere simili alle seguenti. I valori vengono troncati per migliorare la leggibilità.
| di lingua russa. | metric_test | metric_control | metric_test_over_metric_control | metric_test_over_complement | metric_control_over_complement | aumann_shapley_attribution | apriori_support | contributo |
|---|---|---|---|---|---|---|---|---|
| tutti | 0.069 | 0.071 | 0.969 | null | null | -0.00219 | 1.0 | 0.00219 |
| city=DES MOINES | 0.048 | 0.054 | 0.88 | 0.67 | 0.747 | -0.00108 | 0.08 | 0.00108 |
| vendor_name=DIAGEO AMERICAS | 0.064 | 0.068 | 0.937 | 0.917 | 0.956 | -0.0009 | 0.184 | 0.0009 |
| vendor_name=BACARDI USA INC | 0.071 | 0.082 | 0.857 | 1.025 | 1.167 | -0.00054 | 0.057 | 0.00054 |
| vendor_name=PERNOD RICARD USA | 0.068 | 0.077 | 0.89 | 0.988 | 1.082 | -0.0005 | 0.061 | 0.0005 |
Nell'output, puoi notare che il segmento di dati city=DES MOINES ha il contributo più elevato alla variazione del rapporto di vendita. Puoi anche notare questa differenza nelle colonne metric_test e metric_control, che mostrano che il rapporto è diminuito nei dati di test rispetto ai dati di controllo. Altre metriche, come metric_test_over_metric_control, metric_test_over_complement e metric_control_over_complement, calcolano statistiche aggiuntive che descrivono la relazione tra i rapporti di controllo e di test e il modo in cui si riferiscono alla popolazione complessiva. Per ulteriori informazioni, consulta
Output per i modelli di analisi di contributo della metrica di rapporto riassumibile.
Libera spazio
- Nella Google Cloud console, 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 progetto, quindi fai clic su Chiudi per eliminare il progetto.