BigQuery ML zur Vorhersage des Gewichts von Pinguinen verwenden

In dieser Anleitung lernen Datenanalysten die Funktionen von BigQuery ML 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 die Tabelle penguin, um ein Modell zu erstellen, das das Gewicht eines Pinguins auf der Grundlage der Art des Pinguins, der Insel, auf der er lebt, der Länge und der Tiefe des Schnabelrückens, der Länge des Schwimmflossen und des Geschlechts vorhersagt.

Ziele

In dieser Anleitung verwenden Sie:

  • BigQuery ML zur Erstellung eines linearen Regressionsmodells mit der Anweisung CREATE MODEL
  • Die ML.EVALUATE-Funktion zum Auswerten des ML-Modells
  • Die Funktion ML.PREDICT zum Erstellen von Vorhersagen mithilfe des ML-Modells

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten der Cloud Platform 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 auf der Seite BigQuery ML – Preise.

Vorbereitung

  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 Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

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

    Aktivieren Sie die API

    .

Schritt 1: Dataset erstellen

Im ersten Schritt erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern. So erstellen Sie ein Dataset:

  1. Rufen Sie in der Cloud Console die BigQuery-Seite auf.

    Zur Seite "BigQuery"

  2. Klicken Sie im Navigationsbereich im Abschnitt Ressourcen auf den Namen Ihres Projekts.

  3. Klicken Sie rechts im Detailbereich auf Create Dataset (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 unter Speicherort der Daten die Option USA aus. Derzeit sind die öffentlichen Datasets am multiregionalen Standort US gespeichert. Der Einfachheit halber sollten Sie Ihr Dataset am selben Speicherort ablegen.

      Seite "Dataset erstellen"

  5. Lassen Sie alle anderen Standardeinstellungen unverändert und klicken Sie auf Create Dataset (Dataset erstellen).

Schritt 2: Modell erstellen

Als Nächstes erstellen Sie mithilfe der Pinguin-Tabelle für BigQuery ein lineares Regressionsmodell. Mit der folgenden Standard-SQL-Abfrage wird das Modell erstellt. Sie können damit das Gewicht eines Pinguins vorhersagen.

#standardSQL
CREATE MODEL `bqml_tutorial.penguins_model`
OPTIONS
  (model_type='linear_reg',
  input_label_cols=['body_mass_g']) AS
SELECT
  *
FROM
  `bigquery-public-data.ml_datasets.penguins`
WHERE
  body_mass_g IS NOT NULL

Durch Ausführen des Befehls CREATE MODEL wird das Modell, das Sie erstellen, außerdem trainiert.

Abfragedetails

Das Modell bqml_tutorial.penguins_model wird mit der Klausel CREATE MODEL erstellt und trainiert.

Die OPTIONS(model_type='linear_reg', input_label_cols=['body_mass_g'])-Klausel gibt an, dass Sie ein lineares Regressionsmodell erstellen. Eine lineare Regression ist eine Art von Regressionsmodell, das aus einer linearen Kombination von Eingabemerkmalen einen kontinuierlichen Wert generiert. Die Spalte body_mass_g ist die Eingabelabel-Spalte. Bei linearen Regressionsmodellen muss die Labelspalte reelle Zahlen als Werte enthalten.

Die Anweisung SELECT dieser Abfrage verwendet alle Spalten in der Tabelle bigquery-public-data.ml_datasets.penguins. Diese Tabelle enthält die folgenden Spalten, die alle verwendet werden, um das Gewicht eines Pinillas vorherzusagen:

  • species: Arten von Pinguinen (STRING)
  • island: Insel, auf der der Pinguin lebt (STRING).
  • culmen_length_mm: Länge des Schnabelrückens in Millimetern (FLOAT64).
  • culmen_depth_mm: Tiefe des Schnabelrückens in Millimetern (FLOAT64)
  • flipper_length_mm: Länge der Schwimmflosse in Millimetern (FLOAT64).
  • sex – Geschlecht des Pinguins (STRING).

Die FROM-Klausel – bigquery-public-data.ml_datasets.penguins – gibt an, dass Sie die Pinguintabelle im Dataset ml_datasets abfragen. Dieses Dataset befindet sich im Projekt bigquery-public-data.

Die WHERE-Klausel – WHERE body_mass_g IS NOT NULL – schließt Zeilen aus, bei denen "body_mass_g" NULL ist.

Abfrage CREATE MODEL ausführen

So führen Sie die Abfrage CREATE MODEL zum Erstellen und Trainieren des Modells aus:

  1. Klicken Sie in der Cloud Console auf die Schaltfläche Neue Abfrage erstellen.

  2. Geben Sie in den Textbereich im Abfrageeditor die folgende Standard-SQL-Abfrage ein.

    #standardSQL
    CREATE MODEL `bqml_tutorial.penguins_model`
    OPTIONS
      (model_type='linear_reg',
        input_label_cols=['body_mass_g']) AS
    SELECT
      *
    FROM
      `bigquery-public-data.ml_datasets.penguins`
    WHERE
      body_mass_g IS NOT NULL
    
  3. Klicken Sie auf Ausführen.

    Die Abfrage dauert ungefähr 30 Sekunden. Anschließend wird das Modell (penguins_model) im Navigationsbereich angezeigt. Da die Abfrage eine CREATE MODEL-Anweisung zum Erstellen einer Tabelle verwendet, werden keine Abfrageergebnisse angezeigt.

Schritt 3 (optional): Trainingsstatistiken abrufen

Mit der Funktion ML.TRAINING_INFO können Sie die Ergebnisse des Modelltrainings abrufen. Alternativ lassen sich die Statistiken auch in der Cloud Console abrufen. In dieser Anleitung verwenden Sie die Cloud Console.

Ein maschineller Lernalgorithmus erstellt ein Modell durch Analyse vieler Beispiele. Ziel ist es, ein Modell zu finden, das den Verlust minimiert. Dieser Vorgang wird als empirische Risikominimierung bezeichnet.

Ein Verlust ist die Strafe für eine schlechte Vorhersage. Er wird als eine Zahl angegeben, die anzeigt, wie schlecht die Vorhersage des Modells in einem einzelnen Beispiel war. Wenn die Vorhersage des Modells genau ist, entspricht dies einem Verlust von null. Je ungenauer die Vorhersage ist, desto höher ist der Verlust. Ziel des Modelltrainings ist es, eine Reihe von Gewichtungen und Verzerrungen zu finden, die bei allen Beispielen im Schnitt einen geringen Verlust aufweisen.

So können Sie die Statistiken zum Modelltraining ansehen, die beim Ausführen der CREATE MODEL-Abfrage erzeugt wurden:

  1. Maximieren Sie im Navigationsbereich der Cloud Console im Abschnitt Ressourcen den Bereich [PROJECT_ID] > bqml_tutorial und klicken Sie dann auf penguin_model.

  2. Klicken Sie auf den Tab Training und dann auf Tabelle. Die Ergebnisse sollten so aussehen:

    ML.TRAINING_INFO output

    Die Spalte Trainingsdatenverlust enthält den Verlustmesswert, der berechnet wird, nachdem das Modell mit dem Trainings-Dataset trainiert wurde. Da Sie eine lineare Regression durchgeführt haben, enthält diese Spalte die mittlere quadratische Abweichung. Die Optimierungsstrategie "normal_equation" wird hier automatisch zum Trainieren verwendet. Daher ist nur eine einzelne Iteration bis zum endgültigen Modell erforderlich. Weitere Informationen zur optimize_strategy-Option finden Sie auf der Seite zur CREATE MODEL-Anweisung.

    Weitere Informationen zur ML.TRAINING_INFO-Funktion und zur Trainingsoption "optimize_strategy" finden Sie in der Syntaxreferenz zu BigQuery ML.

Schritt 4: Modell bewerten

Nachdem Sie das Modell erstellt haben, können Sie mit der Funktion ML.EVALUATE die Leistung des Modells bewerten. Die Funktion ML.EVALUATE wertet die vorhergesagten Werte anhand der tatsächlichen Daten aus.

Die Abfrage, die zur Bewertung des Modells verwendet wird, lautet:

#standardSQL
SELECT
  *
FROM
  ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`,
    (
    SELECT
      *
    FROM
      `bigquery-public-data.ml_datasets.penguins`
    WHERE
      body_mass_g IS NOT NULL))

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.penguins_model verwendet.

Die geschachtelte SELECT-Anweisung und die FROM-Klausel dieser Abfrage sind dieselben wie in der Abfrage CREATE MODEL.

Die WHERE-Klausel – WHERE body_mass_g IS NOT NULL – schließt Zeilen aus, bei denen body_mass_g NULL ist.

Sie können ML.EVALUATE auch aufrufen, ohne die Eingabedaten anzugeben. Es werden die Bewertungsmesswerte verwendet, die während des Trainings berechnet wurden:

#standardSQL
SELECT
  *
FROM
  ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`)

ML.EVALUATE-Abfrage ausführen

So führen Sie die ML.EVALUATE-Abfrage zur Bewertung des Modells aus:

  1. Klicken Sie in der Cloud Console auf die Schaltfläche Neue Abfrage erstellen.

  2. Geben Sie in den Textbereich im Abfrageeditor die folgende Standard-SQL-Abfrage ein.

    #standardSQL
    SELECT
      *
    FROM
      ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`,
        (
        SELECT
          *
        FROM
          `bigquery-public-data.ml_datasets.penguins`
        WHERE
          body_mass_g IS NOT NULL))
    
  3. (Optional) Klicken Sie auf Mehr > Abfrageeinstellungen, um den Verarbeitungsstandort festzulegen. Wählen Sie als Verarbeitungsstandort US aus. Dieser Schritt ist optional, da der Verarbeitungsort anhand des Standorts des Datasets automatisch erkannt wird.

    Abfrageeinstellungen

  4. Klicken Sie auf Run (Ausführen).

  5. Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Ergebnisse. Die Ergebnisse sollten so aussehen:

    Ausgabe von ML.EVALUATE

    Da Sie eine lineare Regression durchgeführt haben, enthalten die Ergebnisse die folgenden Spalten:

    • mean_absolute_error
    • mean_squared_error
    • mean_squared_log_error
    • median_absolute_error
    • r2_score
    • explained_variance

Ein wichtiger Messwert in den Bewertungsergebnissen ist der R2-Wert. Der R2-Wert ist ein statistisches Maß dafür, ob sich die Vorhersagen der linearen Regression den tatsächlichen Daten annähern. 0 gibt an, dass das Modell keine Erklärung für die Variabilität der Antwortdaten um den Mittelwert liefert. 1 gibt an, dass das Modell eine Erklärung für die gesamte Variabilität der Antwortdaten um den Mittelwert liefert.

Schritt 5: 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 Körpermasse der in Biscoe lebenden Pinguine in Gramm vorherzusagen.

Die Abfrage zur Vorhersage des Ergebnisses lautet so:

#standardSQL
SELECT
  *
FROM
  ML.PREDICT(MODEL `bqml_tutorial.penguins_model`,
    (
    SELECT
      *
    FROM
      `bigquery-public-data.ml_datasets.penguins`
    WHERE
      body_mass_g IS NOT NULL
      AND island = "Biscoe"))

Abfragedetails

Die oberste SELECT-Anweisung ruft die Spalte predicted_body_mass_g zusammen mit den Spalten in bigquery-public-data.ml_datasets.penguins ab. 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 eines der beiden Eingabelabels, je nachdem, welches Label die höhere prognostizierte Wahrscheinlichkeit hat.

Die Funktion ML.PREDICT wird verwendet, um Ergebnisse anhand des Modells bqml_tutorial.penguins_model vorherzusagen.

Die geschachtelte SELECT-Anweisung und die FROM-Klausel dieser Abfrage sind dieselben wie in der Abfrage CREATE MODEL.

Die WHERE-Klausel – WHERE island = "Biscoe" – gibt an, dass Sie die Vorhersage auf die Insel Biscoe beschränken.

Abfrage ML.PREDICT ausführen

So führen Sie die Abfrage aus, die das Modell zur Vorhersage eines Ergebnisses verwendet:

  1. Klicken Sie in der Cloud Console auf die Schaltfläche Neue Abfrage erstellen.

  2. Geben Sie in den Textbereich im Abfrageeditor die folgende Standard-SQL-Abfrage ein.

    #standardSQL
      SELECT
        *
      FROM
        ML.PREDICT(MODEL `bqml_tutorial.penguins_model`,
          (
          SELECT
            *
          FROM
            `bigquery-public-data.ml_datasets.penguins`
          WHERE
            body_mass_g IS NOT NULL
            AND island = "Biscoe"))
    
  3. (Optional) Klicken Sie auf Mehr > Abfrageeinstellungen, um den Verarbeitungsstandort festzulegen. Wählen Sie als Verarbeitungsstandort US aus. Dieser Schritt ist optional, da der Verarbeitungsort anhand des Standorts des Datasets automatisch erkannt wird.

    Abfrageeinstellungen

  4. Klicken Sie auf Run (Ausführen).

  5. Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Ergebnisse. Die Ergebnisse sollten so aussehen:

    Ausgabe von ML.PREDICT

Schritt 6 (optional): Vorhersageergebnisse mit erklärbaren KI-Methoden erläutern

Mit der Funktion ML.EXPLAIN_PREDICT können Sie ermitteln, warum Ihr Modell diese Vorhersageergebnisse generiert.

Ausführlichere Erläuterungen zu Shapley-Werten und Erklärbarkeitsangeboten für andere Modelle in BigQuery ML finden Sie in der Übersicht zu BigQuery ML Explainable AI.

Die Abfrage, die zum Generieren von Erläuterungen verwendet wird, lautet so:

#standardSQL
SELECT
  *
FROM
  ML.EXPLAIN_PREDICT(MODEL `bqml_tutorial.penguins_model`,
    (
    SELECT
      *
    FROM
      `bigquery-public-data.ml_datasets.penguins`
    WHERE
      body_mass_g IS NOT NULL
      AND island = "Biscoe"),
    STRUCT(3 as top_k_features))

Abfragedetails

Abfrage ML.EXPLAIN_PREDICT ausführen

So führen Sie die ML.EXPLAIN_PREDICT-Abfrage zur Erläuterung des Modells aus:

  1. Klicken Sie in der Cloud Console auf die Schaltfläche Neue Abfrage erstellen.

  2. Geben Sie im Feld Abfrageeditor die folgende Standard-SQL-Abfrage ein.

    #standardSQL
    SELECT
    *
    FROM
    ML.EXPLAIN_PREDICT(MODEL `bqml_tutorial.penguins_model`,
      (
      SELECT
        *
      FROM
        `bigquery-public-data.ml_datasets.penguins`
      WHERE
        body_mass_g IS NOT NULL
        AND island = "Biscoe"),
      STRUCT(3 as top_k_features))
    
  3. Klicken Sie auf Ausführen.

  4. Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Abfrageeditors auf den Tab Ergebnisse. Die Ergebnisse sollten so aussehen:

    Ausgabe von ML.EXPLAIN_PREDICT

Bei linearen Regressionsmodellen werden Shapley-Werte verwendet, um Attributwerte pro Feature im Modell zu generieren. ML.EXPLAIN_PREDICT gibt die drei wichtigsten Featureattributionen pro Zeile der angegebenen Tabelle aus, da top_k_features in der Abfrage auf 3 gesetzt wurde. Diese Zuordnungen werden nach dem absoluten Wert der Attribution in absteigender Reihenfolge sortiert. In Zeile 1 dieses Beispiels trug die Funktionsex am meisten zur Gesamtvorhersage bei, aber in Zeile 2 dieses Beispiels trug island am meisten zur Gesamtvorhersage bei.

(Optional) Schritt 7: Modell global erklären

Mit der Funktion ML.GLOBAL_EXPLAIN können Sie besser nachvollziehen, warum Ihr Modell seine allgemeine Vorhersage vorhersagt. Zur Verwendung von ML.GLOBAL_EXPLAIN muss das Modell mit der Option ENABLE_GLOBAL_EXPLAIN=TRUE neu trainiert werden. Führen Sie die Trainingsabfrage mit dieser Option noch einmal aus. Verwenden Sie dazu die folgende Abfrage:

    #standardSQL
    CREATE OR REPLACE MODEL bqml_tutorial.penguins_model
    OPTIONS
      (model_type='linear_reg',
      input_label_cols=['body_mass_g'],
      enable_global_explain=TRUE) AS
    SELECT
      *
    FROM
      bigquery-public-data.ml_datasets.penguins
    WHERE
      body_mass_g IS NOT NULL
  

Über ML.GLOBAL_EXPLAIN auf globale Erläuterungen zugreifen

Die Abfrage, die zum Generieren globaler Erläuterungen verwendet wird, lautet:

#standardSQL
SELECT
  *
FROM
  ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)

Abfragedetails

Abfrage ML.GLOBAL_EXPLAIN ausführen

So führen Sie die Abfrage ML.GLOBAL_EXPLAIN aus:

  1. Klicken Sie in der Cloud Console auf die Schaltfläche Neue Abfrage erstellen.

  2. Geben Sie in den Textbereich im Abfrageeditor die folgende Standard-SQL-Abfrage ein.

    #standardSQL
    SELECT
    *
    FROM
    ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
    
  3. (Optional) Klicken Sie auf Mehr > Abfrageeinstellungen, um den Verarbeitungsstandort festzulegen. Wählen Sie als Verarbeitungsstandort US aus. Dieser Schritt ist optional, da der Verarbeitungsort anhand des Standorts des Datasets automatisch erkannt wird.

    Abfrageeinstellungen

  4. Klicken Sie auf Run (Ausführen).

  5. Sobald die Abfrage abgeschlossen ist, klicken Sie unterhalb des Textbereichs der Abfrage auf den Tab Ergebnisse. Die Ergebnisse sollten so aussehen:

    Ausgabe von ML.GLOBAL_EXPLAIN

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.

Datasets 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 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 Dataset löschen. Dadurch werden das Dataset, die Tabelle und alle Daten 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 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