Questo tutorial spiega come creare un
modello di fattorizzazione matriciale
e addestrarlo sui dati delle sessioni utente di Google Analytics 360 nella tabella pubblica
GA360_test.ga_sessions_sample table. Poi utilizzerai il modello di fattorizzazione matriciale per generare suggerimenti di contenuti per gli utenti del sito.
L'utilizzo di informazioni indirette sulle preferenze dei clienti, come la durata della sessione utente, per addestrare il modello è chiamato addestramento con feedback implicito. I modelli di fattorizzazione matriciale vengono addestrati utilizzando l' algoritmo Weighted-Alternating Least Squares quando utilizzi il feedback implicito come dati di addestramento.
Obiettivi
Questo tutorial ti guida nel completamento delle seguenti attività:
- Creazione di un modello di fattorizzazione matriciale utilizzando l'istruzione
CREATE MODEL. - Valutazione del modello utilizzando la
ML.EVALUATEfunzione. - Generazione di suggerimenti di contenuti per gli utenti utilizzando il modello con la
ML.RECOMMENDfunzione.
Costi
Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:
- BigQuery
- BigQuery ML
Per saperne di più sui costi di BigQuery, consulta la pagina dei prezzi di BigQuery.
Per saperne di più sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.
Prima di iniziare
- Accedi al tuo Google Cloud account. 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 senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- BigQuery è abilitato automaticamente nei nuovi progetti.
Per attivare BigQuery in un progetto preesistente, vai a
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.
Autorizzazioni richieste
Per creare il set di dati, devi disporre dell'autorizzazione IAM
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
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Introduzione a IAM.
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.In 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" } }
Prepara i dati di esempio
Trasforma i dati della tabella GA360_test.ga_sessions_sample in una struttura migliore per l'addestramento del modello, quindi scrivi questi dati in una tabella BigQuery. La seguente query calcola la durata della sessione per ogni utente per ogni contenuto, che puoi quindi utilizzare come feedback implicito per dedurre la preferenza dell'utente per quel contenuto.
Per creare la tabella dei dati di addestramento:
Nella Google Cloud console, vai alla pagina BigQuery.
Crea la tabella dei dati di addestramento. Nell'editor di query, incolla la seguente query e fai clic su Esegui:
CREATE OR REPLACE TABLE `bqml_tutorial.analytics_session_data` AS WITH visitor_page_content AS ( SELECT fullVisitorID, ( SELECT MAX( IF( index = 10, value, NULL)) FROM UNNEST(hits.customDimensions) ) AS latestContentId, (LEAD(hits.time, 1) OVER (PARTITION BY fullVisitorId ORDER BY hits.time ASC) - hits.time) AS session_duration FROM `cloud-training-demos.GA360_test.ga_sessions_sample`, UNNEST(hits) AS hits WHERE # only include hits on pages hits.type = 'PAGE' GROUP BY fullVisitorId, latestContentId, hits.time ) # aggregate web stats SELECT fullVisitorID AS visitorId, latestContentId AS contentId, SUM(session_duration) AS session_duration FROM visitor_page_content WHERE latestContentId IS NOT NULL GROUP BY fullVisitorID, latestContentId HAVING session_duration > 0 ORDER BY latestContentId;
Visualizza un sottoinsieme dei dati di addestramento. Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT * FROM `bqml_tutorial.analytics_session_data` LIMIT 5;
I risultati dovrebbero essere simili ai seguenti:
+---------------------+-----------+------------------+ | visitorId | contentId | session_duration | +---------------------+-----------+------------------+ | 7337153711992174438 | 100074831 | 44652 | +---------------------+-----------+------------------+ | 5190801220865459604 | 100170790 | 121420 | +---------------------+-----------+------------------+ | 2293633612703952721 | 100510126 | 47744 | +---------------------+-----------+------------------+ | 5874973374932455844 | 100510126 | 32109 | +---------------------+-----------+------------------+ | 1173698801255170595 | 100676857 | 10512 | +---------------------+-----------+------------------+
Crea il modello
Crea un modello di fattorizzazione matriciale e addestralo sui dati della tabella analytics_session_data. Il modello viene addestrato per prevedere una valutazione di affidabilità per ogni coppia visitorId-contentId. La valutazione di affidabilità viene creata con centratura e scalabilità in base alla durata mediana della sessione. I record in cui la durata della sessione è superiore a 3,33 volte la mediana vengono filtrati come valori anomali.
La seguente istruzione CREATE MODEL utilizza queste colonne per generare suggerimenti:
visitorId: l'ID visitatore.contentId: l'ID contenuto.rating: la valutazione implicita da 0 a 1 calcolata per ogni coppia visitatore-contenuto, centrata e scalata.
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
CREATE OR REPLACE MODEL `bqml_tutorial.mf_implicit` OPTIONS ( MODEL_TYPE = 'matrix_factorization', FEEDBACK_TYPE = 'implicit', USER_COL = 'visitorId', ITEM_COL = 'contentId', RATING_COL = 'rating', L2_REG = 30, NUM_FACTORS = 15) AS SELECT visitorId, contentId, 0.3 * (1 + (session_duration - 57937) / 57937) AS rating FROM `bqml_tutorial.analytics_session_data` WHERE 0.3 * (1 + (session_duration - 57937) / 57937) < 1;
Il completamento della query richiede circa 10 minuti, dopodiché il modello
mf_implicitviene visualizzato nel riquadro Spazio di esplorazione. Poiché la query utilizza un'istruzioneCREATE MODELper creare un modello, non vengono visualizzati i risultati della query.
Visualizza le statistiche di addestramento
Facoltativamente, puoi visualizzare le statistiche di addestramento del modello nella Google Cloud console.
Un algoritmo di machine learning crea un modello creando molte iterazioni di modello utilizzando parametri diversi, quindi selezionando la versione del modello che minimizza la perdita. Questo processo è noto come minimizzazione empirica del rischio. Le statistiche di addestramento del modello ti consentono di visualizzare la perdita associata a ogni iterazione del modello.
Per visualizzare le statistiche di addestramento del modello:
Nella Google Cloud console, vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
Nel riquadro Spazio di esplorazione, espandi il progetto e fai clic su Set di dati.
Fai clic sul set di dati
bqml_tutorial. Puoi anche utilizzare la funzionalità di ricerca o i filtri per trovare il set di dati.Fai clic sulla scheda Modelli.
Fai clic sul modello
mf_implicite poi sulla scheda Addestramento.Nella sezione Visualizza come, fai clic su Tabella. I risultati dovrebbero essere simili ai seguenti:
+-----------+--------------------+--------------------+ | Iteration | Training Data Loss | Duration (seconds) | +-----------+--------------------+--------------------+ | 5 | 0.0027 | 47.27 | +-----------+--------------------+--------------------+ | 4 | 0.0028 | 39.60 | +-----------+--------------------+--------------------+ | 3 | 0.0032 | 55.57 | +-----------+--------------------+--------------------+ | ... | ... | ... | +-----------+--------------------+--------------------+
La colonna Perdita di dati di addestramento rappresenta la metrica relativa alla perdita calcolata dopo che il modello è stato addestrato. Poiché si tratta di un modello di fattorizzazione matriciale, questa colonna mostra l'errore quadratico medio.
Valuta il modello
Valuta le prestazioni del modello utilizzando la funzione ML.EVALUATE.
La funzione ML.EVALUATE valuta le valutazioni dei contenuti previste restituite dal modello rispetto alle metriche di valutazione calcolate durante l'addestramento.
Per valutare il modello:
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.mf_implicit`);
I risultati dovrebbero essere simili ai seguenti:
+------------------------+-----------------------+---------------------------------------+---------------------+ | mean_average_precision | mean_squared_error | normalized_discounted_cumulative_gain | average_rank | +------------------------+-----------------------+---------------------------------------+---------------------+ | 0.4434341257478137 | 0.0013381759837648962 | 0.9433280547112802 | 0.24031636088594222 | +------------------------+-----------------------+---------------------------------------+---------------------+
Per saperne di più sull'output della funzione
ML.EVALUATE, consulta Output.
Ottieni le valutazioni previste per un sottoinsieme di coppie visitatore-contenuto
Utilizza ML.RECOMMEND per ottenere la valutazione prevista per ogni contenuto per cinque visitatori del sito.
Per ottenere le valutazioni previste:
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT * FROM ML.RECOMMEND( MODEL `bqml_tutorial.mf_implicit`, ( SELECT visitorId FROM `bqml_tutorial.analytics_session_data` LIMIT 5 ));
I risultati dovrebbero essere simili ai seguenti:
+-------------------------------+---------------------+-----------+ | predicted_rating_confidence | visitorId | contentId | +-------------------------------+---------------------+-----------+ | 0.0033608418060270262 | 7337153711992174438 | 277237933 | +-------------------------------+---------------------+-----------+ | 0.003602395397293956 | 7337153711992174438 | 158246147 | +-------------------------------+---------------------+-- -------+ | 0.0053197670652785356 | 7337153711992174438 | 299389988 | +-------------------------------+---------------------+-----------+ | ... | ... | ... | +-------------------------------+---------------------+-----------+
Genera suggerimenti
Utilizza le valutazioni previste per generare i primi cinque ID contenuti consigliati per ogni ID visitatore.
Per generare suggerimenti:
Nella Google Cloud console, vai alla pagina BigQuery.
Scrivi le valutazioni previste in una tabella. Nell'editor di query, incolla la seguente query e fai clic su Esegui:
CREATE OR REPLACE TABLE `bqml_tutorial.recommend_content` AS SELECT * FROM ML.RECOMMEND(MODEL `bqml_tutorial.mf_implicit`);
Seleziona i primi cinque risultati per visitatore. Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT visitorId, ARRAY_AGG( STRUCT(contentId, predicted_rating_confidence) ORDER BY predicted_rating_confidence DESC LIMIT 5) AS rec FROM `bqml_tutorial.recommend_content` GROUP BY visitorId;
I risultati dovrebbero essere simili ai seguenti:
+---------------------+-----------------+---------------------------------+ | visitorId | rec:contentId | rec:predicted_rating_confidence | +---------------------+-----------------+------------------------- ------+ | 867526255058981688 | 299804319 | 0.88170525357178664 | | | 299935287 | 0.54699439944935124 | | | 299410466 | 0.53424780863188659 | | | 299826767 | 0.46949603950374219 | | | 299809748 | 0.3379991197434149 | +---------------------+-----------------+---------------------------------+ | 2434264018925667659 | 299824032 | 1.3903516407308065 | | | 299410466 | 0.9921995618196483 | | | 299903877 | 0.92333625294129218 | | | 299816215 | 0.91856701667757279 | | | 299852437 | 0.86973661454890561 | +---------------------+-----------------+---------------------------------+ | ... | ... | ... | +---------------------+-----------------+---------------------------------+
Libera spazio
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 Google Cloud console.
Nella 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 il comando di eliminazione, quindi fai clic su Elimina.
Elimina il progetto
Per eliminare il progetto:
- 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.
Passaggi successivi
- Prova a creare un modello di fattorizzazione matriciale basato sul feedback esplicito.
- Per una panoramica di BigQuery ML, consulta Introduzione a BigQuery ML.
- Per saperne di più sul machine learning, consulta il Machine Learning Crash Course.