In dieser Anleitung verwenden Sie ein binäres logistisches Regressionsmodell in BigQuery ML, um den Einkommensbereich von Personen basierend auf ihren demografischen Daten vorherzusagen. Ein binäres logistisches Regressionsmodell sagt vorher, ob ein Wert in eine von zwei Kategorien fällt. In diesem Fall, ob das jährliche Einkommen einer Person über oder unter 50.000 $ fällt.
In dieser Anleitung wird das Dataset bigquery-public-data.ml_datasets.census_adult_income
verwendet. Dieses Dataset enthält demografische und einkommensbezogene Informationen von US-Bürgern aus den Jahren 2000 und 2010.
Ziele
Aufgaben in dieser Anleitung:- Logistisches Regressionsmodell erstellen
- Modell bewerten
- Vorhersagen mithilfe des Modells treffen.
- Die vom Modell generierten Ergebnisse erklären.
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.
Hinweise
-
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.
-
Enable the BigQuery API.
Erforderliche Berechtigungen
Zum Erstellen des Modells mit BigQuery ML benötigen Sie die folgenden IAM-Berechtigungen:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Zum Ausführen von Inferenzen benötigen Sie die folgenden Berechtigungen:
bigquery.models.getData
für das Modellbigquery.jobs.create
Einführung
Eine häufige Aufgabe beim maschinellen Lernen besteht darin, Daten einem von zwei Typen zuzuordnen, den sogenannten Labels. Beispielsweise wäre es für einen Einzelhändler interessant, anhand von bestimmten Informationen zu einem Kunden vorherzusagen, ob dieser Kunde ein neues Produkt kauft. In diesem Fall könnten die beiden Labels will buy
und won't buy
lauten. Der Einzelhändler kann ein Dataset so erstellen, dass eine Spalte beide Labels darstellt und außerdem Kundeninformationen wie den Standort des Kunden, seine vorherigen Einkäufe und die gemeldeten Präferenzen enthält. Der Einzelhändler kann dann ein binäres logistisches Regressionsmodell verwenden, das anhand dieser Kundeninformationen vorhersagt, welches Label den jeweiligen Kunden am besten repräsentiert.
In dieser Anleitung erstellen Sie ein binäres logistisches Regressionsmodell, das anhand der demografischen Attribute eines Befragten bei der US-Volkszählung vorhersagt, ob sein Einkommen in einen von zwei Bereichen fällt.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset zum Speichern des Modells:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
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
census
ein.Wählen Sie als Standorttyp die Option Multiregional 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 und klicken Sie auf Dataset erstellen.
Sehen Sie sich die Daten an
Untersuchen Sie das Dataset und ermitteln Sie, welche Spalten als Trainingsdaten für das logistische Regressionsmodell verwendet werden sollen. Wählen Sie 100 Zeilen aus der Tabelle census_adult_income
aus:
SQL
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor die folgende GoogleSQL-Abfrage aus:
SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, functional_weight FROM `bigquery-public-data.ml_datasets.census_adult_income` LIMIT 100;
Die Ergebnisse sehen in etwa so aus:
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.
In den Abfrageergebnissen sehen Sie, dass die Spalte income_bracket
der Tabelle census_adult_income
nur einen von zwei Werten enthält: <=50K
oder >50K
. Die Spalte functional_weight
gibt die Anzahl der Personen an, die nach Ansicht der Volkszählungs-Organisationdurch eine bestimmte Zeile repräsentiert wird. Die Werte dieser Spalte stehen in keinem Zusammenhang mit dem Wert von income_bracket
für eine bestimmte Zeile.
Beispieldaten vorbereiten
In dieser Anleitung sagen Sie das Einkommen der Befragten bei der Volkszählung anhand der folgenden Attribute vorher:
- Alter
- Art der Tätigkeit
- Familienstand
- Bildungsniveau
- Beruf
- Arbeitsstunden pro Woche
Für diese Vorhersage extrahieren Sie Informationen aus Daten zu Befragten der Volkszählung in der Tabelle census_adult_income
. Wählen Sie Featurespalten aus, einschließlich:
education_num
, das für das Bildungsniveau des Befragten stehtworkclass
, das für die Art der Tätigkeit des Befragten steht
Schließen Sie Spalten aus, die Daten duplizieren. Beispiel:
education
, daeducation
undeducation_num
dieselben Daten in unterschiedlichen Formaten ausdrücken
Trennen Sie die Daten in Trainings-, Auswertungs- und Vorhersage-Sets, indem Sie eine neue dataframe
-Spalte erstellen, die von der functional_weight
-Spalte abgeleitet wird.
Weisen Sie 80 % der Datenquelle anhand von Labels dem Trainieren des Modells zu und reservieren Sie die verbleibenden 20 % für die Bewertung und Vorhersage.
SQL
Erstellen Sie zur Vorbereitung der Beispieldaten eine Ansicht, die die Trainingsdaten enthält. Diese Ansicht wird später in dieser Anleitung von der CREATE MODEL
-Anweisung verwendet.
Führen Sie die Abfrage aus, mit der die Beispieldaten vorbereitet werden:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
CREATE OR REPLACE VIEW `census.input_data` AS SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, CASE WHEN MOD(functional_weight, 10) < 8 THEN 'training' WHEN MOD(functional_weight, 10) = 8 THEN 'evaluation' WHEN MOD(functional_weight, 10) = 9 THEN 'prediction' END AS dataframe FROM `bigquery-public-data.ml_datasets.census_adult_income`
Maximieren Sie im Bereich Explorer das Dataset
census
und suchen Sie die Ansichtinput_data
.Klicken Sie auf den Namen der Ansicht, um den Informationsbereich zu öffnen. Das Ansichtsschema wird auf dem Tab Schema angezeigt.
BigQuery DataFrames
Erstellen Sie einen DataFrame
mit dem Namen input_data
. Sie verwenden input_data
später in dieser Anleitung, um das Modell zu trainieren, zu bewerten und Vorhersagen zu treffen.
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.
Logistisches Regressionsmodell erstellen
Erstellen Sie ein logistisches Regressionsmodell mit den Trainingsdaten, die Sie im vorherigen Abschnitt mit Labels versehen haben.
SQL
Verwenden Sie die Anweisung CREATE MODEL
und geben Sie LOGISTIC_REG
als Modelltyp an.
Im Folgenden finden Sie nützliche Informationen zur CREATE MODEL
-Anweisung:
Die Option
input_label_cols
gibt an, welche Spalte in derSELECT
-Anweisung als Labelspalte verwendet werden soll. Hier ist die Labelspalteincome_bracket
, sodass das Modell anhand der anderen in dieser Zeile vorhandenen Werte lernt, welcher der beiden Werte vonincome_bracket
für eine bestimmte Zeile am wahrscheinlichsten ist.Sie müssen nicht angeben, ob ein logistisches Regressionsmodell binär oder mehrklassig ist. BigQuery kann anhand der Anzahl der eindeutigen Werte in der Labelspalte bestimmen, welcher Modelltyp trainiert werden soll.
Die Option
auto_class_weights
ist aufTRUE
gesetzt, um die Klassenlabels in den Trainingsdaten auszugleichen. Standardmäßig sind die Trainingsdaten ungewichtet. Wenn die Labels in den Trainingsdaten ungewichtet sind, lernt das Modell unter Umständen, bei der Vorhersage die häufigste Labelklasse zu stark einzubeziehen. In diesem Fall befinden sich die meisten Befragten im Dataset in der unteren Einkommensklasse. Dies kann zu einem Modell führen, in dem bei der Vorhersage die untere Einkommensklasse zu stark berücksichtigt wird. Mit Klassengewichtungen werden die Klassenlabels ausgewogen. Dazu werden für jede Klasse die Gewichtungen im umgekehrten Verhältnis zur Häufigkeit dieser Klasse berechnet.Die Anweisung
SELECT
fragt die Ansichtinput_data
ab, die die Trainingsdaten enthält. Die KlauselWHERE
filtert die Zeilen ininput_data
so, dass nur die Zeilen zum Trainieren des Modells verwendet werden, die als Trainingsdaten gekennzeichnet sind.
Führen Sie die Abfrage aus, mit der Ihr logistisches Regressionsmodell erstellt wird:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
CREATE OR REPLACE MODEL `census.census_model` OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, data_split_method='NO_SPLIT', input_label_cols=['income_bracket'], max_iterations=15) AS SELECT * EXCEPT(dataframe) FROM `census.input_data` WHERE dataframe = 'training'
Maximieren Sie im Bereich Explorer das Dataset
census
und dann den Ordner Modelle.Klicken Sie auf das Modell census_model, um den Informationsbereich zu öffnen.
Klicken Sie auf den Tab Schema (Schema). Das Modellschema führt die Attribute auf, die BigQuery ML zur Durchführung der logistischen Regression verwendet hat. Das Schema sollte in etwa so aussehen:
BigQuery DataFrames
Verwenden Sie die Methode fit
, um das Modell zu trainieren, und die Methode to_gbq
, um es in Ihrem Dataset zu speichern.
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.
Modellleistung bewerten
Nachdem Sie das Modell erstellt haben, bewerten Sie die Leistung des Modells anhand der tatsächlichen Daten.
SQL
Die Funktion ML.EVALUATE
-Funktion wertet die vom Modell generierten vorhergesagten Werte anhand der tatsächlichen Daten aus.
Als Eingabe verwendet die Funktion ML.EVALUATE
das trainierte Modell und die Zeilen aus der Ansicht input_data
, für die evaluation
als Spaltenwert dataframe
festgelegt ist. Die Funktion gibt eine einzelne Zeile mit Statistiken zum Modell zurück.
Führen Sie die ML.EVALUATE
-Abfrage aus:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
SELECT * FROM ML.EVALUATE (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation' ) )
Die Ergebnisse sehen in etwa so aus:
BigQuery DataFrames
Verwenden Sie die Methode score
, um das Modell anhand der tatsächlichen Daten zu bewerten.
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.
Sie können auch den Informationsbereich des Modells in der Google Cloud Console aufrufen, um die während des Trainings berechneten Bewertungsmesswerte aufzurufen:
Einkommensklasse vorhersagen
Ermitteln Sie mithilfe des Modells die Einkommensklasse, zu der ein bestimmter Befragter wahrscheinlich gehört.
SQL
Verwenden Sie die Funktion ML.PREDICT
, um Vorhersagen zur wahrscheinlichen Einkommensklasse zu treffen. Geben Sie das trainierte Modell und die Zeilen aus der Ansicht input_data
ein, für die prediction
als Spaltenwert dataframe
festgelegt ist.
Führen Sie die ML.PREDICT
-Abfrage aus:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
SELECT * FROM ML.PREDICT (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'prediction' ) )
Die Ergebnisse sehen in etwa so aus:
predicted_income_bracket
ist der vorhergesagte Wert von income_bracket
.
BigQuery DataFrames
Verwenden Sie die Methode predict
, um Vorhersagen zur wahrscheinlichen Einkommensklasse zu treffen.
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.
Vorhersageergebnisse erklären
Mit der Funktion ML.EXPLAIN_PREDICT
können Sie ermitteln, warum das Modell diese Vorhersageergebnisse generiert.
ML.EXPLAIN_PREDICT
ist eine erweiterte Version der Funktion ML.PREDICT
.
ML.EXPLAIN_PREDICT
gibt nicht nur Vorhersageergebnisse aus, sondern gibt auch zusätzliche Spalten aus, um die Vorhersageergebnisse zu erklären. In der Praxis können Sie ML.EXPLAIN_PREDICT
anstelle von ML.PREDICT
ausführen. Weitere Informationen finden Sie in der Übersicht zu BigQuery ML Explainable AI.
Führen Sie die ML.EXPLAIN_PREDICT
-Abfrage aus:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus:
SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation'), STRUCT(3 as top_k_features))
Die Ergebnisse sehen in etwa so aus:
Bei logistischen Regressionsmodellen werden Shapley-Werte verwendet, um für jedes Feature im Modell Feature-Attributionswerte zu generieren. ML.EXPLAIN_PREDICT
gibt die drei wichtigsten Featureattributionen pro Zeile der Ansicht input_data
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 wird die Funktionhours_per_week
am meisten zur Gesamtvorhersage beigetragen, aber in Zeile 2 trug occupation
am meisten zur allgemeinen Vorhersage bei.
Modell global erklären
Mit der Funktion ML.GLOBAL_EXPLAIN
können Sie ermitteln, welche Features im Allgemeinen am wichtigsten sind, um die Einkommensklasse zu ermitteln.
Zur Verwendung von ML.GLOBAL_EXPLAIN
müssen Sie das Modell mit der Option ENABLE_GLOBAL_EXPLAIN
auf TRUE
neu trainieren.
Trainieren Sie das Modell neu und rufen Sie globale Erläuterungen für das Modell ab:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor die folgende Abfrage aus, um das Modell neu zu trainieren:
CREATE OR REPLACE MODEL `census.census_model` OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, enable_global_explain=TRUE, input_label_cols=['income_bracket'] ) AS SELECT * EXCEPT(dataframe) FROM `census.input_data` WHERE dataframe = 'training'
Führen Sie im Abfrageeditor die folgende Abfrage aus, um globale Erläuterungen zu erhalten:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `census.census_model`)
Die Ergebnisse sehen in etwa so aus:
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.
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.
Klicken Sie im Navigationsbereich auf das Dataset census, das Sie erstellt haben.
Klicken Sie rechts im Fenster auf 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 (
census
) 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
- Mehr zum Erstellen von Modellen auf der Seite zur
CREATE MODEL
-Syntax