K-Means-Modell zum Clustern des Datasets "London Bicycle Hires" erstellen


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

  1. 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.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. BigQuery ist in neuen Projekten automatisch aktiviert. Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu

    BigQuery API aktivieren.

    Aktivieren Sie die 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 String Kennington enthalten.
  • 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 zum Speichern Ihres ML-Modells:

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    Zur Seite „BigQuery“

  2. Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.

  3. Klicken Sie auf Aktionen ansehen > Dataset erstellen.

    Dataset erstellen

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

      Seite "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

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:

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. 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,
        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 )
    SELECT
      *
    FROM
      stationstats
    ORDER BY
      distance_from_city_center ASC
    
    
  3. 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.

    Abfrageergebnisse

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.

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.

Tab "Training"

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:

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. 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
    
    
  3. Maximieren Sie im Navigationsbereich im Abschnitt Ressourcen den Namen Ihres Projekts, klicken Sie auf bqml_tutorial und dann auf london_station_clusters.

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

    Informationen zum Clusterschema

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

    Balkendiagramme zu numerischen Features

Schritt 4: Mit der Funktion ML.PREDICT den Cluster einer Radstation vorhersagen

Mit der Funktion ML.PREDICT können Sie den Cluster ermitteln, zu dem eine bestimmte Radstation gehört.

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:

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. 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,
        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 )
    SELECT
      * EXCEPT(nearest_centroids_distance)
    FROM
      ML.PREDICT( MODEL `bqml_tutorial.london_station_clusters`,
        (
        SELECT
          *
        FROM
          stationstats
        WHERE
          REGEXP_CONTAINS(station_name, 'Kennington')))
    
    
  3. Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Results (Ergebnisse). Das Ergebnis sollte wie unten dargestellt aussehen.

    Ergebnisse von ML.PREDICT

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. Centroid 2 zeigt die zweite Radstation in der Stadt, die weniger ausgelastet ist. Centerid 1 zeigt eine weniger ausgelastete Station am Stadtrand, bei der längere Mietzeiten auftreten. Centerid 4 zeigt eine weitere Vorstadtstation, an der kürzere Fahrten erfasst werden.

Balkendiagramme zu numerischen Features

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

  1. Rufen Sie, falls erforderlich, die Seite "BigQuery" in der Google Cloud Console auf.

    Zur Seite "BigQuery"

  2. Wählen Sie im Navigationsbereich das Dataset bqml_tutorial aus, das Sie erstellt haben.

  3. Klicken Sie rechts im Fenster auf Delete dataset (Dataset löschen). Dadurch werden das Dataset und das Modell gelöscht.

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

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte