Modelle für maschinelles Lernen in BigQuery ML erstellen
In dieser Anleitung lernen Nutzer die Funktionen von BigQuery ML über die Google Cloud Console kennen.
Mit BigQuery ML können Nutzer mithilfe von SQL-Abfragen Modelle für maschinelles Lernen in BigQuery erstellen und ausführen. Dadurch, dass SQL-Experten mithilfe von BigQuery ML Modelle unter Verwendung vorhandener Tools erstellen und die Entwicklungsgeschwindigkeit erhöhen können, ohne dabei Daten bewegen zu müssen, soll das maschinelle Lernen demokratisiert werden.
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 verwenden Sie:
- BigQuery ML zur Erstellung eines linearen Regressionsmodells mit der Anweisung
CREATE MODEL
- Die Funktion
ML.EVALUATE
zur Bewertung des ML-Modells - Die Funktion
ML.PREDICT
zum Erstellen von Vorhersagen mithilfe des ML-Modells
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
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
- BigQuery ist in neuen Projekten automatisch aktiviert.
Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu
BigQuery API aktivieren.
.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset zum Speichern Ihres ML-Modells:
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Klicken Sie im Explorer-Bereich auf den Namen Ihres Projekts.
Klicken Sie auf
Aktionen anzeigen > 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 US (mehrere Regionen in den USA) aus.
Die öffentlichen Datasets sind in der Multiregion
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.
Modell erstellen
Als Nächstes erstellen Sie mithilfe des Analytics Beispiel-Datasets für BigQuery ein logistisches Regressionsmodell. Mit der folgenden GoogleSQL-Abfrage wird das Modell erstellt. Sie können damit vorhersagen, ob ein Besucher Ihrer Website eine Transaktion ausführen wird oder nicht.
#standardSQL CREATE 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'
Wenn Sie zusätzlich zum Erstellen des Modells eine Abfrage ausführen, die die Anweisung CREATE MODEL
enthält, wird das Modell anhand der Daten trainiert, die mit dieser SELECT
-Anweisung abgerufen wurden.
Abfragedetails
Das Modell bqml_tutorial.sample_model
wird mit der Klausel CREATE MODEL
erstellt und trainiert.
Die Klausel OPTIONS(model_type='logistic_reg')
legt fest, dass Sie ein logistisches Regressionsmodell erstellen.
Ein logistisches Regressionsmodell versucht, Eingabedaten in zwei Klassen aufzuteilen. Das Modell gibt die Wahrscheinlichkeit an, mit der die Daten in einer der beiden Klassen enthalten sind. In der Regel wird das, was Sie zu erkennen versuchen (z. B. ob es sich bei einer E-Mail um eine Spam-E-Mail handelt) durch 1 und alles andere durch 0 dargestellt. Wenn das logistische Regressionsmodell 0,9 ausgibt, besteht eine Wahrscheinlichkeit von 90 %, dass die Eingabe das ist, was Sie zu erkennen versuchen (E-Mail ist Spam).
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 (bigquery-public-data.google_analytics_sample.ga_sessions_*
) gibt an, dass Sie das Beispiel-Dataset von Google Analytics abfragen.
Dieses Dataset befindet sich im Projekt bigquery-public-data
. Sie fragen einen Tabellensatz ab, der nach dem Datum sortiert ist. Dies wird durch den Platzhalter im Tabellennamen dargestellt: 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.
Abfrage CREATE MODEL
ausführen
So führen Sie die Abfrage CREATE MODEL
zum Erstellen und Trainieren des Modells aus:
Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen. Wenn auf diesen Text nicht geklickt werden kann, ist der Abfrageeditor bereits geöffnet.
Geben Sie im Textfeld des Abfrageeditors die folgende GoogleSQL-Abfrage ein.
#standardSQL CREATE 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'
Klicken Sie auf Ausführen.
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 Tabelle verwendet, werden keine Abfrageergebnisse angezeigt.Auf dem Tab Modellstatistik können Sie beobachten, wie das Modell trainiert wird. Sobald der erste Durchlauf abgeschlossen ist, wird der Tab aktualisiert. Die Statistiken werden bei jedem Durchlauf aktualisiert.
Trainingsstatistiken abrufen
Mit der Funktion ML.TRAINING_INFO
können Sie die Ergebnisse des Modelltrainings abrufen. Alternativ lassen sich die Statistiken auch in der Google Cloud Console abrufen. In dieser Anleitung verwenden Sie die Google Cloud Console.
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.
So können Sie die Statistiken zum Modelltraining ansehen, die beim Ausführen der CREATE MODEL
-Abfrage erzeugt wurden:
Maximieren Sie im Navigationsbereich der Google Cloud Console im Abschnitt Ressourcen [PROJECT_ID] > bqml_tutorial und klicken Sie anschließend auf sample_model.
Klicken Sie auf den Tab Model stats (Modellstatistik). Die Ergebnisse sollten so aussehen:
Die Spalte Trainingsdatenverlust stellt die Verlustwerte dar, die nach dem gegebenen Durchlauf im Trainings-Dataset berechnet wurden. Da Sie eine logistische Regression durchgeführt haben, gibt diese Spalte den logarithmischen Verlust an. Die Spalte Evaluationsdatenverlust enthält dieselben Verlustmesswerte, die für das Holdout-Dataset berechnet wurden (Daten, die vom Training zurückgehalten werden, um das Modell zu validieren).
BigQueryML teilt Eingabedaten automatisch in ein Trainings-Dataset und ein Holdout-Dataset auf, um eine Überanpassung des Modells zu vermeiden. Dies ist notwendig, damit der Trainingsalgorithmus nicht so genau an die bekannten Daten angepasst wird. Nur so kann eine Verallgemeinerung neuer, unbekannter Beispiele vermieden werden.
Trainingsdatenverlust und Evaluationsdatenverlust geben den Durchschnitt der Verlustwerte aus allen Beispielen in den jeweiligen Sets an.
Weitere Informationen zur Funktion
ML.TRAINING_INFO
finden Sie in der Syntaxreferenz zu BigQuery ML.
Modell bewerten
Nach dem Erstellen des Modells bewerten Sie die Leistung des Klassifikators mit der Funktion ML.EVALUATE
. Die Funktion ML.EVALUATE
wertet die vorhergesagten Werte gegenüber den tatsächlichen Daten aus. Sie können auch die Funktion ML.ROC_CURVE
für spezifische Messwerte logistischer Regressionen verwenden.
In dieser Anleitung verwenden Sie ein binäres Klassifizierungsmodell, das Transaktionen erkennt. Die beiden Klassen entsprechen den Werten in der Spalte label
: 0
(keine Transaktion) und 1
(Transaktion durchgeführt).
Die Abfrage, die zur Bewertung des Modells verwendet wird, lautet:
#standardSQL 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'))
Abfragedetails
Die oberste SELECT
-Anweisung ruft die Spalten aus dem Modell ab.
In der FROM
-Klausel wird die Funktion ML.EVALUATE
für das Modell bqml_tutorial.sample_model
verwendet.
Die geschachtelte SELECT
-Anweisung und die FROM
-Klausel dieser Abfrage sind dieselben wie jene 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.
Abfrage ML.EVALUATE
ausführen
So führen Sie die ML.EVALUATE
-Abfrage zur Bewertung des Modells aus:
Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen.
Geben Sie im Textfeld des Abfrageeditors die folgende GoogleSQL-Abfrage ein.
#standardSQL 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'))
Klicken Sie auf Ausführen.
Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Ergebnisse. Die Ergebnisse sollten so aussehen:
+--------------------+---------------------+--------------------+--------------------+---------------------+----------+ | precision | recall | accuracy | f1_score | log_loss | roc_auc | +--------------------+---------------------+--------------------+--------------------+---------------------+----------+ | 0.4451901565995526 | 0.08879964301651048 | 0.9716829479411401 | 0.1480654761904762 | 0.07921781778780206 | 0.970706 | +--------------------+---------------------+--------------------+--------------------+---------------------+----------+
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: Von wie vielen möglichen positiven Labels wurde das Modell korrekt identifiziert?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-Kurve. 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.
Modell verwenden, um Ergebnisse vorherzusagen
Nachdem Sie Ihr Modell ausgewertet haben, besteht der nächste Schritt darin, ein Ergebnis vorherzusagen. Verwenden Sie Ihr Modell, um die Anzahl der Transaktionen von Besuchern Ihrer Website je nach Land vorherzusagen.
Die Abfrage zur Vorhersage des Ergebnisses lautet so:
#standardSQL 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
Abfragedetails
Die oberste SELECT
-Anweisung ruft die Spalte country
ab und summiert die Spalte predicted_label
. Diese 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 wahrscheinlichste Label, in diesem Fall entweder 0
oder 1
.
Die Funktion ML.PREDICT
wird verwendet, um Ergebnisse anhand des Modells bqml_tutorial.sample_model
vorherzusagen.
Die geschachtelte SELECT
-Anweisung und die FROM
-Klausel dieser Abfrage sind dieselben wie jene 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.
Abfrage ML.PREDICT
ausführen
So führen Sie die Abfrage aus, die das Modell zur Vorhersage eines Ergebnisses verwendet:
Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen.
Geben Sie im Textfeld des Abfrageeditors die folgende GoogleSQL-Abfrage ein.
#standardSQL 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
Klicken Sie auf Ausführen.
Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Ergebnisse. Die Ergebnisse sollten so aussehen:
+----------------+---------------------------+ | country | total_predicted_purchases | +----------------+---------------------------+ | United States | 209 | | Taiwan | 6 | | Canada | 4 | | Turkey | 2 | | India | 2 | | Japan | 2 | | Indonesia | 1 | | United Kingdom | 1 | | Guyana | 1 | +----------------+---------------------------+
Käufe pro Nutzer vorhersagen
In diesem Beispiel versuchen Sie, die Anzahl der Transaktionen jedes Besuchers in Ihrer Website vorherzusagen. Diese Abfrage ist bis auf die Klausel GROUP BY
mit der vorherigen Abfrage identisch. Hier wird die GROUP BY
-Klausel (GROUP BY fullVisitorId
) verwendet, um die Ergebnisse nach Besucher-ID zu gruppieren.
Das geht so:
Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen.
Geben Sie im Textfeld des Abfrageeditors die folgende GoogleSQL-Abfrage ein.
#standardSQL 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
Klicken Sie auf Ausführen.
Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Ergebnisse. Die Ergebnisse sollten so aussehen:
+---------------------+---------------------------+ | fullVisitorId | total_predicted_purchases | +---------------------+---------------------------+ | 9417857471295131045 | 4 | | 2158257269735455737 | 3 | | 5073919761051630191 | 3 | | 7104098063250586249 | 2 | | 4668039979320382648 | 2 | | 1280993661204347450 | 2 | | 7701613595320832147 | 2 | | 0376394056092189113 | 2 | | 9097465012770697796 | 2 | | 4419259211147428491 | 2 | +---------------------+---------------------------+
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.
- Sie können das Projekt aber auch 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:
Rufen Sie, falls erforderlich, die Seite "BigQuery" in der Google Cloud Console auf.
Wählen Sie im Navigationsbereich das Dataset bqml_tutorial aus, das Sie erstellt haben.
Klicken Sie rechts im Fenster auf Datensatz löschen. Dadurch werden das Dataset, die Tabelle und alle Daten gelöscht.
Bestätigen Sie im Dialogfeld Dataset löschen den Löschbefehl. Geben Sie dazu den Namen des Datasets (
bqml_tutorial
) ein und klicken Sie auf Löschen.
Projekt löschen
So löschen Sie das Projekt:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
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.