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.

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

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte 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 in diesem Codelab später als PROJECT_ID bezeichnet.

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

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

Geben Sie dem Dataset als Nächstes den Namen bqml_codelab und klicken Sie auf „OK“.

63e32478a5652fbc.png

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:

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

1c7779f6028730cc.png

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:

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 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:

2be1d8fa96e10178.png

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