arrow_back

Kaufverhalten von Websitebesuchern mit einem Klassifizierungsmodell in BigQuery ML vorhersagen

Anmelden Teilnehmen
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Kaufverhalten von Websitebesuchern mit einem Klassifizierungsmodell in BigQuery ML vorhersagen

Lab 1 Stunde 15 Minuten universal_currency_alt No cost show_chart Mittelstufe
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP229

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Übersicht

BigQuery ist eine vollständig verwaltete, automatisierte und kostengünstige Analysedatenbank von Google. Mit diesem Tool können Sie mehrere Terabyte an Daten abfragen und müssen dabei weder eine Infrastruktur verwalten, noch benötigen Sie einen Datenbankadministrator. BigQuery basiert auf SQL und die Abrechnung erfolgt nach dem Modell „Pay as you go“. Mithilfe von BigQuery können Sie sich auf die Datenanalyse konzentrieren und wichtige Informationen erhalten.

BigQuery ML ist ein Feature in BigQuery, mit dem Datenanalysten bei minimalem Programmieraufwand Machine-Learning-Modelle erstellen, trainieren, bewerten und für Vorhersagen verwenden können.

In diesem Lab arbeiten Sie in BigQuery mit einem speziellen E‑Commerce-Dataset, das Millionen von Google Analytics-Datensätzen des Google Merchandise Store enthält. Sie erstellen mit diesen Daten ein Klassifizierungsmodell (logistische Regression) in BigQuery ML, mit dem das Kaufverhalten von Kunden vorhergesagt wird.

Lerninhalte

Aufgaben in diesem Lab:

  • Mit BigQuery nach öffentlichen Datasets suchen
  • Das E-Commerce-Dataset erkunden und abfragen
  • Ein Trainings- und Bewertungs-Dataset zur Batch-Vorhersage erstellen
  • Ein Klassifizierungsmodell (logistische Regression) mit BigQuery ML erstellen
  • Die Leistung des ML‑Modells (Machine Learning) bewerten und verbessern
  • Die Wahrscheinlichkeit vorhersagen und einstufen, ob ein Besucher etwas kauft oder nicht

Einrichtung und Anforderungen

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange die Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus, um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Wenn Sie über ein persönliches Google Cloud-Konto oder -Projekt verfügen, verwenden Sie es nicht für dieses Lab. So werden zusätzliche Kosten für Ihr Konto vermieden.

Lab starten und bei der Google Cloud Console anmelden

  1. Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich Details zum Lab mit diesen Informationen:

    • Schaltfläche Google Cloud Console öffnen
    • Restzeit
    • Temporäre Anmeldedaten für das Lab
    • Ggf. weitere Informationen für dieses Lab
  2. Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).

    Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite Anmelden geöffnet.

    Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.

    Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
  3. Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.

    {{{user_0.username | "Username"}}}

    Sie finden den Nutzernamen auch im Bereich Details zum Lab.

  4. Klicken Sie auf Weiter.

  5. Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.

    {{{user_0.password | "Password"}}}

    Sie finden das Passwort auch im Bereich Details zum Lab.

  6. Klicken Sie auf Weiter.

    Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
  7. Klicken Sie sich durch die nachfolgenden Seiten:

    • Akzeptieren Sie die Nutzungsbedingungen.
    • Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
    • Melden Sie sich nicht für kostenlose Testversionen an.

Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.

Hinweis: Wenn Sie sich eine Liste der Google Cloud-Produkte und ‑Dienste ansehen möchten, klicken Sie oben links auf das Navigationsmenü. Symbol für Navigationsmenü

Die BigQuery Console öffnen

  1. Klicken Sie in der Google Cloud Console im Navigationsmenü auf BigQuery.

Zuerst wird das Fenster Willkommen bei BigQuery in der Cloud Console geöffnet, das neben allgemeinen Informationen auch einen Link zur Kurzanleitung und zu den Versionshinweisen enthält.

  1. Klicken Sie auf Fertig.

Die BigQuery Console wird geöffnet.

Auf das Dataset für diesen Kurs zugreifen

  1. Klicken Sie im Bereich Explorer auf + HINZUFÜGEN.

Der Bereich Daten hinzufügen wird geöffnet.

  1. Klicken Sie unter „Zusätzliche Quellen“ auf Projekt nach Namen markieren.

  2. Geben Sie data-to-insights ein und klicken Sie auf Markieren.

Projektansicht von BigQuery

Klicken Sie auf den folgenden direkten Link, um das öffentliche Projekt data-to-insights aufzurufen:

Die Felddefinitionen für das E-Commerce-Dataset im Projekt data-to-insights finden Sie unter diesem Link. Lassen Sie den Artikel in einem neuen Tab geöffnet, um später darauf zugreifen zu können.

Klicken Sie auf den Tab Abfrage und wählen Sie dann In neuem Tab aus, um den Abfrageeditor zu öffnen.

Aufgabe 1: Das E-Commerce-Dataset untersuchen

Szenario: Ihr Datenanalyseteam hat Google Analytics-Protokolle für eine E-Commerce-Website in BigQuery importiert und eine neue Tabelle mit allen Rohdaten zu Besuchersitzungen erstellt, die Sie sich nun ansehen können. Mithilfe dieser Daten möchten Sie einige Fragen beantworten.

Frage: Wie hoch ist der Prozentsatz der Websitebesucher, die etwas gekauft haben?

  1. Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrageeditor von BigQuery ein:
#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
  1. Klicken Sie auf Ausführen.

Das Ergebnis: 2,69 %.

Frage: Welche fünf Produkte werden am häufigsten verkauft?

  1. Löschen Sie die vorherige Abfrage und führen Sie dann die folgende Abfrage im Editor aus:
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;
  1. Klicken Sie auf Ausführen.

Das Ergebnis:

Zeile

v2ProductName

v2ProductCategory

units_sold

revenue

1

Nest® Learning Thermostat 3rd Gen-USA - Stainless Steel

Nest-USA

17651

870976.95

2

Nest® Cam Outdoor Security Camera - USA

Nest-USA

16930

684034.55

3

Nest® Cam Indoor Security Camera - USA

Nest-USA

14155

548104.47

4

Nest® Protect Smoke + CO White Wired Alarm-USA

Nest-USA

6394

178937.6

5

Nest® Protect Smoke + CO White Battery Alarm-USA

Nest-USA

6340

178572.4

Frage: Wie viele Besucher haben bei einem erneuten Besuch der Website etwas gekauft?

  1. Löschen Sie die vorherige Abfrage und führen Sie dann die folgende Abfrage im Editor aus:
# 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
  1. Klicken Sie auf Ausführen.

Das Ergebnis:

Zeile

total_visitors

will_buy_on_return_visit

1

729848

0

2

11873

1

Bei der Analyse der Ergebnisse sehen Sie, dass 11.873 von 741.721 Besuchern (ca. 1,6 %) zur Website zurückkehren und etwas kaufen. Hierbei sind auch diejenigen berücksichtigt, die schon beim ersten Besuch etwas gekauft haben.

Frage: Aus welchen Gründen stöbert ein typischer E-Commerce-Kunde beim ersten Mal nur und kauft erst bei einem späteren Besuch?

Antwort: Die eine richtige Antwort gibt es nicht. Oftmals möchten Kunden aber vor der Kaufentscheidung die Preise auf verschiedenen E-Commerce-Seiten vergleichen und sich umfassend informieren. Dieses Verhalten ist bei Luxusgütern sehr üblich, z. B. bei Autokäufen, bei denen im Vorfeld viele Informationen eingeholt und Vergleiche gemacht werden. In einem geringeren Ausmaß spielt dies aber auch bei den Merchandise-Artikeln auf dieser Website (T-Shirts oder Accessoires) eine Rolle.

Beim Onlinemarketing kommt es darauf an, diese zukünftigen Kunden beim ersten Besuch am Verhalten zu erkennen und gezielt anzusprechen, denn so können Sie die Conversion-Rate erhöhen und die Abwanderung zu Websites von Mitbewerbern reduzieren.

Aufgabe 2: Ziel festlegen

Jetzt erstellen Sie in BigQuery ein ML-Modell, um vorherzusagen, wie wahrscheinlich es ist, dass ein neuer Besucher in Zukunft etwas kauft. Dieses Wissen kann dem Marketingteam dabei helfen, Besucher gezielt mit Sonderaktionen und Werbekampagnen anzusprechen. Da Nutzer verschiedene Angebote miteinander vergleichen, können Sie sie auf diesem Weg für Ihre E‑Commerce-Website als Kunden gewinnen (Conversion).

Aufgabe 3: Features auswählen und Trainings-Dataset erstellen

In Google Analytics werden beim Besuch eines Nutzers auf der E-Commerce-Website viele Dimensionen und Kennzahlen erfasst. Im Artikel [UA] BigQuery Export-Schema finden Sie eine vollständige Übersicht der Felder. Anschließend können Sie eine Vorschau des Demo-Datasets aufrufen. Darin finden Sie für das ML‑Modell nützliche Features, mit denen deutlich wird, welcher Zusammenhang zwischen dem ersten Websitebesuch eines Nutzers und der Wahrscheinlichkeit besteht, dass er bei einem späteren Besuch etwas kauft.

Ihr Team möchte testen, ob sich diese beiden Felder für das Klassifizierungsmodell eignen:

  • totals.bounces: gibt an, ob der Besucher die Website sofort verlassen hat
  • totals.timeOnSite: gibt an, wie lange der Besucher auf der Website war

Frage: Welche Risiken bestehen, wenn nur die beiden Felder oben verwendet werden?

Antwort: Ein ML-Modell ist nur so gut wie die Trainingsdaten, mit denen es gefüttert wird. Es benötigt genügend Informationen darüber, ob ein Besucher später einen Kauf getätigt hat. Nur so kann es den Zusammenhang zwischen den Eingabemerkmalen und dem Label ermitteln und lernen. Andernfalls kann die Accuracy nicht verbessert werden. Wenn Sie das Modell zu Beginn nur mit diesen beiden Feldern trainieren, finden Sie mit der Zeit heraus, ob sie für ein präzises Modell ausreichen.

  • Führen Sie im Editor von BigQuery folgende Abfrage aus:
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;

Das Ergebnis:

Zeile

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

Frage: In welchen Feldern stehen die Eingabemerkmale und das Label?

Antwort: Die Eingabevariablen sind bounces und time_on_site. Das Label heißt will_buy_on_return_visit.

Frage: Die Daten welcher beiden Felder sind nach dem ersten Besuch eines Nutzers bekannt?

Antwort: Das sind die Werte in den Feldern bounces und time_on_site.

Frage: Für welches Feld können die Daten erst später erhoben werden?

Antwort: Die Werte für will_buy_on_return_visit sind nach dem ersten Besuch noch nicht bekannt. Denken Sie daran: Sie treffen Voraussagen für eine Untergruppe der Nutzer, nämlich die, die zu Ihrer Website zurückgekehrt sind und etwas gekauft haben. Da Ihnen das zukünftige Verhalten zum Zeitpunkt der Vorhersage nicht bekannt ist, können Sie nicht mit Sicherheit sagen, ob ein neuer Besucher dies auch tun wird. Der Wert eines ML-Modells besteht darin, dass Sie auf Grundlage der gewonnenen Daten aus der ersten Sitzung die Wahrscheinlichkeit eines späteren Kaufs ermitteln können.

Frage: Sehen Sie sich die ersten Ergebnisse an. Finden Sie, dass time_on_site und bounces gute Indikatoren dafür sind, ob Besucher später zurückkehren und etwas kaufen?

Antwort: Dies lässt sich vor dem Trainieren und Bewerten eines ML-Modells schwer sagen. Sie sehen jedoch auf den ersten Blick, dass von den zehn Nutzern, die am längsten auf der Website waren (time_on_site), nur einer zurückgekehrt ist und etwas gekauft hat. Das ist nicht sehr vielversprechend. Sehen wir uns nun an, wie gut das Modell ist.

Aufgabe 4: BigQuery-Dataset zum Speichern von Modellen erstellen

Jetzt erstellen Sie ein Dataset in BigQuery, in dem auch Ihre ML-Modelle gespeichert werden.

  1. Klicken Sie im linken Bereich unter Explorer neben dem Namen des Projekts (beginnt mit qwiklabs-gcp-…) auf das Symbol Aktionen ansehen. Klicken Sie dann auf Dataset erstellen.

Abschnitt „Explorer“

  1. Gehen Sie im Dialogfeld Dataset erstellen so vor:
  • Geben Sie für Dataset-ID den String „ecommerce“ ein.
  • Übernehmen Sie für alle anderen Werte die Standardeinstellung.
  1. Klicken Sie auf Dataset erstellen.

Klicken Sie auf Fortschritt prüfen.

Neues Dataset erstellen

Aufgabe 5: BigQuery ML-Modelltyp auswählen und Optionen festlegen

Nachdem Sie die Ausgangsmerkmale ausgewählt haben, können Sie nun Ihr erstes ML-Modell in BigQuery erstellen.

Sie haben die Wahl zwischen den folgenden beiden Modelltypen:

Modell

Modelltyp

Label-Datentyp

Beispiel

Vorhersage

linear_reg

Numerischer Wert (normalerweise eine Ganzzahl oder eine Gleitkommazahl)

Verkäufe für das nächste Jahr anhand bisheriger Verkaufsdaten vorhersagen

Klassifikation

logistic_reg

0 oder 1 für binäre Klassifikation

E-Mails anhand des Kontextes als „Spam“ oder „Kein Spam“ klassifizieren

Hinweis: Für Machine Learning werden viele weitere Modelltypen verwendet, z. B. neuronale Netzwerke und Entscheidungsbäume. Sie sind in Bibliotheken wie TensorFlow verfügbar. Bei BigQuery ML stehen derzeit jedoch nur die beiden oben genannten Modelltypen zur Verfügung.

Für welchen Modelltyp sollten Sie sich entscheiden?

Da Sie Besucher in „wird in Zukunft kaufen“ oder „wird in Zukunft nicht kaufen“ einteilen, verwenden Sie logistic_reg in einem Klassifizierungsmodell.

Die folgende Abfrage erstellt ein Modell und gibt die Modelloptionen an.

  1. Führen Sie diese Abfrage aus, um das Modell zu trainieren:
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) ;
  1. Warten Sie fünf bis zehn Minuten.
Hinweis: Sie können während des Trainings nicht alle verfügbaren Daten in das Modell einspeisen, da Sie einige ungesehene Datenpunkte für das Testen und Bewerten des ML‑Modells speichern müssen. Fügen Sie dazu eine WHERE-Klausel hinzu, um nur die Daten für die ersten neun Monate aus dem Zwölf-Monats-Dataset herauszufiltern und das Modell damit zu trainieren.

Klicken Sie auf Fortschritt prüfen.

Modell erstellen und Modelloptionen festlegen

Sie werden mit folgender Benachrichtigung darüber informiert, dass der Vorgang abgeschlossen ist und das Modell erfolgreich trainiert wurde: „This statement created a new model named qwiklabs-gcp-xxxxxxxxx:ecommerce.classification_model.“

  1. Klicken Sie auf Weiter zum Modell.

  2. Prüfen Sie, ob classification_model im E-Commerce-Dataset angezeigt wird.

E‑Commerce-Dataset

Als Nächstes bewerten Sie die Leistung des Modells anhand neuer, ungesehener Bewertungsdaten.

Aufgabe 6: Leistung eines Klassifizierungsmodells bewerten

Leistungskriterien auswählen

Bei der Klassifizierung in ML-Modellen sollten Sie die Falsch-Positiv-Rate minimieren und die Richtig-Positiv-Rate maximieren. Erstere gibt an, wie oft falsch vorhergesagt wurde, dass der Nutzer zurückkehrt und etwas kauft, und Letztere, wie oft diese Vorhersage zutraf.

Das Verhältnis zwischen beiden Werten wird wie hier im Beispiel mit einer ROC-Kurve (Receiver Operating Characteristic, Grenzwertoptimierung) dargestellt. Sie sollten versuchen, die Fläche unter der Kurve (Area Under the Curve, AUC) zu maximieren:

ROC-Kurve

Bei BigQuery ML ist roc_auc einfach ein abfragbares Feld für die Bewertung Ihres trainierten ML-Modells.

  • Da die Trainingsphase nun abgeschlossen ist, führen Sie die folgende Abfrage aus, um die Leistung Ihres Modells mithilfe von ML.EVALUATE zu bewerten:
SELECT roc_auc, CASE WHEN roc_auc > .9 THEN 'good' WHEN roc_auc > .8 THEN 'fair' WHEN roc_auc > .7 THEN 'decent' WHEN roc_auc > .6 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) ));

Sie sollten folgendes Ergebnis sehen:

Zeile

roc_auc

model_quality

1

0,7238561438561438

decent

Nach der Bewertung des Modells erhalten Sie für roc_auc den Wert 0,72. Dies bedeutet, dass das Modell eine annehmbare, jedoch keine hervorragende Vorhersagekraft hat. Da es das Ziel ist, die Fläche unterhalb der Kurve so stark wie möglich an den Wert 1,0 anzunähern, besteht noch Verbesserungsbedarf.

Klicken Sie auf Fortschritt prüfen.

Leistung eines Klassifizierungsmodells bewerten

Aufgabe 7: Modellleistung mit Feature Engineering verbessern

Wie bereits angedeutet, enthält das Dataset viele weitere Features. Sie helfen dem Modell, den Zusammenhang besser zu verstehen, der zwischen dem ersten Besuch eines Nutzers und der Wahrscheinlichkeit besteht, dass er bei einem nachfolgenden Besuch etwas kaufen wird.

  1. Fügen Sie einige Features hinzu und erstellen Sie ein zweites ML-Modell namens classification_model_2:
  • Schritt des Bezahlvorgangs, bis zu dem der Nutzer beim ersten Besuch gelangt ist
  • Quelle, über die der Besucher zur Website gelangt ist: organische Suche, verweisende Website usw.
  • Verwendetes Gerät: Smartphone, Tablet, Computer
  • Geografische Informationen (Land)
  1. Klicken Sie zum Erstellen dieses zweiten Modells auf das „+“-Symbol (Neue Abfrage erstellen):
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, IFNULL(totals.pageviews, 0) AS 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 ); Hinweis: Auch dieses neue Modell trainieren Sie auf Grundlage der Daten aus den ersten neun Monaten. Es ist wichtig, dass Sie dasselbe Dataset für das Training verwenden. So haben Sie Gewissheit, dass eine bessere Ausgabe des Modells auf bessere Eingabefeatures und nicht auf neue Trainingsdaten zurückzuführen ist.

Ein neues wichtiges Feature, das der Abfrage des Trainings-Datasets hinzugefügt wurde, ist der Schritt des Bezahlvorgangs, bis zu dem jeder Besucher während der Sitzung gelangt ist. Der entsprechende Wert wird im Feld hits.eCommerceAction.action_type angezeigt. Wenn Sie in den Felddefinitionen nach diesem Feld suchen, sehen Sie, dass der Wert 6 einem abgeschlossenen Kauf entspricht.

Hinweis: Das Webanalyse-Dataset enthält noch verschachtelte oder wiederkehrende Felder wie ARRAYS, die aufgeteilt und in verschiedene Zeilen in Ihr Dataset eingespeist werden müssen. Dies erreichen Sie mit der UNNEST()-Funktion, die Sie in der obigen Abfrage sehen.
  1. Warten Sie, bis die Trainingsphase für das neue Modell beendet ist. Dies dauert fünf bis zehn Minuten.

Klicken Sie auf Fortschritt prüfen.

Modellleistung mit Feature Engineering verbessern (Zweites Modell erstellen)
  1. Testen Sie das neue Modell auf seine Vorhersagequalität:
#standardSQL SELECT roc_auc, CASE WHEN roc_auc > .9 THEN 'good' WHEN roc_auc > .8 THEN 'fair' WHEN roc_auc > .7 THEN 'decent' WHEN roc_auc > .6 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 ) ));

Ausgabe:

Zeile

roc_auc

model_quality

1

0,9094875124875125

good

Mit diesem Modell erhalten Sie für roc_auc den Wert 0,91, also eine deutliche Verbesserung gegenüber dem ersten Modell.

Anhand des trainierten ML-Modells können Sie nun einige Vorhersagen treffen.

Klicken Sie auf Fortschritt prüfen.

Modellleistung mit Feature Engineering verbessern (Bessere Vorhersagekraft)

Aufgabe 8: Vorhersagen, welche neuen Besucher später zurückkehren und etwas kaufen

Als Nächstes schreiben Sie eine Abfrage, um vorherzusagen, welche neuen Besucher des Google Merchandise Store später zurückkehren und etwas kaufen.

  • Für diese Abfrage wird das verbesserte Klassifizierungsmodell verwendet, das wir zuvor trainiert haben.
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;

Die Vorhersage wird für den letzten der zwölf Monate aus dem Dataset erstellt.

Klicken Sie auf Fortschritt prüfen.

Vorhersagen, welche neuen Besucher später zurückkehren und etwas kaufen

Das Modell gibt jetzt die Vorhersagen für die Besuche auf der E-Commerce-Website im Juli 2017 aus. Sie sehen drei neu hinzugefügte Felder:

  • predicted_will_buy_on_return_visit: gibt an, ob der Besucher laut dem Modell später etwas kaufen wird (1 = ja)
  • predicted_will_buy_on_return_visit_probs.label: gibt das binäre Klassifizierungskriterium an (ja/nein)
  • predicted_will_buy_on_return_visit.probs.prob: gibt an, wie das Modell die Richtigkeit der eigenen Vorhersage bewertet (1 = 100 %)

Seite „Abfrageergebnisse“ mit Tabs

Aufgabe 9: Ergebnisse analysieren und weitere Informationen

Ergebnisse

  • Von den obersten 6 % der Erstbesucher der Website (sortiert in absteigender Reihenfolge der vorhergesagten Wahrscheinlichkeit) kaufen mehr als 6 % später etwas.
  • Diese Nutzer machen fast 50 % aller Erstbesucher aus, die bei einem späteren Besuch etwas kaufen.
  • Insgesamt kaufen nur 0,7 % der Erstbesucher bei einem späteren Besuch etwas.
  • Durch gezieltes Ansprechen der obersten 6 % der Erstbesucher lässt sich der Marketing-ROI gegenüber allgemeiner Werbung um das Neunfache steigern.

Weitere Informationen

Tipp: Fügen Sie den Modelloptionen warm_start = true hinzu, wenn Sie ein bestehendes Modell mit neuen Daten trainieren. So lässt sich die Trainingszeit des Modells verkürzen. Es ist jedoch nicht möglich, die Merkmalspalten zu ändern. Dazu wäre ein neues Modell nötig.

roc_auc ist nur einer der Messwerte, mit denen sich die Leistung des Modells bewerten lässt. Weitere Messwerte sind Accuracy, Precision und Recall. Welcher Messwert in Ihrem Fall am besten geeignet ist, hängt sehr stark von Ihrem Ziel ab.

Weitere Datasets

Verwenden Sie das Projekt bigquery-public-data, wenn Sie das Erstellen von Modellen an anderen Datasets üben möchten, z. B. an einem Prognosemodell für Taxikosten.

  1. Klicken Sie zum Öffnen des Datasets bigquery-public-data auf +Hinzufügen. Klicken Sie unter „Zusätzliche Quellen“ auf Projekt nach Namen markieren.
  2. Geben Sie dann den Namen bigquery-public-data ein.
  3. Klicken Sie auf Markieren.

Das Projekt bigquery-public-data wird im Abschnitt „Explorer“ aufgelistet.

Aufgabe 10: Wissen testen

In unserem Quiz können Sie Ihr Wissen über die Google Cloud Platform testen.

Das wars! Sie haben das Lab erfolgreich abgeschlossen.

Sie haben in BigQuery ML ein Machine-Learning-Modell erstellt, mit dem sich Besucher einer E-Commerce-Website klassifizieren lassen und ihr Kaufverhalten vorhersagen lässt.

Weitere Informationen

Google Cloud-Schulungen und -Zertifizierungen

In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.

Anleitung zuletzt am 7. Februar 2024 aktualisiert

Lab zuletzt am 9. Oktober 2023 getestet

© 2024 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.