BigQuery ML unterstützt das unüberwachte Lernen. So können Sie den k-means-Algorithmus anwenden, um Daten in Clustern zu gruppieren. Anders als bei überwachtem maschinellem Lernen, bei dem es um vorhersagende Analysen geht, beschäftigt sich das unüberwachte Lernen mit beschreibenden Analysen. Es dient also dazu, dass Sie Ihre Daten verstehen, um datengestützte Entscheidungen treffen zu können.
In dieser Anleitung verwenden Sie ein k-means-Modell in BigQuery ML, um aus Daten des öffentlichen Datasets zum Fahrradverleih in London Cluster zu bilden. Die Daten zum Londoner Fahrradverleih enthalten die Anzahl der verliehenen Fahrräder des "Santander Cycle Hire Scheme" in London von 2011 bis heute. Außerdem beinhalten die Daten Zeitstempel für Leihbeginn und -ende, Namen von Verleihstationen und Fahrtdauer.
Die Abfragen in dieser Anleitung verwenden geografische Funktionen, die für die raumbezogene Analyse verfügbar sind. Weitere Informationen zu raumbezogenen Analysen finden Sie unter Einführung in raumbezogene Analysen.
Ziele
In dieser Anleitung können Sie:- Ein k-Means-Clustering-Modell erstellen
- Datengestützte Entscheidungen auf der Grundlage der Clustervisualisierung in BigQuery ML treffen
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:
- BigQuery
- BigQuery ML
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.
.
Einführung
Es ist möglich, dass Ihre Daten natürliche Datengruppierungen und Cluster von Daten enthalten. Für datengestützte Entscheidungen können diese Gruppierungen deskriptiv ermittelt werden. Als Einzelhändler möchten Sie beispielsweise natürliche Gruppierungen von Kunden mit ähnlichen Kaufgewohnheiten und -orten identifizieren. Dieser Vorgang wird als Kundensegmentierung bezeichnet.
Für die Kundensegmentierung können Daten wie das besuchte Geschäft, die gekauften Artikel oder der Preis herangezogen werden. Sie würden dann ein Modell erstellen, um nachvollziehen zu können, wie sich diese Gruppen von Kundenidentitäten zusammensetzen. Anhand dessen können Sie Artikel entwickeln, von denen sich Gruppenmitglieder angesprochen fühlen.
Außerdem können Sie unter den gekauften Artikeln Produktgruppen finden. Dabei werden Artikel anhand der Person, die sie gekauft haben, des Kaufzeitpunktes und -ortes sowie anderer ähnlicher Merkmale in Clustern zusammengefasst werden. Auch dafür würden Sie ein Modell erstellen, um die Eigenschaften einer Produktgruppe zu bestimmen. So können Sie fundierte Entscheidungen darüber treffen, wie das Cross-Selling verbessert werden kann.
In dieser Anleitung erstellen Sie mit BigQuery ML ein k-means-Modell, das die Daten zum Fahrradverleih in London anhand von Attributen zu Radstationen clustert.
Die Erstellung eines k-means-Modells umfasst die folgenden Schritte:
- Schritt 1: Dataset erstellen, um das Modell zu speichern
- Im ersten Schritt erstellen Sie ein Dataset, in dem das Modell gespeichert wird.
- Schritt 2: Trainingsdaten prüfen
- Der nächste Schritt dient der Prüfung der Daten, die Sie für das Training des Clustering-Modells verwenden. Dazu führen Sie für die Tabelle
london_bicycles
eine Abfrage aus. Da k-Means ein unüberwachtes Lernverfahren ist, sind für das Modelltraining weder Labels erforderlich noch müssen die Daten in Trainingsdaten und Bewertungsdaten aufgeteilt werden.
- Schritt 3: k-Means-Modell erstellen
- Im dritten Schritt erstellen Sie das k-Means-Modell. Bei der Erstellung des Modells ist das Clustering-Feld
station_name
und Sie gruppieren die Daten basierend auf dem Attribut "Radstation", z. B. der Entfernung der Radstation vom Stadtzentrum.
- Schritt 4: Mit der Funktion
ML.PREDICT
den Cluster einer Radstation vorhersagen - Als Nächstes verwenden Sie die Funktion
ML.PREDICT
, um den Cluster für einen bestimmten Satz von Radstationen vorherzusagen. Sie prognostizieren Cluster für alle Namen von Radstationen, die den StringKennington
enthalten.
- Schritt 4: Mit der Funktion
- Schritt 5: Modell verwenden, um datengestützte Entscheidungen zu treffen
- Im letzten Schritt setzen Sie das Modell ein, um datengestützte Entscheidungen zu treffen. So können Sie etwa anhand der Modellergebnisse bestimmen, für welche Stationen zusätzliche Kapazitäten vorteilhaft wären.
Schritt 1: 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 Multiregional und dann EU (mehrere Regionen in der Europäischen Union) aus.
Das öffentliche Dataset zum Fahrradverleih in London wird in der Multiregion
EU
gespeichert. Ihr Dataset muss sich am selben Standort befinden.Übernehmen Sie die verbleibenden Standardeinstellungen unverändert und klicken Sie auf Dataset erstellen.
Schritt 2: Trainingsdaten prüfen
Als Nächstes prüfen Sie die Daten, die Sie für das Training des k-means-Modells verwendet haben. In dieser Anleitung clustern Sie Radstationen anhand der folgenden Attribute:
- Dauer des Verleihs
- Anzahl der Fahrten pro Tag
- Entfernung zum Stadtzentrum
SQL
Mit der folgenden GoogleSQL-Abfrage werden die Daten untersucht, die zum Trainieren des k-means-Modells verwendet werden.
#standardSQL WITH hs AS ( SELECT h.start_station_name AS station_name, IF (EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OR EXTRACT(DAYOFWEEK FROM h.start_date) = 7, "weekend", "weekday") AS isweekday, h.duration, ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude), ST_GEOGPOINT(-0.1, 51.5))/1000 AS distance_from_city_center FROM `bigquery-public-data.london_bicycles.cycle_hire` AS h JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS s ON h.start_station_id = s.id WHERE h.start_date BETWEEN CAST('2015-01-01 00:00:00' AS TIMESTAMP) AND CAST('2016-01-01 00:00:00' AS TIMESTAMP) ), stationstats AS ( SELECT station_name, isweekday, AVG(duration) AS duration, COUNT(duration) AS num_trips, MAX(distance_from_city_center) AS distance_from_city_center FROM hs GROUP BY station_name, isweekday ) SELECT * FROM stationstats ORDER BY distance_from_city_center ASC
Abfragedetails
Diese Abfrage extrahiert Daten zum Fahrradverleih, darunter start_station_name
und duration
, und verbindet sie mit Informationen zu Radstationen, einschließlich distance-from-city-center
. Anschließend werden Attribute der Station, einschließlich der durchschnittlichen Fahrtzeit und der Anzahl der Fahrten, in stationstats
berechnet und das Bahnhofsattribut distance_from_city_center
wird durchlaufen.
Diese Abfrage verwendet die Klausel WITH
, um Unterabfragen zu definieren. Außerdem nutzt sie die raumbezogenen Analysefunktionen ST_DISTANCE
und ST_GEOGPOINT
. Weitere Informationen zu diesen Funktionen finden Sie unter Geografische Funktionen. Weitere Informationen zu raumbezogenen Analysen erhalten Sie unter Einführung in raumbezogene Analysen.
Abfrage ausführen
Die folgende Abfrage kompiliert Ihre Trainingsdaten. Sie wird auch in der CREATE MODEL
-Anweisung weiter unten in dieser Anleitung verwendet.
Das geht so:
- Rufen Sie die Seite BigQuery auf.
Führen Sie im Editorbereich die folgende SQL-Anweisung aus:
WITH hs AS ( SELECT h.start_station_name AS station_name, IF (EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OR EXTRACT(DAYOFWEEK FROM h.start_date) = 7, "weekend", "weekday") AS isweekday, h.duration, ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude), ST_GEOGPOINT(-0.1, 51.5))/1000 AS distance_from_city_center FROM `bigquery-public-data.london_bicycles.cycle_hire` AS h JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS s ON h.start_station_id = s.id WHERE h.start_date BETWEEN CAST('2015-01-01 00:00:00' AS TIMESTAMP) AND CAST('2016-01-01 00:00:00' AS TIMESTAMP) ), stationstats AS ( SELECT station_name, isweekday, AVG(duration) AS duration, COUNT(duration) AS num_trips, MAX(distance_from_city_center) AS distance_from_city_center FROM hs GROUP BY station_name, isweekday ) SELECT * FROM stationstats ORDER BY distance_from_city_center ASC
Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Results (Ergebnisse). Auf dem Tab "Results" (Ergebnisse) werden die Spalten angezeigt, die zum Trainieren Ihres Modells verwendet wurden:
station_name
,duration
,num_trips
,distance_from_city_center
. Das Ergebnis sollte wie unten dargestellt aussehen.
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.
Schritt 3: k-Means-Modell erstellen
Nachdem Sie nun die Trainingsdaten geprüft haben, geht es an die Erstellung eines k-Means-Modells mit den Daten.
SQL
Sie können ein k-Means-Modell mithilfe der Anweisung CREATE MODEL
mit der Option model_type=kmeans
erstellen.
Abfragedetails
Die Anweisung CREATE MODEL
gibt die Anzahl der Cluster an, die verwendet werden sollen, nämlich vier. In der SELECT
-Anweisung schließt die Klausel EXCEPT
die Spalte station_name
aus, da station_name
kein Feature ist. Mit der Abfrage wird pro "station_name" eine eindeutige Zeile erstellt und in der SELECT
-Anweisung werden nur die Features genannt.
Wenn Sie die Option num_clusters
weglassen, wählt BigQuery ML eine passende Standardeinstellung anhand der Gesamtzahl der Zeilen in den Trainingsdaten aus. Eine weitere Möglichkeit, eine passende Anzahl zu ermitteln, ist eine Hyperparameter-Abstimmung. Zur Bestimmung einer optimalen Clusterzahl würden Sie dabei die Abfrage CREATE MODEL
für verschiedene Werte von num_clusters
ausführen, den Fehlermesswert suchen und den Punkt auswählen, an dem er minimal ist. Den Fehlermesswert erhalten Sie, wenn Sie das Modell auswählen und dann den Tab Training anklicken. Auf diesem Tab wird der Davies-Bouldin-Index angezeigt.
Abfrage ausführen
Mit der folgenden Abfrage wird eine Anweisung vom Typ CREATE MODEL
zu der Abfrage hinzugefügt, die Sie zum Untersuchen der Trainingsdaten verwendet haben. Außerdem werden die id
-Felder in den Daten entfernt.
So führen Sie die Abfrage aus und erstellen ein k-Means-Modell:
- Rufen Sie die Seite BigQuery auf.
Führen Sie im Editorbereich die folgende SQL-Anweisung aus:
CREATE OR REPLACE MODEL `bqml_tutorial.london_station_clusters` OPTIONS(model_type='kmeans', num_clusters=4) AS WITH hs AS ( SELECT h.start_station_name AS station_name, IF (EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OR EXTRACT(DAYOFWEEK FROM h.start_date) = 7, "weekend", "weekday") AS isweekday, h.duration, ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude), ST_GEOGPOINT(-0.1, 51.5))/1000 AS distance_from_city_center FROM `bigquery-public-data.london_bicycles.cycle_hire` AS h JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS s ON h.start_station_id = s.id WHERE h.start_date BETWEEN CAST('2015-01-01 00:00:00' AS TIMESTAMP) AND CAST('2016-01-01 00:00:00' AS TIMESTAMP) ), stationstats AS ( SELECT station_name, isweekday, AVG(duration) AS duration, COUNT(duration) AS num_trips, MAX(distance_from_city_center) AS distance_from_city_center FROM hs GROUP BY station_name, isweekday) SELECT * EXCEPT(station_name, isweekday) FROM stationstats
Maximieren Sie im Navigationsbereich im Abschnitt Ressourcen den Namen Ihres Projekts, klicken Sie auf bqml_tutorial und dann auf london_station_clusters.
Klicken Sie auf den Tab Schema (Schema). Das Modellschema führt die vier Radstationsattribute auf, die BigQuery ML zum Clustern verwendet hat. Es sollte wie unten dargestellt aussehen.
- Klicken Sie auf den Tab Evaluation (Bewertung). In diesem Tab werden Visualisierungen der durch das k-Means-Modell identifizierten Cluster angezeigt. Unter Numerische Features werden in Balkendiagrammen bis zu zehn der wichtigsten numerischen Featurewerte für jeden Schwerpunkt (Centroid) angezeigt. Im Drop-down-Menü können Sie auswählen, welche Features angezeigt werden sollen.
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.
Schritt 4: Mit der Funktion ML.PREDICT
den Cluster einer Radstation vorhersagen
Verwenden Sie die ML.PREDICT
-SQL-Funktion oder die predict
-BigQuery-DataFrames-Funktion, um den Cluster zu ermitteln, zu dem eine bestimmte Station gehört.
SQL
Abfragedetails
Diese Abfrage verwendet die Funktion REGEXP_CONTAINS
, um in der Spalte station_name
alle Einträge zu finden, die den String "Kennington" enthalten. Anhand dieser Werte prognostiziert die Funktion ML.PREDICT
, welche Cluster diese Stationen enthalten würden.
Abfrage ausführen
Die folgende Abfrage sagt den Cluster jeder Radstation vorher, deren Name den String "Kennington" enthält.
So führen Sie die Abfrage ML.PREDICT
aus:
- Rufen Sie die Seite BigQuery auf.
Führen Sie im Editorbereich die folgende SQL-Anweisung aus:
WITH hs AS ( SELECT h.start_station_name AS station_name, IF (EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OR EXTRACT(DAYOFWEEK FROM h.start_date) = 7, "weekend", "weekday") AS isweekday, h.duration, ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude), ST_GEOGPOINT(-0.1, 51.5))/1000 AS distance_from_city_center FROM `bigquery-public-data.london_bicycles.cycle_hire` AS h JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS s ON h.start_station_id = s.id WHERE h.start_date BETWEEN CAST('2015-01-01 00:00:00' AS TIMESTAMP) AND CAST('2016-01-01 00:00:00' AS TIMESTAMP) ), stationstats AS ( SELECT station_name, isweekday, AVG(duration) AS duration, COUNT(duration) AS num_trips, MAX(distance_from_city_center) AS distance_from_city_center FROM hs GROUP BY station_name, isweekday ) SELECT * EXCEPT(nearest_centroids_distance) FROM ML.PREDICT( MODEL `bqml_tutorial.london_station_clusters`, ( SELECT * FROM stationstats WHERE REGEXP_CONTAINS(station_name, 'Kennington')))
Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Results (Ergebnisse). Das Ergebnis sollte wie unten dargestellt aussehen.
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.
Schritt 5: Modell verwenden, um datengestützte Entscheidungen zu treffen
Die Bewertungsergebnisse können Sie bei der Interpretation der verschiedenen Cluster unterstützen. Im folgenden Beispiel zeigt Centroid 3 eine belebte Radstation in der Nähe des Stadtzentrums. Centerid 2 zeigt die zweite Station, die weniger ausgelastet ist und für längere Mietzeiten genutzt wird. Schwerpunkt 1 ist die weniger ausgelastete Station in der Stadt, mit kürzerer Mietdauer. Centerid 4 zeigt eine Vorstadtstation, deren Fahrten länger sind.
Mit diesen Ergebnissen können Sie die Daten nun dafür nutzen, um fundierte Entscheidungen zu treffen. Beispiel:
Angenommen, Sie müssen eine neue Art Schloss ausprobieren. Welchen Radstations-Cluster sollten Sie für dieses Experiment wählen? Die Stationen in Centroid 1, Centroid 2 oder Centroid 4 scheinen die logische Wahl zu sein, weil sie nicht die am stärksten frequentierten Stationen sind.
In einer weiteren Annahme möchten Sie in einigen Radstationen Rennräder bereitstellen. Welche Stationen wären hierfür die richtige Wahl? Centroid 4 ist die Station, die weit vom Stadtzentrum entfernt ist und an der die längsten Fahrten verzeichnet werden. Hier haben Sie Ihre Kandidaten für Rennräder.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
- 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 Delete dataset (Dataset löschen). Dadurch werden das Dataset und das Modell 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:
- 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
- Einführung in BigQuery ML
- Weitere Informationen zum Erstellen von Modellen finden Sie auf der Seite zur
CREATE MODEL
-Syntax