1. Übersicht
Mit BigQuery ML (BQML) können Nutzer mithilfe von SQL-Abfragen Modelle für maschinelles Lernen in BigQuery erstellen und ausführen. Dadurch, dass SQL-Experten Modelle mit bereits vorhandenen Tools erstellen können, ohne sich neues Wissen aneignen zu müssen, soll das Machine Learning demokratisiert werden. BigQuery ML erhöht die Entwicklungsgeschwindigkeit, da Daten nicht mehr verschoben werden müssen.
Umfang
Sie verwenden das Analytics 360-Beispiel-Dataset, um ein Modell zu erstellen, das vorhersagt, ob ein Besucher eine Transaktion vornehmen wird.
Lerninhalte
Modelle für maschinelles Lernen in BigQuery erstellen, bewerten und verwenden
Voraussetzungen
- Ein Browser wie Google Chrome oder Mozilla Firefox
- Grundkenntnisse in SQL oder BigQuery
- BQML-Dokumentation
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird später in diesem Codelab als PROJECT_ID bezeichnet.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.
Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Folgen Sie bitte der Anleitung im Abschnitt „Bereinigen“, in der Sie erfahren, wie Sie Ressourcen herunterfahren können, damit nach Abschluss dieser Anleitung keine Gebühren anfallen. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.
BigQuery-Konsole öffnen
Klicken Sie in der Google Developer Console oben links auf das Symbol Menü.

Scrollen Sie im Menü nach unten und klicken Sie auf BigQuery:

Die BigQuery-Konsole wird in einem neuen Browser-Tab geöffnet:

Aber hier drin ist nichts? Glücklicherweise gibt es in BigQuery zahlreiche öffentliche Datasets, die Sie durchsuchen können.
3. Dataset erstellen
Klicken Sie zum Erstellen eines Datasets auf den Pfeil neben Ihrem Projektnamen und wählen Sie Neues Dataset erstellen aus.

Benennen Sie Ihr Dataset als „bqml_codelab“ und klicken Sie auf „OK“.

4. Modell erstellen
Logistische Regression für Analytics 360
Kommen wir nun zu unserer Aufgabe. So erstellen Sie ein Modell, das vorhersagt, ob ein Besucher eine Transaktion vornehmen wird:
#standardSQL CREATE OR REPLACE MODEL `bqml_codelab.sample_model` OPTIONS(model_type='logistic_reg') AS SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20160801' AND '20170631' LIMIT 100000;
Als Kriterien dafür, ob eine Transaktion vorgenommen wurde, werden hier herangezogen: das Betriebssystem vom Gerät des Besuchers, ob es sich um ein Mobilgerät handelt, das Land des Besuchers und die Anzahl der Seitenaufrufe.
In diesem Fall ist „codelab“ der Name des Datasets und „sample_model“ der Name unseres Modells. Der angegebene Modelltyp ist binäre logistische Regression. In diesem Fall ist label das, was wir versuchen anzupassen. Wenn Sie nur an einer Spalte interessiert sind, ist dies eine alternative Möglichkeit, input_label_cols festzulegen. Außerdem beschränken wir unsere Trainingsdaten auf Daten, die vom 1. August 2016 bis zum 30. Juni 2017 gesammelt wurden. Dies geschieht, um den letzten Monat der Daten für eine „Vorhersage“ zu nehmen. Außerdem sind sie auf 100.000 Datenpunkte begrenzt, um Zeit zu sparen. Wenn Sie es nicht eilig haben, können Sie die letzte Zeile entfernen.
Durch Ausführen des Befehls CREATE MODEL wird ein Abfragejob erstellt, der asynchron ausgeführt wird, sodass Sie beispielsweise das BigQuery-Fenster schließen oder aktualisieren können.
[Optional] Modellinformationen und Trainingsstatistiken
Wenn Sie daran interessiert sind, können Sie Informationen zum Modell abrufen. Klicken Sie dazu in der Benutzeroberfläche unter dem Dataset „bqml_codelab“ auf „sample_model“. Unter Details finden Sie einige grundlegende Modellinformationen und Trainingsoptionen, mit denen das Modell erstellt wird. Unter Trainingsstatistiken sollte eine Tabelle ähnlich der folgenden angezeigt werden:

5. Modell bewerten
Modell bewerten
#standardSQL SELECT * FROM ml.EVALUATE(MODEL `bqml_codelab.sample_model`, ( SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'));
Bei Verwendung mit einem linearen Regressionsmodell gibt die obige Abfrage die folgenden Spalten zurück: mean_absolute_error, mean_squared_error, mean_squared_log_error, median_absolute_error, r2_score, explained_variance. Bei Verwendung mit einem logistischen Regressionsmodell gibt die obige Abfrage die folgenden Spalten zurück: precision, recall, accuracy, f1_score, log_loss, roc_auc. Lesen Sie das Glossar zum maschinellen Lernen oder führen Sie eine Google-Suche durch, um zu verstehen, wie jede dieser Metriken berechnet wird und was sie bedeuten.
Sie sehen, dass die SELECT- und FROM-Abschnitte der Abfrage mit denen identisch sind, die während des Trainings verwendet wurden. Der WHERE-Abschnitt gibt die Änderung des Zeitrahmens wieder. Der FROM-Abschnitt gibt an, dass wir ml.EVALUATE aufrufen. Die Tabelle sollte etwa so aussehen:

6. Modell verwenden
Käufe pro Land vorhersagen
Hier versuchen wir, die Anzahl der von Besuchern eines Landes vorgenommenen Transaktionen vorherzusagen, die Ergebnisse zu sortieren und die ersten zehn Länder nach Käufen zurückzugeben.
#standardSQL SELECT country, SUM(predicted_label) as total_predicted_purchases FROM ml.PREDICT(MODEL `bqml_codelab.sample_model`, ( SELECT IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801')) GROUP BY country ORDER BY total_predicted_purchases DESC LIMIT 10;
Diese Abfrage ähnelt der im vorherigen Abschnitt beschriebenen Bewertungsabfrage sehr. Anstelle von ml.EVALUATE verwenden wir hier ml.PREDICT und der BQML-Abschnitt der Abfrage ist mit Standard-SQL-Befehlen umschlossen. Konkret interessieren wir uns für das Land und die Summe der Käufe für jedes Land. Deshalb werden SELECT, GROUP BY und ORDER BY verwendet. Hier wird LIMIT verwendet, um nur die ersten zehn Ergebnisse zu erhalten. Die Tabelle sollte etwa so aussehen:

Käufe pro Nutzer vorhersagen
Hier ist ein weiteres Beispiel. Dieses Mal versuchen wir, die Anzahl der Transaktionen jedes Besuchers vorherzusagen, die Ergebnisse zu sortieren und die zehn Besucher mit den meisten Transaktionen zurückzugeben:
#standardSQL SELECT fullVisitorId, SUM(predicted_label) as total_predicted_purchases FROM ml.PREDICT(MODEL `bqml_codelab.sample_model`, ( SELECT IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country, fullVisitorId FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801')) GROUP BY fullVisitorId ORDER BY total_predicted_purchases DESC LIMIT 10;
Die Tabelle sollte etwa so aussehen:

7. Glückwunsch!
Sie haben dieses Codelab abgeschlossen. Lust auf eine Herausforderung? Erstellen Sie ein lineares Regressionsmodell mit BQML.
Behandelte Themen
- Binäres logistisches Regressionsmodell erstellen
- Modell bewerten
- Mithilfe des Modells Vorhersagen treffen
Nächste Schritte
- Weitere Informationen zu BQML finden Sie in der Dokumentation.