Questo tutorial ti insegna a creare un
modello di fattorizzazione della matrice
e ad addestrarlo sui dati delle sessioni utente di Google Analytics 360 nella
tabellaGA360_test.ga_sessions_sample
pubblica. Quindi, utilizzi il modello di fattorizzazione matriciale per generare suggerimenti sui 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 della matrice vengono addestrati utilizzando l'algoritmo Weighted-Alternating Least Squares quando utilizzi il feedback implicito come dati di addestramento.
Crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML.
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del progetto.
Fai clic su
Visualizza azioni > Crea set di dati.Nella pagina Crea set di dati:
In ID set di dati, inserisci
bqml_tutorial
.Per Tipo di località, seleziona Multi-regione e poi Stati Uniti (più regioni negli 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
comando bq mk
con il flag --location
. Per un elenco completo dei possibili parametri, consulta la
documentazione di riferimento del
comando bq mk --dataset
.
Crea un set di dati denominato
bqml_tutorial
con la località dei dati impostata suUS
e una descrizione diBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Anziché utilizzare il flag
--dataset
, il comando utilizza la scorciatoia-d
. Se ometti-d
e--dataset
, il comando crea per impostazione predefinita un dataset.Verifica che il set di dati sia stato creato:
bq ls
API
Chiama il metodo datasets.insert
con una risorsa dataset definita.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
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 poi utilizzare come
feedback implicito per dedurre la preferenza dell'utente per quel contenuto.
Per creare la tabella dei dati di addestramento:
Nella console Google Cloud , vai alla pagina BigQuery.
Crea la tabella dei dati di addestramento. Nell'editor di query, incolla la query seguente 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 query seguente 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 nella tabella
analytics_session_data
. Il modello è addestrato per prevedere un indice di affidabilità per ogni coppia visitorId
-contentId
. La valutazione di confidenza viene creata
con centratura e scalabilità in base alla durata mediana della sessione. I record in cui la durata della sessione è più di 3,33 volte la mediana vengono esclusi come valori anomali.
La seguente istruzione CREATE MODEL
utilizza queste colonne per generare
consigli:
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 console Google Cloud , 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_implicit
viene visualizzato nel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODEL
per creare un modello, non vengono visualizzati i risultati della query.
Visualizzare le statistiche di allenamento
Facoltativamente, puoi visualizzare le statistiche di addestramento del modello nella consoleGoogle Cloud .
Un algoritmo di machine learning crea un modello creando molte iterazioni del modello utilizzando parametri diversi e poi selezionando la versione del modello che minimizza la perdita. Questo processo è chiamato 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 console Google Cloud , vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su
Explorer:Se non vedi il riquadro a sinistra, fai clic su
Espandi riquadro a sinistra per aprirlo.Nel riquadro Explorer, 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_implicit
e 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 di perdita calcolata dopo l'addestramento del modello. Poiché si tratta di un modello di fattorizzazione della matrice, 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 classificazioni dei contenuti previste restituite dal modello rispetto alle metriche di valutazione calcolate durante l'addestramento.
Per valutare il modello:
Nella console Google Cloud , 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.
Ottenere le valutazioni previste per un sottoinsieme di coppie visitatore-contenuto
Utilizza ML.RECOMMEND
per ottenere la classificazione prevista per ogni contenuto
per cinque visitatori del sito.
Per ottenere le valutazioni previste:
Nella console Google Cloud , 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 i consigli:
Nella console Google Cloud , vai alla pagina BigQuery.
Scrivi le valutazioni previste in una tabella. Nell'editor di query, incolla la query seguente 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 query seguente 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 | +---------------------+-----------------+---------------------------------+ | ... | ... | ... | +---------------------+-----------------+---------------------------------+