Erste Schritte mit BigQuery ML

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

2. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten Lernen einrichten

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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.

  1. 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ü.

select-bq_0.png

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

select-bq.png

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

8b0218390329e8cf.png

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.

4f51bf57291a59db.png

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

63e32478a5652fbc.png

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:

b8bd9548a0d89165.png

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:

1c7779f6028730cc.png

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:

e639f7a409741dcb.png

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:

2be1d8fa96e10178.png

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