Modelle für maschinelles Lernen in BigQuery ML erstellen
In dieser Anleitung erfahren Sie, wie Sie mit 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. So wird maschinelles Lernen zugänglicher, da Sie vertraute Tools wie den BigQuery SQL-Editor verwenden können. Außerdem wird die Entwicklungsgeschwindigkeit erhöht, da Daten nicht mehr 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.
Ziele
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. - Mit der
ML.PREDICT
-Funktion Vorhersagen mithilfe des Modells 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
Erstellen Sie mithilfe des Analytics-Beispiel-Datasets für BigQuery ein logistisches Regressionsmodell.
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
Mit der Anweisung CREATE MODEL
wird das Modell erstellt und dann anhand der Daten trainiert, die mit der SELECT
-Anweisung Ihrer Abfrage abgerufen wurden.
Mit der Klausel OPTIONS(model_type='logistic_reg')
wird ein logistisches Regressionsmodell erstellt. Ein logistisches Regressionsmodell teilt Eingabedaten in zwei Klassen auf und schätzt dann die Wahrscheinlichkeit, dass sich die Daten in einer der beiden Klassen befinden. 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 zur 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 es sich um Spam handelt.
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: Mit dieser Klausel wird das Modell mithilfe der Beispieltabellen bigquery-public-data.google_analytics_sample.ga_sessions
trainiert.
Diese Tabellen werden nach Datum fragmentiert. Sie können sie also mit einem Platzhalter im Tabellennamen zusammenfassen: 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 aufrufen
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.
In der Google Cloud Console können Sie sehen, wie sich der Verlust des Modells im Laufe der Trainingsiterationen ändert:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Maximieren Sie im Bereich Explorer den Bereich bqml_tutorial > Modelle und klicken Sie dann auf sample_model.
Klicken Sie auf den Tab Training und sehen Sie sich das Diagramm Verlust an. Das Verlustdiagramm zeigt die Änderung des Verlustmesswerts über die Iterationen im Trainings-Dataset hinweg. Wenn Sie den Mauszeiger auf das Diagramm bewegen, sehen Sie Linien für Trainingsverlust und Bewertungsverlust. Da Sie eine logistische Regression durchgeführt haben, wird der Wert für den Trainingsverlust anhand der Trainingsdaten als logarithmischer Verlust berechnet. Der Bewertungsverlust ist der Log-Verlust, der für die Bewertungsdaten berechnet wird. Beide Verlusttypen geben den Durchschnitt der Verlustwerte aus allen Beispielen in den jeweiligen Datasets für jede Iteration an.
Mit der Funktion ML.TRAINING_INFO
können Sie die Ergebnisse des Modelltrainings auch abrufen.
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. Verwenden Sie zum Berechnen von spezifischen Messwerten für logistische Regressionen die SQL-Funktion ML.ROC_CURVE
oder die BigQuery DataFrames-Funktion bigframes.ml.metrics.roc_curve
.
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 Transaktionen) 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 geschachtelte SELECT
-Anweisung und die FROM
-Klausel dieser Abfrage sind dieselben wie in der Abfrage CREATE MODEL
.
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 Besuchern Ihrer Website 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, also entweder 0
oder 1
.
Die Funktion ML.PREDICT
wird verwendet, um Ergebnisse anhand des Modells vorherzusagen.
Die geschachtelte SELECT
-Anweisung und die FROM
-Klausel dieser Abfrage sind dieselben wie in der Abfrage CREATE MODEL
.
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 behalten 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 Dataset bqml_tutorial aus, das Sie erstellt haben.
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.