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.
Inhalt
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, z. B. Chrome oder Firefox
- Grundkenntnisse in SQL oder BigQuery
- BQML-Dokumentation
2. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte 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 in diesem Codelab später als PROJECT_ID
bezeichnet.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.
Dieses Codelab sollte möglichst wenig kosten. Folgen Sie der Anleitung im Abschnitt „Bereinigen“, . Hier erfahren Sie, wie Sie Ressourcen herunterfahren, damit Ihnen über dieses Tutorial hinaus keine Kosten entstehen. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.
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.
Geben Sie dem Dataset als Nächstes den Namen bqml_codelab und klicken Sie auf „OK“.
4. Modell erstellen
Logistische Regression für Analytics 360
Machen wir mit unserer Aufgabe weiter. So erstellen Sie ein Modell, um vorherzusagen, 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;
Hier werden das Betriebssystem des Besuchergeräts, das Land des Besuchers und die Anzahl der Seitenaufrufe als Kriterien dafür verwendet, ob es sich um ein Mobilgerät handelt.
In diesem Fall „Codelab“ ist der Name des Datasets und „sample_model“. ist der Name unseres Modells. Der angegebene Modelltyp ist binäre logistische Regression. In diesem Fall versuchen wir, label
anzupassen. Wenn Sie nur an einer Spalte interessiert sind, ist dies eine alternative Möglichkeit, um input_label_cols
festzulegen. Außerdem beschränken wir unsere Trainingsdaten auf die Daten, die zwischen dem 1. August 2016 und dem 31. Juni 2017 erfasst wurden. Dadurch werden die Daten des letzten Monats für die "Vorhersage" gespeichert. Darüber hinaus beschränken wir die Anzahl auf 100.000 Datenpunkte, um Zeit zu sparen. Wenn Sie nicht eilig sind, können Sie auch die letzte Zeile entfernen.
Beim 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
Bei Interesse können Sie Informationen zum Modell abrufen, indem Sie in der Benutzeroberfläche unter dem Dataset „bqml_codelab“ auf „sample_model“ klicken. Unter Details finden Sie einige grundlegende Modellinformationen und Trainingsoptionen, die zum Erstellen des Modells verwendet werden. 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
. Sehen Sie im Glossar zum maschinellen Lernen nach oder führen Sie eine Google-Suche durch, um zu verstehen, wie die einzelnen Messwerte berechnet werden und was sie bedeuten.
Sie werden feststellen, dass die Teile SELECT
und FROM
der Abfrage mit denen identisch sind, die während des Trainings verwendet wurden. Der Abschnitt WHERE
spiegelt die Änderung des Zeitraums wider, der Teil FROM
zeigt, dass ml.EVALUATE
aufgerufen wird. Die Tabelle sollte etwa so aussehen:
6. Modell verwenden
Käufe pro Land vorhersagen
Hier versuchen wir, die Anzahl der Transaktionen von Besuchern der einzelnen Länder vorherzusagen, die Ergebnisse zu sortieren und die zehn wichtigsten Länder nach Käufen auszuwählen.
#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;
Beachten Sie, dass diese Abfrage der Bewertungsabfrage sehr ähnlich ist, die wir im vorherigen Abschnitt gezeigt haben. Anstelle von ml.EVALUATE
verwenden wir hier ml.PREDICT
und umschließen den BQML-Teil der Abfrage mit Standard-SQL-Befehlen. Konkret interessieren wir uns für das Land und die Summe der Käufe für jedes Land. Wir SELECT
, GROUP BY
und ORDER BY
. LIMIT
wird hier verwendet, damit wir nur die ersten zehn Ergebnisse 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 ersten zehn Besucher nach Transaktionen auszuwählen.
#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? Versuchen Sie, ein lineares Regressionsmodell mit BQML zu erstellen.
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.