Modelle für maschinelles Lernen in BigQuery ML erstellen
In dieser Anleitung erfahren Sie, wie Sie mithilfe von BigQuery ML in der Google Cloud Console ein logistisches Regressionsmodell erstellen.
Mit BigQuery ML können Sie mithilfe von SQL-Abfragen Modelle für maschinelles Lernen in BigQuery erstellen und trainieren. Dies trägt dazu bei, das maschinelle Lernen besser zugänglich zu machen, da Sie vertraute Tools wie den BigQuery-SQL-Editor verwenden können. Außerdem wird die Entwicklungsgeschwindigkeit erhöht, da Daten nicht in eine separate Umgebung für maschinelles Lernen verschoben werden müssen.
In dieser Anleitung verwenden Sie das Google Analytics-Beispiel-Dataset für BigQuery. Damit erstellen Sie ein Modell, das vorhersagt, ob ein Besucher Ihrer Website eine Transaktion vornehmen wird oder nicht. Informationen zum Schema des Analytics-Datasets finden Sie in der Analytics-Hilfe unter BigQuery-Exportschema.
Lernziele
In dieser Anleitung werden die folgenden Aufgaben erläutert:
- Mit der Anweisung
CREATE MODEL
ein binäres logistisches Regressionsmodell erstellen - Die
ML.EVALUATE
-Funktion zum Bewerten des Modells verwenden. - Funktion
ML.PREDICT
verwenden, um mithilfe des Modells Vorhersagen zu treffen.
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:
- BigQuery
- BigQuery ML
Weitere Informationen zu den Kosten für BigQuery finden Sie auf der Seite BigQuery-Preise.
Weitere Informationen zu den Kosten für BigQuery ML finden Sie unter BigQuery ML-Preise.
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- BigQuery ist in neuen Projekten automatisch aktiviert.
Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu
Enable the BigQuery API.
.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern:
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.
Klicken Sie auf
Aktionen ansehen > Dataset erstellen.Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:
Geben Sie unter Dataset-ID
bqml_tutorial
ein.Wählen Sie als Standorttyp die Option Mehrere Regionen und dann USA (mehrere Regionen in den USA) aus.
Die öffentlichen Datasets sind am multiregionalen Standort
US
gespeichert. Der Einfachheit halber sollten Sie Ihr Dataset am selben Standort speichern.Übernehmen Sie die verbleibenden Standardeinstellungen unverändert und klicken Sie auf Dataset erstellen.
Logistisches Regressionsmodell erstellen
Logistisches Regressionsmodell mit dem Analytics-Beispiel-Dataset für BigQuery erstellen
SQL
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
CREATE OR REPLACE MODEL `bqml_tutorial.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 '20170630'
Die Abfrage kann mehrere Minuten dauern. Nachdem der erste Durchlauf abgeschlossen ist, wird das Modell (
sample_model
) im Navigationsbereich angezeigt. Da die Abfrage eineCREATE MODEL
-Anweisung zum Erstellen einer Modells verwendet, werden keine Abfrageergebnisse angezeigt.
Abfragedetails
Die CREATE MODEL
-Anweisung erstellt das Modell und trainiert dann das Modell anhand der Daten, die mit der SELECT
-Anweisung Ihrer Abfrage abgerufen wurden.
Die Klausel OPTIONS(model_type='logistic_reg')
erstellt ein logistisches Regressionsmodell. Ein logistisches Regressionsmodell teilt Eingabedaten in zwei Klassen auf und schätzt dann die Wahrscheinlichkeit, dass die Daten in einer der beiden Klassen enthalten sind. Was Sie zu erkennen versuchen, z. B. ob es sich bei einer E-Mail um eine Spam-E-Mail handelt, wird durch 1 und andere Werte durch 0 dargestellt. Die Wahrscheinlichkeit, dass ein bestimmter Wert zu der Klasse gehört, die Sie erkennen möchten, wird durch einen Wert zwischen 0 und 1 angegeben.
Wenn eine E-Mail beispielsweise eine Wahrscheinlichkeitsschätzung von 0,9 erhält, besteht eine Wahrscheinlichkeit von 90 %, dass die E-Mail Spam ist.
Die SELECT
-Anweisung dieser Abfrage ruft die folgenden Spalten ab, die vom Modell zur Vorhersage der Wahrscheinlichkeit verwendet werden, mit der ein Kunde eine Transaktion abschließen wird:
totals.transactions
: Gesamtzahl der E-Commerce-Transaktionen während der Sitzung. Wenn die Anzahl der TransaktionenNULL
ist, wird der Wert in der Spaltelabel
auf0
gesetzt. Ansonsten wird er auf1
gesetzt. Diese Werte repräsentieren die möglichen Ergebnisse. Alternativ zum Festlegen der Optioninput_label_cols=
in der AnweisungCREATE MODEL
können Sie einen Alias namenslabel
erstellen.device.operatingSystem
: Betriebssystem des Geräts des Besuchersdevice.isMobile
: Gibt an, ob das Gerät des Besuchers ein Mobilgerät ist.geoNetwork.country
: Land, aus dem die Sitzungen stammen, basierend auf der IP-Adresse.totals.pageviews
: Gesamtzahl der Seitenaufrufe innerhalb der Sitzung.
Die FROM
-Klausel bewirkt, dass die Abfrage das Modell mithilfe der bigquery-public-data.google_analytics_sample.ga_sessions
-Beispieltabellen trainiert.
Diese Tabellen sind nach Datum fragmentiert. Sie müssen sie daher mithilfe eines Platzhalters im Tabellennamen aggregieren: google_analytics_sample.ga_sessions_*
.
Die WHERE
-Klausel (_TABLE_SUFFIX BETWEEN '20160801' AND '20170630'
) begrenzt die Anzahl der mit der Abfrage gescannten Tabellen. Der Scanzeitraum liegt zwischen dem 1. August 2016 und dem 30. Juni 2017.
BigQuery DataFrames
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von BigQuery DataFrames in der BigQuery-Kurzanleitung: BigQuery DataFrames verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu BigQuery DataFrames.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Verluststatistiken des Modells ansehen
Beim maschinellen Lernen geht es darum, ein Modell zu erstellen, das mithilfe von Daten eine Vorhersage treffen kann. Bei dem Modell handelt es sich im Wesentlichen um eine Funktion, die mithilfe von Eingaben Berechnungen anstellt, um eine Ausgabe, d. h. eine Vorhersage, zu erzeugen.
Maschinelle Lernalgorithmen arbeiten mit mehreren Beispielen, bei denen die Vorhersage bereits bekannt ist (z. B. Verlaufsdaten von Nutzerkäufen). Es werden verschiedene Gewichtungen im Modell iterativ angepasst, sodass die Vorhersagen des Modells den wahren Werten entsprechen. Dies geschieht durch Minimieren der Fehlerwerte, die das Modell verwendet. Diese Werte werden auch als Verlust bezeichnet.
Erwartet wird, dass der Verlust für jeden Durchlauf weniger wird (idealerweise auf null sinkt). Ein Verlust von null bedeutet, dass das Modell zu 100 % genau ist.
Beim Training des Modells teilt BigQuery ML die Eingabedaten automatisch in Trainings- und Bewertungs-Datasets auf, um eine Überanpassung des Modell zu vermeiden. Dies ist erforderlich, damit der Trainingsalgorithmus nicht so genau an die Trainingsdaten angepasst wird. Nur so kann eine Verallgemeinerung neuer Beispiele vermieden werden.
Verwenden Sie die Google Cloud Console, um zu sehen, wie sich der Verlust des Modells während der Trainingsdurchläufe des Modells ändert:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Maximieren Sie im Bereich Explorer bqml_tutorial > Modelle und klicken Sie dann auf sample_model.
Klicken Sie auf den Tab Training und sehen Sie sich die Grafik Verlust an. Das Verlustdiagramm zeigt die Änderung des Verlustmesswerts über die Iterationen im Trainings-Dataset hinweg. Wenn Sie den Mauszeiger über die Grafik halten, sehen Sie, dass es Linien für Trainingsverlust und Evaluationsverlust gibt. Da Sie eine logistische Regression durchgeführt haben, wird der Trainingsverlustwert unter Verwendung der Trainingsdaten als logarithmischer Verlust berechnet. Der Bewertungsverlust ist der Logverlust, der anhand der Bewertungsdaten berechnet wurde. Beide Verlusttypen stellen durchschnittliche Verlustwerte dar, die über alle Beispiele in den jeweiligen Datasets pro Iteration gemittelt werden.
Sie können die Ergebnisse des Modelltrainings auch mit der Funktion ML.TRAINING_INFO
aufrufen.
Modell bewerten
Bewerten Sie die Leistung des Modells mit der Funktion ML.EVALUATE
. Die Funktion ML.EVALUATE
wertet die vom Modell generierten vorhergesagten Werte anhand der tatsächlichen Daten aus. Zur Berechnung spezieller Messwerte für logistische Regressionen können Sie Folgendes verwenden:ML.ROC_CURVE
SQL-Funktion oderbigframes.ml.metrics.roc_curve
BigQuery DataFrames-Funktion “
In dieser Anleitung verwenden Sie ein binäres Klassifizierungsmodell, das Transaktionen erkennt. Die Werte in der Spalte label
sind die beiden vom Modell generierten Klassen: 0
(keine Transaktion) und 1
(Transaktion durchgeführt).
SQL
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.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'))
Die Ergebnisse sollten so aussehen:
+--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+ | precision | recall | accuracy | f1_score | log_loss | roc_auc | +--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+ | 0.468503937007874 | 0.11080074487895716 | 0.98534315834767638 | 0.17921686746987953 | 0.04624221101176898 | 0.98174125874125873 | +--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
Da Sie eine logistische Regression durchgeführt haben, enthalten die Ergebnisse die folgenden Spalten:
precision
: Messwert für Klassifikationsmodelle. Gibt präzise die Häufigkeit an, mit der ein Modell die positive Klasse richtig vorhergesagt hat.recall
: Messwert für Klassifizierungsmodelle, der folgende Frage beantwortet: Wie viele der möglichen positiven Labels konnte das Modell richtig identifizieren?accuracy
: Anteil der Vorhersagen, die ein Klassifizierungsmodell richtig getroffen hat.f1_score
: Maß für die Accuracy des Modells. Der f1-Wert ist der harmonische Mittelwert von Precision und Trefferquote. 1 ist der beste und 0 der schlechteste f1-Wert.log_loss
: Die in einer logistischen Regression verwendete Verlustfunktion. Gibt an, wie weit auseinander die Vorhersagen des Modells und die richtigen Labels liegen.roc_auc
: Fläche unterhalb der ROC. Gibt an, mit welcher Wahrscheinlichkeit ein Klassifikator davon ausgeht, dass ein zufällig ausgewähltes positives Beispiel tatsächlich positiv ist und ein zufällig ausgewähltes negatives Beispiel positiv ist. Weitere Informationen finden Sie im Machine Learning Crash Course unter Classification.
Abfragedetails
Die anfängliche SELECT
-Anweisung ruft die Spalten aus Ihrem Modell ab.
In der FROM
-Klausel wird die Funktion ML.EVALUATE
für das Modell verwendet.
Die verschachtelte SELECT
-Anweisung und die FROM
-Klausel sind mit denen in der Abfrage CREATE MODEL
identisch.
Die WHERE
-Klausel (_TABLE_SUFFIX BETWEEN '20170701' AND '20170801'
) begrenzt die Anzahl der mit der Abfrage gescannten Tabellen. Der Scanzeitraum liegt zwischen dem 1. Juli 2017 und dem 1. August 2017. Dies sind die Daten, die Sie zum Bewerten der Vorhersageleistung des Modells verwenden. Sie wurden in dem Monat erhoben, der unmittelbar auf den Zeitraum folgte, der durch die Trainingsdaten vorgegeben wurde.
BigQuery DataFrames
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von BigQuery DataFrames in der BigQuery-Kurzanleitung: BigQuery DataFrames verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu BigQuery DataFrames.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Modell verwenden, um Ergebnisse vorherzusagen
Verwenden Sie das Modell, um die Anzahl der Transaktionen von Websitebesuchern je nach Land vorherzusagen.
SQL
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
SELECT country, SUM(predicted_label) as total_predicted_purchases FROM ML.PREDICT(MODEL `bqml_tutorial.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
Die Ergebnisse sollten so aussehen:
+----------------+---------------------------+ | country | total_predicted_purchases | +----------------+---------------------------+ | United States | 220 | | Taiwan | 8 | | Canada | 7 | | India | 2 | | Turkey | 2 | | Japan | 2 | | Italy | 1 | | Brazil | 1 | | Singapore | 1 | | Australia | 1 | +----------------+---------------------------+
Abfragedetails
Die anfängliche SELECT
-Anweisung ruft die Spalte country
ab und summiert die Spalte predicted_label
. Die predicted_label
Spalte wird von der ML.PREDICT
-Funktion generiert. Wenn Sie die Funktion ML.PREDICT
verwenden, lautet der Ausgabespaltenname für das Modell predicted_<label_column_name>
. Bei linearen Regressionsmodellen ist predicted_label
der geschätzte Wert von label
.
Bei logistischen Regressionsmodellen ist predicted_label
das Label, das den angegebenen Eingabedatenwert am besten beschreibt, entweder 0
oder 1
.
Die Funktion ML.PREDICT
wird verwendet, um Ergebnisse anhand des Modells vorherzusagen.
Die verschachtelte SELECT
-Anweisung und die FROM
-Klausel sind mit denen in der Abfrage CREATE MODEL
identisch.
Die WHERE
-Klausel (_TABLE_SUFFIX BETWEEN '20170701' AND '20170801'
) begrenzt die Anzahl der mit der Abfrage gescannten Tabellen. Der Scanzeitraum liegt zwischen dem 1. Juli 2017 und dem 1. August 2017. Dies sind die Daten, für die Sie Vorhersagen treffen. Sie wurden in dem Monat erhoben, der unmittelbar auf den Zeitraum folgte, der durch die Trainingsdaten vorgegeben wurde.
Die Klauseln GROUP BY
und ORDER BY
gruppieren die Ergebnisse nach Land und sortieren sie nach der Summe der vorhergesagten Käufe in absteigender Reihenfolge.
Hier wird die LIMIT
-Klausel verwendet, um nur die oberen 10 Ergebnisse darzustellen.
BigQuery DataFrames
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von BigQuery DataFrames in der BigQuery-Kurzanleitung: BigQuery DataFrames verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu BigQuery DataFrames.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Käufe pro Nutzer vorhersagen
die Anzahl der Transaktionen jedes Websitebesuchers vorhersagen
SQL
Diese Abfrage ist bis auf die Klausel GROUP BY
mit der Abfrage im vorherigen Abschnitt identisch. Hier wird die GROUP BY
-Klausel (GROUP BY fullVisitorId
) verwendet, um die Ergebnisse nach Besucher-ID zu gruppieren.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
SELECT fullVisitorId, SUM(predicted_label) as total_predicted_purchases FROM ML.PREDICT(MODEL `bqml_tutorial.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 Ergebnisse sollten so aussehen:
+---------------------+---------------------------+ | fullVisitorId | total_predicted_purchases | +---------------------+---------------------------+ | 9417857471295131045 | 4 | | 112288330928895942 | 2 | | 2158257269735455737 | 2 | | 489038402765684003 | 2 | | 057693500927581077 | 2 | | 2969418676126258798 | 2 | | 5073919761051630191 | 2 | | 7420300501523012460 | 2 | | 0456807427403774085 | 2 | | 2105122376016897629 | 2 | +---------------------+---------------------------+
BigQuery DataFrames
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von BigQuery DataFrames in der BigQuery-Kurzanleitung: BigQuery DataFrames verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu BigQuery DataFrames.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
Sie können das von Ihnen erstellte Projekt löschen oder das Projekt beibehalten und das Dataset löschen.
Dataset löschen
Wenn Sie Ihr Projekt löschen, werden alle Datasets und Tabellen entfernt. Wenn Sie das Projekt wieder verwenden möchten, können Sie das in dieser Anleitung erstellte Dataset löschen:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Wählen Sie im Bereich Explorer das von Ihnen erstellte Dataset bqml_tutorial aus.
Klicken Sie auf > Löschen.
AktionenBestätigen Sie im Dialogfeld Dataset löschen den Löschbefehl. Geben Sie dazu
delete
ein.Klicken Sie auf Löschen.
Projekt löschen
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Weitere Informationen über das maschinelle Lernen im Machine Learning Crash Course lesen
- Eine Übersicht über BigQuery ML finden Sie unter Einführung in BigQuery ML.
- Weitere Informationen zur Google Cloud Console finden Sie unter Google Cloud Console verwenden.