GSP246
Überblick
BigQuery ist eine vollständig
verwaltete, automatisierte und kostengünstige Analysedatenbank von Google. Mit
diesem Tool können Sie mehrere Terabyte an Daten abfragen und müssen dabei
weder eine Infrastruktur verwalten noch benötigen Sie
Datenbankadministrator*innen.
Mit
BigQuery ML
können Data Analysts bei minimalem Programmieraufwand ML-Modelle (Machine
Learning) erstellen, trainieren und bewerten sowie damit Vorhersagen treffen.
In diesem Lab analysieren Sie mehrere Millionen Fahrten mit den typischen
gelben New York City Taxi Cabs, die in einem öffentlichen BigQuery-Dataset
verfügbar sind. Danach erstellen Sie anhand dieser Daten mithilfe von BigQuery
ein ML-Modell, das die voraussichtlichen Taxikosten auf Grundlage der
Modelleingaben vorhersagt. Außerdem bewerten Sie die Leistung des Modells und
nutzen es für Vorhersagen.
Lerninhalte
Aufgaben in diesem Lab:
- Mit BigQuery nach öffentlichen Datasets suchen
-
Das öffentliche Dataset zu New York City Taxi Cabs abfragen und analysieren
- Ein Trainings- und Bewertungs-Dataset zur Batch-Vorhersage erstellen
- Ein Prognosemodell (lineare Regression) in BigQuery ML erstellen
- Die Leistung Ihres ML-Modells bewerten
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können.
Auf der rechten Seite befindet sich der Bereich Lab-Einrichtung und ‑Zugriff:
- Button Google Cloud Console öffnen
- Die temporären Anmeldedaten (Nutzername und Passwort), die Sie für dieses Lab verwenden müssen
- Gegebenenfalls weitere Informationen für dieses Lab
Der Lab-Timer befindet sich oben auf der Seite und zeigt die verbleibende Zeit an.
-
Klicken Sie auf Google Cloud Console öffnen. Wenn Sie Chrome verwenden, können Sie auch rechtsklicken und Link in Inkognitofenster öffnen auswählen.
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
-
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}}
Sie finden den Nutzernamen auch im Bereich Lab-Einrichtung und ‑Zugriff.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}}
Sie finden das Passwort auch im Bereich Lab-Einrichtung und ‑Zugriff.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos.
Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
-
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder 2-Faktor-Authentifizierung hinzu, da dies nur ein temporäres Konto ist.
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein.
Die BigQuery Console öffnen
- Klicken Sie in der Google Cloud Console im Navigationsmenü auf BigQuery.
Zuerst wird das Fenster Willkommen bei BigQuery in der Cloud Console geöffnet, das neben allgemeinen Informationen auch einen Link zur Kurzanleitung und zu den Versionshinweisen enthält.
- Klicken Sie auf Fertig.
Die BigQuery Console wird geöffnet.
Aufgabe 1: Taxidaten analysieren
Frage: Wie viele Fahrten mit NYC Taxi Cabs fanden im
Jahr 2015 monatlich statt?
-
Kopieren Sie die folgende SQL-Abfrage und fügen Sie sie in den
Abfrage-EDITOR ein:
#standardSQL
SELECT
TIMESTAMP_TRUNC(pickup_datetime,
MONTH) month,
COUNT(*) trips
FROM
`bigquery-public-data.new_york.tlc_yellow_trips_2015`
GROUP BY
1
ORDER BY
1
- Klicken Sie dann auf Ausführen.
Sie sollten das folgende Ergebnis erhalten:
Wie zu sehen ist, gab es 2015 jeden Monat mehr als zehn Millionen Fahrten von
NYC Taxi Cabs – nicht gerade wenig!
Abgeschlossene Aufgabe testen
Klicken Sie auf Fortschritt prüfen. Haben Sie die Aufgabe
erfolgreich abgeschlossen, erhalten Sie ein Testergebnis.
Fahrten von NYC Taxi Cabs für jeden Monat des Jahres 2015 berechnen
Frage: Wie hoch war die Durchschnittsgeschwindigkeit im
Jahr 2015 bei Fahrten mit NYC Taxi Cabs?
-
Ersetzen Sie die vorherige Abfrage durch die folgende und klicken Sie dann
auf Ausführen:
#standardSQL
SELECT
EXTRACT(HOUR
FROM
pickup_datetime) hour,
ROUND(AVG(trip_distance / TIMESTAMP_DIFF(dropoff_datetime,
pickup_datetime,
SECOND))*3600, 1) speed
FROM
`bigquery-public-data.new_york.tlc_yellow_trips_2015`
WHERE
trip_distance > 0
AND fare_amount/trip_distance BETWEEN 2
AND 10
AND dropoff_datetime > pickup_datetime
GROUP BY
1
ORDER BY
1
Sie sollten das folgende Ergebnis erhalten:
Tagsüber liegt die Durchschnittsgeschwindigkeit bei etwa 11–12 mph
(18–19 km/h). Um 05:00 Uhr morgens ist sie mit ungefähr 21 mph (34 km/h)
beinahe doppelt so hoch. Dies ergibt durchaus Sinn, da es um diese Uhrzeit
wahrscheinlich weniger Verkehr auf den Straßen gibt.
Abgeschlossene Aufgabe testen
Klicken Sie auf Fortschritt prüfen. Haben Sie die Aufgabe
erfolgreich abgeschlossen, erhalten Sie ein Testergebnis.
Durchschnittsgeschwindigkeit von Fahrten mit NYC Taxi Cabs im Jahr 2015
berechnen
Aufgabe 2: Ziel festlegen
Sie erstellen in BigQuery nun ein ML-Modell, das auf Grundlage des
historischen Taxifahrten-Datasets und der Angaben für eine konkrete Fahrt die
Kosten einer Taxifahrt in New York City vorhersagt. Dies kann die Planung
einer Fahrt für Fahrgast und Taxiunternehmen erleichtern.
Aufgabe 3: Features auswählen und Trainings-Dataset erstellen
Das Dataset zu Taxifahrten in NYC ist ein
öffentliches Dataset
der Stadt, das in BigQuery geladen wurde, damit Sie es analysieren können.
Unter diesem Link
finden Sie eine vollständige Übersicht der Felder. Anschließend können Sie
eine
Vorschau des Datasets
aufrufen und nützliche Features kennenlernen, die den Zusammenhang zwischen
bisherigen Daten zu Taxifahrten und einem konkreten Fahrpreis verdeutlichen.
Ihr Team möchte nun testen, ob sich die folgenden Felder gut als Eingaben für
das Fahrtkosten-Prognosemodell eignen:
- Mautgebühren
- Fahrtkosten
- Tageszeit
- Startadresse
- Zieladresse
- Anzahl der Passagiere
- Ersetzen Sie die vorherige Abfrage durch folgende:
#standardSQL
WITH params AS (
SELECT
1 AS TRAIN,
2 AS EVAL
),
daynames AS
(SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),
taxitrips AS (
SELECT
(tolls_amount + fare_amount) AS total_fare,
daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
pickup_longitude AS pickuplon,
pickup_latitude AS pickuplat,
dropoff_longitude AS dropofflon,
dropoff_latitude AS dropofflat,
passenger_count AS passengers
FROM
`nyc-tlc.yellow.trips`, daynames, params
WHERE
trip_distance > 0 AND fare_amount > 0
AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.TRAIN
)
SELECT *
FROM taxitrips
Beachten Sie bei der Abfrage Folgendes:
-
Der Hauptteil der Abfrage befindet sich unten (
SELECT * from taxitrips).
-
Der Großteil der Extraktion aus dem NYC-Dataset wird in der Unterabfrage
taxitrips vorgenommen, in deren SELECT-Anweisung
die Trainingsfeatures und Labels spezifiziert sind.
-
Mit der
WHERE-Klausel werden alle Daten entfernt, die Sie nicht
für das Training verwenden möchten.
-
Die
WHERE-Klausel enthält außerdem eine Sampling-Klausel,
sodass nur ein Tausendstel der Daten eingelesen wird.
-
Definieren Sie eine Variable namens
TRAIN, sodass Sie schnell
einen unabhängigen EVAL-Satz erstellen können.
-
Nachdem Sie nun den Zweck dieser Abfrage besser verstanden haben, klicken
Sie auf Ausführen.
Das Ergebnis sollte ungefähr so aussehen:
Wie heißt das Label (richtige Antwort)?
total_fare ist das Label (was Sie voraussagen werden). Dieses
Feld setzt sich aus tolls_amount und
fare_amount zusammen. Trinkgelder der Fahrgäste werden also nicht
berücksichtigt, da diese nach eigenem Ermessen gegeben werden.
Abgeschlossene Aufgabe testen
Klicken Sie auf Fortschritt prüfen. Haben Sie die Aufgabe
erfolgreich abgeschlossen, erhalten Sie ein Testergebnis.
Testen, ob sich die Felder gut als Eingaben für das Fahrtkosten-Prognosemodell
eignen
Aufgabe 4: BigQuery-Dataset zum Speichern von Modellen erstellen
In diesem Abschnitt erstellen Sie ein neues BigQuery-Dataset, in dem Ihre
ML-Modelle gespeichert werden.
-
Klicken Sie links unter Explorer auf das Symbol
Aktionen ansehen neben der Projekt-ID und dann auf
Dataset erstellen.
-
Machen Sie im Dialogfeld „Dataset erstellen“ folgende Angaben:
-
Geben Sie unter Dataset-ID den Begriff
taxi ein.
-
Wählen Sie für Standorttyp die Option
us (mehrere Regionen in den USA) aus.
- Übernehmen Sie für alle anderen Werte die Standardeinstellung.
- Klicken Sie dann auf Dataset erstellen.
Abgeschlossene Aufgabe testen
Klicken Sie auf Fortschritt prüfen. Haben Sie die Aufgabe
erfolgreich abgeschlossen, erhalten Sie ein Testergebnis.
BigQuery-Dataset zum Speichern von Modellen erstellen
Aufgabe 5: BigQuery ML-Modelltyp auswählen und Optionen festlegen
Nachdem Sie die Ausgangsfeatures ausgewählt haben, können Sie nun Ihr erstes
ML-Modell in BigQuery erstellen.
Sie haben die Wahl zwischen folgenden Modelltypen:
-
Prognose numerischer Werte wie der Verkäufe im kommenden Monat mit
linearer Regression (linear_reg)
-
Binäre oder mehrklassige Klassifikation wie Spam beziehungsweise
Nicht-Spam-E-Mails mit logistischer Regression (logistic_reg)
-
k-Means-Clustering für unüberwachtes Lernen zur explorativen
Datenanalyse (kmeans)
Hinweis: Für Machine Learning werden viele weitere Modelltypen verwendet, beispielsweise neuronale Netzwerke und Entscheidungsbäume. Sie sind in Bibliotheken wie TensorFlow verfügbar. In BigQuery ML werden momentan jedoch nur die drei oben aufgeführten Modelltypen unterstützt. Weitere Informationen finden Sie in der BigQuery ML-Roadmap.
-
Geben Sie die folgende Abfrage ein, um ein Modell zu erstellen und
Modelloptionen festzulegen:
CREATE or REPLACE MODEL taxi.taxifare_model
OPTIONS
(model_type='linear_reg', labels=['total_fare']) AS
WITH params AS (
SELECT
1 AS TRAIN,
2 AS EVAL
),
daynames AS
(SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),
taxitrips AS (
SELECT
(tolls_amount + fare_amount) AS total_fare,
daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
pickup_longitude AS pickuplon,
pickup_latitude AS pickuplat,
dropoff_longitude AS dropofflon,
dropoff_latitude AS dropofflat,
passenger_count AS passengers
FROM
`nyc-tlc.yellow.trips`, daynames, params
WHERE
trip_distance > 0 AND fare_amount > 0
AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.TRAIN
)
SELECT *
FROM taxitrips
-
Klicken Sie dann auf Ausführen, um das Modell zu
trainieren.
-
Warten Sie fünf bis zehn Minuten.
Sie werden mit folgender Benachrichtigung darüber informiert, dass der Vorgang
abgeschlossen ist und das Modell erfolgreich trainiert wurde: „Durch diese
Anweisung wird ein neues Modell namens
qwiklabs-gcp-03-xxxxxxxx:taxi.taxifare_model erstellt.“
-
Prüfen Sie nun, ob taxifare_model tatsächlich im
Taxi-Dataset angezeigt wird.
Als Nächstes bewerten Sie die Leistung des Modells anhand neuer, ungesehener
Bewertungsdaten.
Abgeschlossene Aufgabe testen
Klicken Sie auf Fortschritt prüfen. Haben Sie die Aufgabe
erfolgreich abgeschlossen, erhalten Sie ein Testergebnis.
„taxifare“-Modell erstellen
Aufgabe 6: Leistung des Klassifizierungsmodells bewerten
Kriterien auswählen
Für lineare Regressionsmodelle sollten Sie einen Verlustmesswert wie die
Wurzel der mittleren Fehlerquadratsumme
(Root Mean Square Error, RMSE) verwenden. Es empfiehlt sich, ein Modell
solange zu trainieren und zu verbessern, bis es den niedrigsten RMSE-Wert
erreicht hat.
Das Feld mean_squared_error kann in BigQuery ML bei der Bewertung
des trainierten ML-Modells abgefragt werden. Fügen Sie eine
SQRT()-Funktion hinzu, um den RMSE-Wert zu erhalten.
Da die Trainingsphase nun abgeschlossen ist, können Sie die Leistung Ihres
Modells mit dieser Abfrage und ML.EVALUATE testen.
-
Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrage-EDITOR
ein. Klicken Sie dann auf Ausführen:
#standardSQL
SELECT
SQRT(mean_squared_error) AS rmse
FROM
ML.EVALUATE(MODEL taxi.taxifare_model,
(
WITH params AS (
SELECT
1 AS TRAIN,
2 AS EVAL
),
daynames AS
(SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),
taxitrips AS (
SELECT
(tolls_amount + fare_amount) AS total_fare,
daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
pickup_longitude AS pickuplon,
pickup_latitude AS pickuplat,
dropoff_longitude AS dropofflon,
dropoff_latitude AS dropofflat,
passenger_count AS passengers
FROM
`nyc-tlc.yellow.trips`, daynames, params
WHERE
trip_distance > 0 AND fare_amount > 0
AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.EVAL
)
SELECT *
FROM taxitrips
))
Damit wird das Modell mit dem Filter params.EVAL gegen ein
anderes Dataset mit Taxifahrten ausgeführt.
-
Prüfen Sie nach der Ausführung des Modells die Ergebnisse. Ihr RMSE-Wert
kann geringfügig abweichen.
|
Zeile
|
RMSE
|
1 |
9,477056435999074 |
Nachdem Sie das Modell evaluiert haben, erhalten Sie einen
RMSE-Wert von 9,47. Der Fehlerwert von 9,47 kann mit
denselben Einheiten ausgewertet werden wie „total_fare“, also lautet das
Ergebnis +-9,47 $.
Ob das Modell mit diesem Verlustmesswert bereit für die Produktion ist, hängt
von den Benchmark-Kriterien ab, die Sie vor der Trainingsphase definiert
haben. Beim Benchmarking wird die niedrigste akzeptable Leistung und Accuracy
des Modells festlegt.
Abgeschlossene Aufgabe testen
Klicken Sie auf Fortschritt prüfen. Haben Sie die Aufgabe
erfolgreich abgeschlossen, erhalten Sie ein Testergebnis.
Leistung des Klassifizierungsmodells bewerten
Aufgabe 7: Kosten einer Taxifahrt vorhersagen
Als Nächstes schreiben Sie eine Abfrage, um mithilfe des neuen Modells
Vorhersagen zu treffen.
-
Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrage-EDITOR
ein. Klicken Sie dann auf Ausführen:
#standardSQL
SELECT
*
FROM
ml.PREDICT(MODEL `taxi.taxifare_model`,
(
WITH params AS (
SELECT
1 AS TRAIN,
2 AS EVAL
),
daynames AS
(SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),
taxitrips AS (
SELECT
(tolls_amount + fare_amount) AS total_fare,
daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
pickup_longitude AS pickuplon,
pickup_latitude AS pickuplat,
dropoff_longitude AS dropofflon,
dropoff_latitude AS dropofflat,
passenger_count AS passengers
FROM
`nyc-tlc.yellow.trips`, daynames, params
WHERE
trip_distance > 0 AND fare_amount > 0
AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.EVAL
)
SELECT *
FROM taxitrips
));
Nun werden die vom Modell vorhergesagten Taxikosten sowie die tatsächlichen
Preise und weitere Features dieser Fahrten angezeigt. Ihre Ergebnisse sollten
ähnlich wie die unten stehenden aussehen:

Abgeschlossene Aufgabe testen
Klicken Sie auf Fortschritt prüfen. Haben Sie die Aufgabe
erfolgreich abgeschlossen, erhalten Sie ein Testergebnis.
Kosten einer Taxifahrt vorhersagen
Aufgabe 8: Modell mit Feature Engineering verbessern
Das Erstellen von Machine-Learning-Modellen ist ein iterativer Prozess.
Nachdem die Leistung des ursprünglichen Modells bewertet wurde, ist es gang
und gäbe, die Features und Zeilen zu überprüfen und zu optimieren. So sehen
Sie, ob Sie ein noch besseres Modell erhalten können.
Trainings-Dataset filtern
Sehen Sie sich die allgemeinen Statistiken für Taxifahrtkosten an.
-
Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrage-EDITOR
ein. Klicken Sie dann auf Ausführen:
SELECT
COUNT(fare_amount) AS num_fares,
MIN(fare_amount) AS low_fare,
MAX(fare_amount) AS high_fare,
AVG(fare_amount) AS avg_fare,
STDDEV(fare_amount) AS stddev
FROM
`nyc-tlc.yellow.trips`
# 1,108,779,463 fares
Die Ausgabe sollte ungefähr so aussehen:

Wie zu sehen ist, gibt es im Dataset einige seltsame Ausreißer (negative
Fahrtkosten oder Fahrtkosten über 50.000 $). Bringen Sie nun Ihre fachliche
Erfahrung ein, damit das Modell nicht anhand dieser Sonderfälle lernt.
Beschränken Sie die Daten auf Fahrtkosten zwischen 6 und 200 $.
-
Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrage-EDITOR
ein. Klicken Sie dann auf Ausführen:
SELECT
COUNT(fare_amount) AS num_fares,
MIN(fare_amount) AS low_fare,
MAX(fare_amount) AS high_fare,
AVG(fare_amount) AS avg_fare,
STDDEV(fare_amount) AS stddev
FROM
`nyc-tlc.yellow.trips`
WHERE trip_distance > 0 AND fare_amount BETWEEN 6 and 200
# 843,834,902 fares
Die Ausgabe sollte ungefähr so aussehen:

Das ist ein bisschen besser. Schränken Sie nun die zurückgelegte Strecke ein,
damit Sie sich wirklich auf New York City konzentrieren.
-
Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrage-EDITOR
ein. Klicken Sie dann auf Ausführen:
SELECT
COUNT(fare_amount) AS num_fares,
MIN(fare_amount) AS low_fare,
MAX(fare_amount) AS high_fare,
AVG(fare_amount) AS avg_fare,
STDDEV(fare_amount) AS stddev
FROM
`nyc-tlc.yellow.trips`
WHERE trip_distance > 0 AND fare_amount BETWEEN 6 and 200
AND pickup_longitude > -75 #limiting of the distance the taxis travel out
AND pickup_longitude < -73
AND dropoff_longitude > -75
AND dropoff_longitude < -73
AND pickup_latitude > 40
AND pickup_latitude < 42
AND dropoff_latitude > 40
AND dropoff_latitude < 42
# 827,365,869 fares
Die Ausgabe sollte ungefähr so aussehen:

Sie haben immer noch ein großes Trainings-Dataset mit über 800 Millionen
Fahrten, von dem das neue Modell lernen kann. Trainieren Sie das Modell mit
diesen Einschränkungen neu, um zu sehen, wie gut es funktioniert.
Modell erneut trainieren
Nennen Sie das neue Modell taxi.taxifare_model_2 und trainieren
Sie das lineare Regressionsmodell neu, um den Gesamtpreis vorherzusagen. Sie
werden feststellen, dass auch einige berechnete Features für den
euklidischen Abstand
(gerade Linie) zwischen Abholort und Ziel hinzugefügt wurden.
-
Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrage-EDITOR
ein. Klicken Sie dann auf Ausführen:
CREATE OR REPLACE MODEL taxi.taxifare_model_2
OPTIONS
(model_type='linear_reg', labels=['total_fare']) AS
WITH params AS (
SELECT
1 AS TRAIN,
2 AS EVAL
),
daynames AS
(SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),
taxitrips AS (
SELECT
(tolls_amount + fare_amount) AS total_fare,
daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
SQRT(POW((pickup_longitude - dropoff_longitude),2) + POW(( pickup_latitude - dropoff_latitude), 2)) as dist, #Euclidean distance between pickup and drop off
SQRT(POW((pickup_longitude - dropoff_longitude),2)) as longitude, #Euclidean distance between pickup and drop off in longitude
SQRT(POW((pickup_latitude - dropoff_latitude), 2)) as latitude, #Euclidean distance between pickup and drop off in latitude
passenger_count AS passengers
FROM
`nyc-tlc.yellow.trips`, daynames, params
WHERE trip_distance > 0 AND fare_amount BETWEEN 6 and 200
AND pickup_longitude > -75 #limiting of the distance the taxis travel out
AND pickup_longitude < -73
AND dropoff_longitude > -75
AND dropoff_longitude < -73
AND pickup_latitude > 40
AND pickup_latitude < 42
AND dropoff_latitude > 40
AND dropoff_latitude < 42
AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.TRAIN
)
SELECT *
FROM taxitrips
Es kann einige Minuten dauern, bis das Modell neu trainiert ist. Sie können
mit dem nächsten Schritt fortfahren, wenn Sie in der Console die folgende
Nachricht erhalten:

Neues Modell bewerten
Das lineare Regressionsmodell wurde optimiert. Seine Leistung können Sie nun
mit dem Dataset bewerten.
-
Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrage-EDITOR
ein. Klicken Sie dann auf Ausführen:
SELECT
SQRT(mean_squared_error) AS rmse
FROM
ML.EVALUATE(MODEL taxi.taxifare_model_2,
(
WITH params AS (
SELECT
1 AS TRAIN,
2 AS EVAL
),
daynames AS
(SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),
taxitrips AS (
SELECT
(tolls_amount + fare_amount) AS total_fare,
daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
SQRT(POW((pickup_longitude - dropoff_longitude),2) + POW(( pickup_latitude - dropoff_latitude), 2)) as dist, #Euclidean distance between pickup and drop off
SQRT(POW((pickup_longitude - dropoff_longitude),2)) as longitude, #Euclidean distance between pickup and drop off in longitude
SQRT(POW((pickup_latitude - dropoff_latitude), 2)) as latitude, #Euclidean distance between pickup and drop off in latitude
passenger_count AS passengers
FROM
`nyc-tlc.yellow.trips`, daynames, params
WHERE trip_distance > 0 AND fare_amount BETWEEN 6 and 200
AND pickup_longitude > -75 #limiting of the distance the taxis travel out
AND pickup_longitude < -73
AND dropoff_longitude > -75
AND dropoff_longitude < -73
AND pickup_latitude > 40
AND pickup_latitude < 42
AND dropoff_latitude > 40
AND dropoff_latitude < 42
AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.EVAL
)
SELECT *
FROM taxitrips
))
Die Ausgabe sollte ungefähr so aussehen:

Wie zu sehen ist, haben Sie den RMSE-Wert auf +-5,12 $ gesenkt, was deutlich
besser ist als +-9,47 $ für Ihr erstes Modell.
Da der RMSE-Wert die Standardabweichung von Vorhersagefehlern definiert,
können Sie feststellen, dass die neu trainierte lineare Regression das Modell
erheblich präziser gemacht hat.
Aufgabe 9: Wissen testen
Im Folgenden stellen wir Ihnen einige Multiple-Choice-Fragen, um Ihr bisher
erworbenes Wissen zu testen und zu festigen. Beantworten Sie die Fragen so gut
Sie können.
Aufgabe 10: Weitere Datasets
Sie können mit dem Projekt bigquery-public-data das Erstellen
von Modellen an anderen Datasets üben, zum Beispiel mit einem Prognosemodell
für Taxikosten in Chicago.
-
Zum Öffnen des Datasets bigquery-public-data rufen Sie
den Bereich Explorer auf und klicken auf
+Daten hinzufügen >
Projekt nach Name markieren >
Projektnamen eingeben. Geben Sie dann den Namen
bigquery-public-data ein.
-
Klicken Sie auf Markieren.
Das Projekt bigquery-public-data wird im Bereich „Explorer“
aufgelistet.
Das wars!
Sie haben erfolgreich ein ML-Modell in BigQuery erstellt, um die Kosten für
Taxifahrten in New York City zu berechnen.
Weitere Informationen
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 7. Januar 2026 aktualisiert
Lab zuletzt am 7. Januar 2026 getestet
© 2026 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.