Questi contenuti non sono ancora ottimizzati per i dispositivi mobili.
Per un'esperienza ottimale, visualizza il sito su un computer utilizzando un link inviato via email.
Panoramica
BigQuery ML (BigQuery machine learning) è una funzionalità di BigQuery in cui gli analisti di dati possono creare, addestrare, valutare e prevedere tramite modelli di machine learning con una programmazione minima.
Il set di dati per l'e-commerce d'esempio di Google Analytics ha milioni di record di Google Analytics caricati su BigQuery per Google Merchandise Store. In questo lab, imparerai a usare questi dati per eseguire alcune delle query più frequenti che interessano ai business sulle abitudini d'acquisto dei loro clienti.
Obiettivi
In questo lab imparerai a:
Usare BigQuery per trovare set di dati pubblici
Eseguire query ed esplorare il set di dati per l'e-commerce
Creare un set di dati di addestramento e valutazione da usare per le previsioni in batch
Creare un modello di classificazione (regressione logistica) in BigQuery ML
Valutare le prestazioni del tuo modello di machine learning
Prevedere e classificare la probabilità che un visitatore effettui un acquisto
Configura i tuoi ambienti
Configurazione del lab
Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.
Accedi a Qwiklabs utilizzando una finestra di navigazione in incognito.
Tieni presente la durata dell'accesso al lab (ad esempio, 1:15:00) e assicurati di finire entro quell'intervallo di tempo.
Non è disponibile una funzionalità di pausa. Se necessario, puoi riavviare il lab ma dovrai ricominciare dall'inizio.
Quando è tutto pronto, fai clic su Inizia lab.
Annota le tue credenziali del lab (Nome utente e Password). Le userai per accedere a Google Cloud Console.
Fai clic su Apri console Google.
Fai clic su Utilizza un altro account e copia/incolla le credenziali per questo lab nei prompt.
Se utilizzi altre credenziali, compariranno errori oppure ti verranno addebitati dei costi.
Accetta i termini e salta la pagina di ripristino delle risorse.
Apri la console di BigQuery
Nella console Google Cloud, seleziona Menu di navigazione > BigQuery.
Si aprirà la finestra con il messaggio Ti diamo il benvenuto in BigQuery nella console Cloud. Questa finestra fornisce un link alla guida rapida ed elenca gli aggiornamenti dell'interfaccia utente.
Fai clic su Fine.
Accesso al set di dati del corso
Una volta aperto BigQuery, apri il progetto data-to-insights in una scheda del browser per portarlo nel tuo pannello dei progetti di BigQuery.
Le definizioni dei campi per il set di dati per l'e-commerce data-to-insights si trovano nella pagina dello schema BigQuery Export di [UA]. Tieni aperto il link in una nuova scheda come riferimento.
Attività 1: esplora i dati dell'e-commerce
Scenario: il tuo team di analisti di dati ha esportato dei log di Google Analytics per un sito di e-commerce in BigQuery e ha creato una nuova tabella di tutti i dati non elaborati delle sessioni visitatore dell'e-commerce per permetterti di esplorarli. Usando questi dati, proverai a rispondere ad alcune domande.
Domanda: dei visitatori totali che hanno visitato il sito web, quale percentuale ha effettuato un acquisto?
Fai clic sull'Editor query.
Aggiungi il seguente codice al campo Nuova query:
#standardSQL
WITH visitors AS(
SELECT
COUNT(DISTINCT fullVisitorId) AS total_visitors
FROM `data-to-insights.ecommerce.web_analytics`
),
purchasers AS(
SELECT
COUNT(DISTINCT fullVisitorId) AS total_purchasers
FROM `data-to-insights.ecommerce.web_analytics`
WHERE totals.transactions IS NOT NULL
)
SELECT
total_visitors,
total_purchasers,
total_purchasers / total_visitors AS conversion_rate
FROM visitors, purchasers
Fai clic su Esegui.
Il risultato è 2,69%
Domanda: quali sono i 5 prodotti più venduti?
Aggiungi la seguente query nell'EDITOR query e poi fai clic su Esegui:
SELECT
p.v2ProductName,
p.v2ProductCategory,
SUM(p.productQuantity) AS units_sold,
ROUND(SUM(p.localProductRevenue/1000000),2) AS revenue
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h,
UNNEST(h.product) AS p
GROUP BY 1, 2
ORDER BY revenue DESC
LIMIT 5;
Domanda: quanti visitatori hanno fatto acquisti durante visite successive al sito web?
Esegui la seguente query per scoprirlo:
# visitors who bought on a return visit (could have bought on first as well
WITH all_visitor_stats AS (
SELECT
fullvisitorid, # 741,721 unique visitors
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
SELECT
COUNT(DISTINCT fullvisitorid) AS total_visitors,
will_buy_on_return_visit
FROM all_visitor_stats
GROUP BY will_buy_on_return_visit
Risultati:
Riga
total_visitors
will_buy_on_return_visit
1
729848
0
2
11873
1
Analizzando i risultati, puoi vedere che (11873 / 729848) = 1,6% dei visitatori totali torneranno e acquisteranno dal sito web. Questo include il sottoinsieme dei visitatori che hanno acquistato durante la prima sessione e poi sono tornati e hanno fatto ulteriori acquisti.
Questo comportamento è molto comune per i beni di lusso per cui il cliente ha bisogno di fare diverse ricerche e confronti preliminari prima di decidere (pensa all'acquisto di un'auto), ma è anche applicabile in misura minore al merchandising su questo sito (t-shirt, accessori, ecc).
Nel mondo del marketing online, identificare e cercare di vendere a questi futuri clienti in base alle caratteristiche della loro prima visita aumenterà i tassi di conversione e ridurrà il passaggio a siti concorrenti.
Attività 2: seleziona le caratteristiche e crea il tuo set di dati d'addestramento
Ora creerai un modello di machine learning in BigQuery per prevedere le probabilità che un nuovo utente acquisti di nuovo in futuro o meno. Identificare questi utenti ad alto valore può aiutare il tuo team di marketing a mostrar loro promozioni e campagne pubblicitarie speciali.
Google Analytics acquisisce un'ampia gamma di dimensioni e misure relative alla visita di un utente su questo sito di e-commerce. Sfoglia la lista completa di campi nella Guida dello schema BigQuery Export di [UA] e poi visualizza l'anteprima del set di dati dimostrativo per trovare caratteristiche utili che aiuteranno un modello di machine learning a capire la relazione tra i dati relativi alla prima visita di un utente sul tuo sito web e il suo eventuale ritorno per effettuare un acquisto.
Il tuo team decide di testare se questi due campi sono buoni input per il tuo modello di classificazione:
totals.bounces (se il visitatore ha abbandonato il sito immediatamente)
totals.timeOnSite (quanto tempo il visitatore è rimasto sul nostro sito web)
L'efficacia del machine learning dipende direttamente dalla qualità dei dati di addestramento che gli vengono forniti. Se non ci sono informazioni sufficienti affinché il modello determini e impari la relazione tra le caratteristiche di input e l'etichetta (in questo caso, se il visitatore ha comprato in futuro), non avrai un modello accurato. Benché addestrare un modello solo su questi due campi sia un inizio, valuterai se sono sufficienti a produrre un modello accurato.
Nell'EDITOR query, aggiungi la seguente query e poi fai clic su Esegui:
SELECT
* EXCEPT(fullVisitorId)
FROM
# features
(SELECT
fullVisitorId,
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site
FROM
`data-to-insights.ecommerce.web_analytics`
WHERE
totals.newVisits = 1)
JOIN
(SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM
`data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid)
USING (fullVisitorId)
ORDER BY time_on_site DESC
LIMIT 10;
Risultati:
Riga
bounces
time_on_site
will_buy_on_return_visit
1
0
15047
0
2
0
12136
0
3
0
11201
0
4
0
10046
0
5
0
9974
0
6
0
9564
0
7
0
9520
0
8
0
9275
1
9
0
9138
0
10
0
8872
0
Discussione: il valore di Acquisteranno in visita di ritorno non si conosce dopo la prima visita. Di nuovo, vuoi ottenere una previsione per un sottoinsieme di utenti che sono tornati sul tuo sito web e hanno acquistato. Visto che non conosci il futuro al momento della previsione, non puoi dire con certezza se un nuovo visitatore tornerà per acquistare. Il valore della creazione di un modello ML sta nel poter ricavare la probabilità di un acquisto futuro in base ai dati raccolti durante la prima sessione.
Domanda: guardando i risultati dei dati iniziali, pensi che il tempo sul sito e i rimbalzi siano buoni indicatori della possibilità che l'utente ritorni e acquisti?
Risposta: spesso è troppo presto per dirlo prima di aver addestrato e valutato il modello, ma a una prima occhiata, solo un cliente tra i migliori 10 tempi sul sito (time_on_site) è tornato ad acquistare, dato poco promettente. Vediamo i risultati del modello.
Attività 3: crea un set di dati BigQuery per archiviare i modelli
Poi, crea un nuovo set di dati BigQuery dove archivierai anche i tuoi modelli ML.
Nel riquadro a sinistra, fai clic sul nome del progetto e poi sull'icona con i tre puntini Visualizza azione e seleziona Crea set di dati.
Nella finestra di dialogo Crea set di dati:
In ID set di dati, inserisci e-commerce.
Lascia le impostazioni predefinite per gli altri valori.
Fai clic su Crea set di dati.
Attività 4: seleziona un tipo di modello BigQuery ML e specifica le opzioni
Ora che hai selezionato le tue caratteristiche iniziali, tutto è pronto per creare il tuo primo modello ML in BigQuery.
È possibile scegliere tra due tipi di modelli:
Modello
Tipo di modello
Etichetta tipo di modello
Esempio
Previsione
linear_reg
Valore numerico (di solito un numero intero o una rappresentazione in virgola mobile)
Vendite previste per il prossimo anno sulla base dei dati storici di vendita.
Classificazione
logistic_reg
0 o 1 per classificazione binaria
Classifica un'email come spam o non spam a seconda del contesto.
Nota: nel machine learning esistono molti altri tipi di modelli (come reti neurali e alberi decisionali), disponibili tramite librerie quali TensorFlow. Al momento della scrittura, BigQuery ML supporta solo i due menzionati sopra.
Inserisci la seguente query per creare un modello e specifica le opzioni del modello:
CREATE OR REPLACE MODEL `ecommerce.classification_model`
OPTIONS
(
model_type='logistic_reg',
labels = ['will_buy_on_return_visit']
)
AS
#standardSQL
SELECT
* EXCEPT(fullVisitorId)
FROM
# features
(SELECT
fullVisitorId,
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site
FROM
`data-to-insights.ecommerce.web_analytics`
WHERE
totals.newVisits = 1
AND date BETWEEN '20160801' AND '20170430') # train on first 9 months
JOIN
(SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM
`data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid)
USING (fullVisitorId)
;
Quindi fai clic su Esegui per addestrare il tuo modello.
Attendi l'addestramento del modello (5-10 minuti).
Nota: non puoi alimentare tutti i dati disponibili nel modello durante l'addestramento, dal momento che hai bisogno di mantenere alcuni punti dati non considerati per la valutazione e il test del modello. Per farlo, aggiungi una clausola WHERE da usare per filtrare e per addestrare considerando solo i primi 9 mesi dei dati di sessione nel tuo set di dati di 12 mesi.
Una volta addestrato il tuo modello, vedrai il messaggio "Questa istruzione ha creato un nuovo modello denominato qwiklabs-gcp-xxxxxxxxx:ecommerce.classification_model".
Fai clic su Vai al modello.
Analizza il set di dati per l'e-commerce e controlla che appaia classification_model.
Quindi, valuterai le prestazioni del modello rispetto ai nuovi dati di valutazione non considerati.
Attività 5: valuta le prestazioni del modello di classificazione
Seleziona i criteri delle prestazioni
Per i problemi di classificazione in ML, vuoi ridurre al minimo la percentuale di falsi positivi (prevedi che l'utente ritornerà e acquisterà e non lo fa) e massimizzare la percentuale di veri positivi (prevedi che l'utente ritornerà e acquisterà e lo fa).
Questa relazione viene visualizzata con una curva della caratteristica operativa del ricevitore (ROC) come quella mostrata qui, dove cerchi di massimizzare l'area sotto la curva o AUC:
In BigQuery ML, roc_auc è semplicemente un campo interrogabile durante la valutazione del tuo modello ML addestrato.
Ora che l'addestramento è completato, puoi valutare le prestazioni del modello eseguendo questa query con ML.EVALUATE:
SELECT
roc_auc,
CASE
WHEN roc_auc > .9 THEN 'good'
WHEN roc_auc > .8 THEN 'fair'
WHEN roc_auc > .7 THEN 'not great'
ELSE 'poor' END AS model_quality
FROM
ML.EVALUATE(MODEL ecommerce.classification_model, (
SELECT
* EXCEPT(fullVisitorId)
FROM
# features
(SELECT
fullVisitorId,
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site
FROM
`data-to-insights.ecommerce.web_analytics`
WHERE
totals.newVisits = 1
AND date BETWEEN '20170501' AND '20170630') # eval on 2 months
JOIN
(SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM
`data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid)
USING (fullVisitorId)
));
Dovresti vedere il seguente risultato:
Riga
roc_auc
model_quality
1
0,724588
Non ideale
Dopo la valutazione del modello ottieni una auc roc di 0,72, che mostra che il modello non ha una grande capacità predittiva. Dal momento che l'obiettivo è ottenere un'area sotto la curva il più vicina possibile a 1,0, c'è margine di miglioramento.
Attività 6: migliora le prestazioni del modello con il feature engineering
Come suggerito in precedenza, ci sono molte altre caratteristiche nel set di dati che possono aiutare il modello a comprendere meglio la relazione tra la prima sessione di un visitatore e la probabilità che acquisti durante una visita successiva.
Aggiungi alcune nuove caratteristiche e crea un secondo modello di machine learning chiamato classification_model_2:
Quanto ha avanzato il visitatore nella procedura di pagamento durante la prima visita
Da dove è arrivato il visitatore (sorgente di traffico: ricerca organica, sito referral, ecc)
Categoria del dispositivo (mobile, tablet, desktop)
Informazioni geografiche (paese)
Crea questo secondo modello eseguendo la query riportata di seguito:
CREATE OR REPLACE MODEL `ecommerce.classification_model_2`
OPTIONS
(model_type='logistic_reg', labels = ['will_buy_on_return_visit']) AS
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
# add in new features
SELECT * EXCEPT(unique_session_id) FROM (
SELECT
CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id,
# labels
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# behavior on the site
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
totals.pageviews,
# where the visitor came from
trafficSource.source,
trafficSource.medium,
channelGrouping,
# mobile or desktop
device.deviceCategory,
# geographic
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE 1=1
# only predict for new visits
AND totals.newVisits = 1
AND date BETWEEN '20160801' AND '20170430' # train 9 months
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
);
Nota: stai ancora basando l'addestramento sugli stessi primi 9 mesi di dati, anche con questo nuovo modello. È importante avere lo stesso set di dati di addestramento in modo da avere la certezza che un miglior output del modello sia dovuto a migliori caratteristiche di input e non a dati di addestramento nuovi o diversi.
Una nuova caratteristica chiave aggiunta al set di dati di addestramento è il progresso massimo della procedura di pagamento che ciascun visitatore ha raggiunto durante la sessione, registrato nel campo hits.eCommerceAction.action_type. Se cerchi questo campo nelle definizioni dei campi vedrai il mapping del campo di 6 = acquisto completato.
Per inciso, il set di dati per l'analisi dei dati web ha campi nidificati e ripetuti come ARRAY che devono essere suddivisi in righe separate nel tuo set di dati. Questo si può fare utilizzando la funzione UNNEST(), che puoi vedere nella query qui sopra.
Attendi la fine dell'addestramento del nuovo modello (5-10 minuti).
Valuta questo nuovo modello per vedere se la capacità predittiva è migliore, eseguendo la query riportata di seguito:
#standardSQL
SELECT
roc_auc,
CASE
WHEN roc_auc > .9 THEN 'good'
WHEN roc_auc > .8 THEN 'fair'
WHEN roc_auc > .7 THEN 'not great'
ELSE 'poor' END AS model_quality
FROM
ML.EVALUATE(MODEL ecommerce.classification_model_2, (
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
# add in new features
SELECT * EXCEPT(unique_session_id) FROM (
SELECT
CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id,
# labels
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# behavior on the site
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
totals.pageviews,
# where the visitor came from
trafficSource.source,
trafficSource.medium,
channelGrouping,
# mobile or desktop
device.deviceCategory,
# geographic
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE 1=1
# only predict for new visits
AND totals.newVisits = 1
AND date BETWEEN '20170501' AND '20170630' # eval 2 months
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
)
));
(Output)
Riga
roc_auc
model_quality
1
0,910382
good
Con questo nuovo modello ora si ottiene una auc roc di 0,91, di gran lunga migliore rispetto al primo modello.
Ora che hai un modello addestrato, è il momento di fare qualche previsione.
Attività 7: prevedi quali nuovi visitatori torneranno e faranno acquisti
Poi scriverai una query per prevedere quali nuovi visitatori torneranno per fare acquisti.
Esegui la query predittiva qui sotto che usa un modello di classificazione migliorato per prevedere la probabilità che un nuovo visitatore del Google Merchandise Store faccia un acquisto durante una visita successiva:
SELECT
*
FROM
ml.PREDICT(MODEL `ecommerce.classification_model_2`,
(
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
SELECT
CONCAT(fullvisitorid, '-',CAST(visitId AS STRING)) AS unique_session_id,
# labels
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# behavior on the site
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
totals.pageviews,
# where the visitor came from
trafficSource.source,
trafficSource.medium,
channelGrouping,
# mobile or desktop
device.deviceCategory,
# geographic
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE
# only predict for new visits
totals.newVisits = 1
AND date BETWEEN '20170701' AND '20170801' # test 1 month
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
)
)
ORDER BY
predicted_will_buy_on_return_visit DESC;
Le previsioni vengono fatte nell'ultimo mese (su 12 mesi) del set di dati.
Il tuo modello ora restituirà come output le previsioni che ha per quelle sessioni di e-commerce risalenti a luglio 2017. Puoi vedere tre nuovi campi:
predicted_will_buy_on_return_visit: se il modello pensa che il visitatore comprerà in un secondo momento (1 = sì)
predicted_will_buy_on_return_visit_probs.label: il classificatore binario per sì/no
predicted_will_buy_on_return_visit_probs.prob: l'affidabilità del modello nella sua previsione (1 = 100%)
Risultati
Del miglior 6% di visitatori alla prima visita (in ordine decrescente di probabilità prevista), oltre il 6% effettua un acquisto durante una visita successiva.
Questi utenti rappresentano quasi il 50% di tutti i visitatori alla prima visita che fanno un acquisto in una visita successiva.
In generale, solo lo 0,7% dei visitatori alla prima visita fa un acquisto durante una visita successiva.
Considerare il primo 6% di visitatori alla prima visita come target aumenta il ROI del marketing di 9 volte rispetto a un target generalizzato.
Informazioni aggiuntive
auc roc è solo una delle metriche di rendimento disponibili durante la valutazione del modello. Sono disponibili anche accuratezza, precisione e richiamo. Sapere a quale metrica di rendimento affidarsi dipende in gran parte dal tuo obiettivo o scopo generale.
Complimenti!
Hai creato un modello di machine learning utilizzando solo SQL.
Sfida
Riepilogo
Nelle due attività precedenti hai visto la capacità del feature engineering all'opera per migliorare le prestazioni dei nostri modelli. Tuttavia, potremmo riuscire a migliorare ulteriormente le nostre prestazioni esplorando altri tipi di modelli. Per i problemi di classificazione, BigQuery ML supporta anche i seguenti tipi di modelli:
Anche se il nostro modello di classificazione lineare (regressione logistica) ha fornito dei buoni risultati dopo il feature engineering, potrebbe essere troppo semplice per acquisire appieno la relazione tra le caratteristiche e l'etichetta. La tua sfida è creare un classificatore XGBoost utilizzando gli stessi set di dati ed etichette dell'Attività 6 per creare il modello ecommerce.classification_model_2.
Nota: Suggerimento: usa le seguenti opzioni per Boosted_Tree_Classifier:
1. L2_reg = 0.1
2. num_parallel_tree = 8
3. max_tree_depth = 10
Potresti dover consultare la documentazione al link di cui sopra per vedere la sintassi esatta. L'addestramento del modello richiederà circa 7 minuti. La soluzione si trova nella sezione omonima qui sotto se hai bisogno di aiuto nella scrittura della query.
Soluzione:
Questa è la soluzione di cui hai bisogno per creare un classificatore XGBoost:
CREATE OR REPLACE MODEL `ecommerce.classification_model_3`
OPTIONS
(model_type='BOOSTED_TREE_CLASSIFIER' , l2_reg = 0.1, num_parallel_tree = 8, max_tree_depth = 10,
labels = ['will_buy_on_return_visit']) AS
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
# add in new features
SELECT * EXCEPT(unique_session_id) FROM (
SELECT
CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id,
# labels
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# behavior on the site
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
totals.pageviews,
# where the visitor came from
trafficSource.source,
trafficSource.medium,
channelGrouping,
# mobile or desktop
device.deviceCategory,
# geographic
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE 1=1
# only predict for new visits
AND totals.newVisits = 1
AND date BETWEEN '20160801' AND '20170430' # train 9 months
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
);
Ora valutiamo il nostro modello e vediamo com'è andata:
#standardSQL
SELECT
roc_auc,
CASE
WHEN roc_auc > .9 THEN 'good'
WHEN roc_auc > .8 THEN 'fair'
WHEN roc_auc > .7 THEN 'not great'
ELSE 'poor' END AS model_quality
FROM
ML.EVALUATE(MODEL ecommerce.classification_model_3, (
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
# add in new features
SELECT * EXCEPT(unique_session_id) FROM (
SELECT
CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id,
# labels
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# behavior on the site
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
totals.pageviews,
# where the visitor came from
trafficSource.source,
trafficSource.medium,
channelGrouping,
# mobile or desktop
device.deviceCategory,
# geographic
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE 1=1
# only predict for new visits
AND totals.newVisits = 1
AND date BETWEEN '20170501' AND '20170630' # eval 2 months
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
)
));
La nostra auc roc è aumentata di circa 0,02%, per un valore approssimativo di 0,94!
Nota: i tuoi valori esatti saranno leggermente diversi per via della casualità del processo di addestramento.
È un piccolo cambiamento nella auc roc, ma tieni presente che, visto che una auc roc perfetta equivale a 1, diventa sempre più difficile migliorare la metrica quanto più ci si avvicina all'1.
Questo è un ottimo esempio di quanto è facile provare diversi tipi di modelli in BigQuery ML per valutarne le prestazioni. Siamo riusciti a usare un tipo di modello molto più complesso semplicemente cambiando una linea di SQL.
Una domanda legittima potrebbe essere: "Da dove vengono le scelte per queste opzioni?" e la risposta è: da esperimenti. Quando stai cercando di trovare il miglior tipo di modello per i tuoi problemi, è necessario sperimentare con diversi set di opzioni in un processo chiamato ottimizzazione degli iperparametri.
Concludiamo generando previsioni con il nostro modello migliorato e vediamo le sue prestazioni a confronto con quelli che abbiamo generato prima. Utilizzando un modello classificatore boosted tree, puoi osservare un leggero miglioramento dello 0,2% nella nostra AUC ROC rispetto al modello precedente. La query qui sotto farà una previsione di quali nuovi visitatori torneranno per fare un acquisto:
SELECT
*
FROM
ml.PREDICT(MODEL `ecommerce.classification_model_3`,
(
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
SELECT
CONCAT(fullvisitorid, '-',CAST(visitId AS STRING)) AS unique_session_id,
# labels
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# behavior on the site
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
totals.pageviews,
# where the visitor came from
trafficSource.source,
trafficSource.medium,
channelGrouping,
# mobile or desktop
device.deviceCategory,
# geographic
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE
# only predict for new visits
totals.newVisits = 1
AND date BETWEEN '20170701' AND '20170801' # test 1 month
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
)
)
ORDER BY
predicted_will_buy_on_return_visit DESC;
L'output ora mostra un modello di classificazione che può prevedere meglio la probabilità che un nuovo visitatore del Google Merchandise Store faccia un acquisto in una visita successiva.
Confrontando il risultato qui sopra con il modello precedente nell'Attività 7, puoi vedere che l'affidabilità del modello nelle sue previsioni è più accurata se messa a confronto con il tipo di modello regressione logistica.
Termina il lab
Una volta completato il lab, fai clic su Termina lab. Google Cloud Skills Boost rimuove le risorse che hai utilizzato ed esegue la pulizia dell'account.
Avrai la possibilità di inserire una valutazione in merito alla tua esperienza. Seleziona il numero di stelle applicabile, inserisci un commento, quindi fai clic su Invia.
Il numero di stelle corrisponde alle seguenti valutazioni:
1 stella = molto insoddisfatto
2 stelle = insoddisfatto
3 stelle = esperienza neutra
4 stelle = soddisfatto
5 stelle = molto soddisfatto
Se non vuoi lasciare un feedback, chiudi la finestra di dialogo.
Per feedback, suggerimenti o correzioni, utilizza la scheda Assistenza.
Copyright 2026 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.
I lab creano un progetto e risorse Google Cloud per un periodo di tempo prestabilito
I lab hanno un limite di tempo e non possono essere messi in pausa. Se termini il lab, dovrai ricominciare dall'inizio.
In alto a sinistra dello schermo, fai clic su Inizia il lab per iniziare
Utilizza la navigazione privata
Copia il nome utente e la password forniti per il lab
Fai clic su Apri console in modalità privata
Accedi alla console
Accedi utilizzando le tue credenziali del lab. L'utilizzo di altre credenziali potrebbe causare errori oppure l'addebito di costi.
Accetta i termini e salta la pagina di ripristino delle risorse
Non fare clic su Termina lab a meno che tu non abbia terminato il lab o non voglia riavviarlo, perché il tuo lavoro verrà eliminato e il progetto verrà rimosso
Questi contenuti non sono al momento disponibili
Ti invieremo una notifica via email quando sarà disponibile
Bene.
Ti contatteremo via email non appena sarà disponibile
Un lab alla volta
Conferma per terminare tutti i lab esistenti e iniziare questo
Utilizza la navigazione privata per eseguire il lab
Il modo migliore per eseguire questo lab è utilizzare una finestra del browser in incognito o privata. Ciò evita eventuali conflitti tra il tuo account personale e l'account studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
Vuoi creare modelli ML solo con SQL? Scopri come con BigQuery ML su questo set di dati per l'e-commerce di Google Analytics
Durata:
Configurazione in 0 m
·
Accesso da 80 m
·
Completamento in 70 m