BigQuery ist eine vollständig verwaltete, automatisierte und kostengünstige Analysedatenbank von Google. Mit dem Tool können Sie mehrere Terabyte an Daten abfragen, müssen dabei keine Infrastruktur verwalten und benötigen auch keinen Datenbankadministrator. BigQuery basiert auf SQL und die Abrechnung erfolgt nach dem „Pay as you go“-Modell. Mithilfe von BigQuery können Sie sich auf die Datenanalyse konzentrieren und wichtige Informationen erhalten.
Mit BigQuery ML können Datenanalysten ihr SQL-Wissen nutzen, um ML-Modelle (Machine Learning) schnell genau dort zu erstellen, wo sich ihre Daten in BigQuery befinden.
In BigQuery ist ein Dataset für Basketballspiele, ‑teams und ‑spieler der NCAA öffentlich verfügbar. Die Daten umfassen Spielberichte und Ergebnistabellen aller Begegnungen seit 2009 sowie die Endergebnisse seit 1996. Für einige Teams liegen zusätzliche Daten zu Siegen und Niederlagen vor, die bis zur Saison 1994/95 zurückreichen.
In diesem Lab erstellen Sie mithilfe von BigQuery ML einen Prototypen, den Sie trainieren und evaluieren und mit dem Sie anschließend vorhersagen, welches Team bei welchem Spiel des NCAA-Basketballturniers „Sieger“ und welches „Verlierer“ sein wird.
Aufgaben
Aufgaben in diesem Lab:
Mit BigQuery auf das öffentlich zugängliche Dataset der NCAA zugreifen
Das Dataset der NCAA untersuchen, um mehr über das Schema und den Umfang der verfügbaren Daten zu erfahren
Die vorhandenen Daten aufbereiten und in Features und Labels transformieren
Das Dataset in Teilmengen für Training und Evaluation aufteilen
Mit BigQuery ML Modelle basierend auf dem Dataset zum NCAA-Turnierbaum erstellen
Mit dem erstellten Modell die Gewinner für Ihren NCAA-Turnierbaum vorhersagen
Vorbereitung
Dies ist ein Lab für Fortgeschrittene. Für dieses Lab sollten Sie bereits Erfahrung mit der Programmiersprache SQL und ihren Keywords haben. Kenntnisse im Umgang mit BigQuery werden außerdem empfohlen. Wenn Sie Ihr Wissen in diesen Bereichen auffrischen möchten, sollten Sie mindestens eines der folgenden Labs durcharbeiten, bevor Sie mit diesem beginnen:
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 linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:
Schaltfläche „Google Cloud Console öffnen“
Restzeit
Temporäre Anmeldedaten für das Lab
Ggf. weitere Informationen für dieses Lab
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
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 „Details zum Lab“.
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 „Details zum Lab“.
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 Zwei-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.
Aufgabe 1: Die BigQuery Console öffnen
Wählen Sie in der Cloud Console das Navigationsmenü und dann BigQuery aus.
Klicken Sie auf Fertig, um zur Beta-Benutzeroberfläche zu gelangen. Achten Sie darauf, dass die Projekt-ID im Explorer-Tab festgelegt ist. Dies sollte etwa so aussehen:
Wenn Sie auf den Knoten „Erweitern“ neben Ihrem Projekt klicken, werden dort keine Datenbanken oder Tabellen angezeigt. Das liegt daran, dass Sie Ihrem Projekt noch keine hinzugefügt haben.
Glücklicherweise sind in BigQuery zahlreiche öffentliche Datasets verfügbar, mit denen Sie arbeiten können. Im Folgenden erfahren Sie mehr über das NCAA-Dataset und finden heraus, wie Sie es in Ihr BigQuery-Projekt aufnehmen.
Aufgabe 2: NCAA March Madness
Die National Collegiate Athletic Association (NCAA) veranstaltet in den USA jährlich zwei große Basketballturniere für Herren‑ und Damenmannschaften amerikanischer Colleges. Am NCAA-Turnier der Herren im März nehmen 68 Teams teil. Die Spiele werden nach dem K.-o.-System ausgetragen und am Ende geht daraus ein Team als March Madness-Gesamtsieger hervor.
Die NCAA stellt öffentlich ein Dataset bereit, das die Statistiken zu allen Basketballspielen, den aktiven Spielerinnen und Spielern der Saison sowie den Abschlussturnieren enthält. Die Daten umfassen Spielberichte und Ergebnistabellen aller Begegnungen seit 2009 sowie die Endergebnisse seit 1996. Für einige Teams liegen zusätzliche Daten zu Siegen und Niederlagen vor, die bis zur Saison 1994/95 zurückreichen.
Aufgabe 3: Das öffentliche NCAA-Dataset in BigQuery suchen
Achten Sie darauf, dass Sie den nächsten Schritt in der BigQuery Console ausführen. Klicken Sie im Explorer-Tab auf die Schaltfläche + HINZUFÜGEN und wählen Sie Öffentliche Datasets aus.
Geben Sie in der Suchleiste NCAA Basketball ein und drücken Sie die Eingabetaste. Wählen Sie das einzige angezeigte Ergebnis aus und klicken Sie auf DATASET ANSEHEN:
Dadurch wird ein neuer Tab in BigQuery geöffnet und das Dataset in diesem geladen. Sie können entweder weiter in diesem Tab arbeiten oder ihn schließen und Ihre BigQuery Console in dem anderen Tab aktualisieren, sodass Ihr öffentliches Dataset dort angezeigt wird.
Hinweis: Wenn „ncaa_basketball“ nicht angezeigt wird, klicken Sie auf + HINZUFÜGEN > Projekt nach Name markieren. Geben Sie bigquery-public-data als Projektnamen ein und klicken Sie auf MARKIEREN.
Erweitern Sie das Dataset bigquery-public-data > ncaa_basketball, um die zugehörigen Tabellen einzublenden:
Sie sollten zehn Tabellen in dem Dataset sehen.
Klicken Sie auf mbb_historical_tournament_games und anschließend auf VORSCHAU, um Beispiele für Datenzeilen zu sehen.
Mit einem Klick auf DETAILS werden Metadaten zur Tabelle angezeigt.
Die Seite sollte in etwa so aussehen:
Aufgabe 4: Mit einer Abfrage verfügbare Saisons und Spiele ermitteln
Nun werden Sie eine einfache SQL-Abfrage schreiben, mit der Sie ermitteln, wie viele Saisons und Spiele in der Tabelle mbb_historical_tournament_games für Analysezwecke verfügbar sind.
Kopieren Sie folgenden Befehl im SQL-Abfrage-Editor oberhalb des Abschnitts der Tabellendetails und fügen Sie ihn in dieses Feld ein:
SELECT
season,
COUNT(*) as games_per_tournament
FROM
`bigquery-public-data.ncaa_basketball.mbb_historical_tournament_games`
GROUP BY season
ORDER BY season # default is Ascending (low to high)
Klicken Sie auf AUSFÜHREN. Die Ausgabe sollte anschließend ungefähr so aussehen:
Scrollen Sie durch die Ausgabe und beachten Sie besonders die Anzahl der Saisons sowie der pro Saison absolvierten Spiele. Sie brauchen diese Informationen, um die folgenden Fragen zu beantworten. Unten rechts neben den Pfeilen zum Umblättern sehen Sie außerdem, wie viele Zeilen zurückgegeben wurden.
Klicken Sie auf Fortschritt prüfen.
Mit einer Abfrage verfügbare Saisons und Spiele ermitteln
Testen Sie Ihr Wissen
Mit den folgenden Multiple-Choice-Fragen können Sie Ihr bisher erworbenes Wissen testen und festigen. Beantworten Sie die Fragen so gut Sie können.
Aufgabe 5: ML-Features und ‑Labels verstehen
Ziel dieses Labs ist es, den Sieger eines vorgegebenen NCAA-Basketballspiels der Herren mithilfe von Informationen zu vergangenen Spielen vorherzusagen. Beim Machine Learning wird jede Spalte mit Daten, die uns bei der Ermittlung des Ergebnisses (Sieger oder Verlierer eines Turnierspiels) helfen, als Feature bezeichnet.
Die Datenspalte, für die Sie eine Vorhersage treffen möchten, wird Label genannt. ML-Modelle „lernen“ die Verknüpfungen zwischen den Features, um das Ergebnis eines Labels vorherzusagen.
Ihr Dataset historischer Daten könnte beispielsweise folgende Features enthalten:
Saison
Name des Teams
Name des gegnerischen Teams
Gesetzte Position (Rang) des Teams
Gesetzte Position (Rang) des gegnerischen Teams
Das Label, für das Sie versuchen werden, eine Vorhersage zu treffen, ist das Spielergebnis, also die Angabe, ob das Team siegt oder verliert.
Testen Sie Ihr Wissen
Mit den folgenden Multiple-Choice-Fragen können Sie Ihr bisher erworbenes Wissen testen und festigen. Beantworten Sie die Fragen so gut Sie können.
Aufgabe 6: Ein ML-Dataset mit Label erstellen
Für die Erstellung eines ML-Modells sind viele hochwertige Trainingsdaten notwendig. Glücklicherweise stellt unser NCAA-Dataset eine mehr als ausreichende Grundlage für ein effektives Modell dar.
Wechseln Sie wieder zur BigQuery-Konsole. Dort sollte noch das Ergebnis der Abfrage zu sehen sein, die Sie vorhin ausgeführt haben.
Klicken Sie im Menü links auf die Tabelle mbb_historical_tournament_games. Sobald sie geladen wurde, klicken Sie auf VORSCHAU. Die Seite sollte in etwa so aussehen:
Testen Sie Ihr Wissen
Mit den folgenden Multiple-Choice-Fragen können Sie Ihr bisher erworbenes Wissen testen und festigen. Beantworten Sie die Fragen so gut Sie können.
Bei der Untersuchung des Datasets werden Sie feststellen, dass eine der Zeilen über Spalten für win_market und lose_market verfügt. Sie müssen das Ergebnis eines Spiels in einen Eintrag pro Team aufteilen, damit Sie jede Zeile mit dem Label „Sieger“ bzw. „Verlierer“ versehen können.
Kopieren Sie die folgende Abfrage und fügen Sie sie in den SQL-Abfrage-Editor ein. Klicken Sie dann auf Ausführen:
# create a row for the winning team
SELECT
# features
season, # ex: 2015 season has March 2016 tournament games
round, # sweet 16
days_from_epoch, # how old is the game
game_date,
day, # Friday
'win' AS label, # our label
win_seed AS seed, # ranking
win_market AS market,
win_name AS name,
win_alias AS alias,
win_school_ncaa AS school_ncaa,
# win_pts AS points,
lose_seed AS opponent_seed, # ranking
lose_market AS opponent_market,
lose_name AS opponent_name,
lose_alias AS opponent_alias,
lose_school_ncaa AS opponent_school_ncaa
# lose_pts AS opponent_points
FROM `bigquery-public-data.ncaa_basketball.mbb_historical_tournament_games`
UNION ALL
# create a separate row for the losing team
SELECT
# features
season,
round,
days_from_epoch,
game_date,
day,
'loss' AS label, # our label
lose_seed AS seed, # ranking
lose_market AS market,
lose_name AS name,
lose_alias AS alias,
lose_school_ncaa AS school_ncaa,
# lose_pts AS points,
win_seed AS opponent_seed, # ranking
win_market AS opponent_market,
win_name AS opponent_name,
win_alias AS opponent_alias,
win_school_ncaa AS opponent_school_ncaa
# win_pts AS opponent_points
FROM
`bigquery-public-data.ncaa_basketball.mbb_historical_tournament_games`
Sie sollten folgende Ausgabe erhalten:
Klicken Sie auf Fortschritt prüfen.
Ein ML-Dataset mit Label erstellen
Sie wissen nun, welche Features des Ergebnisses verfügbar sind. Beantworten Sie die folgende Frage, um Ihre Kenntnisse über das Dataset zu testen und zu festigen.
Aufgabe 7: Ein ML-Modell für die Vorhersage des Siegers basierend auf der gesetzten Position und dem Namen des Teams erstellen
Wir haben uns die Daten näher angesehen. Nun können wir mit dem Training eines ML-Modells beginnen.
Beantworten Sie die folgende Frage so gut Sie können, um sich mit diesem Abschnitt vertraut zu machen.
Einen Modelltyp wählen
Für das vorliegende Problem werden Sie ein Klassifizierungsmodell erstellen. Da Sie zwei Klassen – Sieg oder Niederlage – verwenden, wird das Modell auch als Binärklassifizierungsmodell bezeichnet. Ein Team kann ein Spiel entweder gewinnen oder verlieren.
Wenn Sie möchten, können Sie im Anschluss an dieses Lab die Gesamtpunktzahl eines Teams mit einem Prognosemodell voraussagen, das ist aber nicht Schwerpunkt des Labs.
Ein Blick auf das Label (die Spalte) der Daten, für die Sie eine Vorhersage treffen, verrät Ihnen, ob es sich um eine Prognose oder um eine Klassifizierung handelt:
Sind die Werte der Spalte numerisch (z. B. verkaufte Einheiten oder in einem Spiel erzielte Punkte), treffen Sie eine Prognose.
Wenn hingegen ein Stringwert vorliegt (die Zeile gehört entweder zu dieser oder jener Klasse), führen Sie eine Klassifizierung durch.
Bei mehr als zwei Klassen (z. B. Sieg, Niederlage und Unentschieden) sprechen wir von einem Klassifizierungsmodell mit mehreren Klassen.
Unser Klassifizierungsmodell für Machine Learning greift auf ein weit verbreitetes Statistikmodell namens Logistische Regression zurück.
Wir benötigen ein Modell, das die Wahrscheinlichkeit jedes möglichen Label-Werts berechnet, in unserem Fall also die eines Sieges bzw. einer Niederlage. Die logistische Regression ist eine gute Grundlage für diesen Zweck. Keine Sorge, das ML-Modell übernimmt während des Modelltrainings sämtliche Rechen- und Optimierungsvorgänge für Sie – dafür sind Computer schließlich da!
Hinweis: Für Klassifizierungsaufgaben gibt es viele andere ML-Modelle mit unterschiedlicher Komplexität. Bei Google wird beispielsweise häufig Deep Learning in Verbindung mit neuronalen Netzwerken verwendet.
Ein ML-Modell mit BigQuery ML erstellen
Um unser Klassifizierungsmodell in BigQuery zu erstellen, müssen wir einfach die SQL-Anweisung CREATE MODEL schreiben und einige Optionen angeben.
Bevor wir mit dem Modell beginnen können, benötigen wir in unserem Projekt zuerst einen Speicherort dafür.
Klicken Sie im Explorer-Tab auf das Symbol Aktionen ansehen neben der Projekt-ID und wählen Sie Dataset erstellen aus.
Daraufhin wird das Dialogfeld „Dataset erstellen“ geöffnet. Legen Sie Ihre Dataset-ID auf bracketology fest und klicken Sie auf DATASET ERSTELLEN.
Führen Sie nun den folgenden Befehl im SQL-Abfrage-Editor aus:
CREATE OR REPLACE MODEL
`bracketology.ncaa_model`
OPTIONS
( model_type='logistic_reg') AS
# create a row for the winning team
SELECT
# features
season,
'win' AS label, # our label
win_seed AS seed, # ranking
win_school_ncaa AS school_ncaa,
lose_seed AS opponent_seed, # ranking
lose_school_ncaa AS opponent_school_ncaa
FROM `bigquery-public-data.ncaa_basketball.mbb_historical_tournament_games`
WHERE season <= 2017
UNION ALL
# create a separate row for the losing team
SELECT
# features
season,
'loss' AS label, # our label
lose_seed AS seed, # ranking
lose_school_ncaa AS school_ncaa,
win_seed AS opponent_seed, # ranking
win_school_ncaa AS opponent_school_ncaa
FROM
`bigquery-public-data.ncaa_basketball.mbb_historical_tournament_games`
# now we split our dataset with a WHERE clause so we can train on a subset of data and then evaluate and test the model's performance against a reserved subset so the model doesn't memorize or overfit to the training data.
# tournament season information from 1985 - 2017
# here we'll train on 1985 - 2017 and predict for 2018
WHERE season <= 2017
Wie Sie sehen, werden nur wenige Zeilen SQL-Code benötigt, um das Modell zu erstellen. Besonders wichtig ist, dass Sie für unsere Klassifizierungsaufgabe den Modelltyp „logistic_reg“ wählen.
Hinweis: Eine Liste aller verfügbaren Modelloptionen und ‑einstellungen finden Sie im Dokumentationsleitfaden von BigQuery ML. In unserem Fall haben wir bereits ein Feld namens „Label“. Mithilfe der Modelloption „inpt_label_cols“ vermeiden wir eine Kennzeichnung unserer Label-Spalte.
Das Training des Modells dauert ungefähr drei bis fünf Minuten. Nach Abschluss des Jobs sollten Sie folgende Ausgabe erhalten:
Klicken Sie rechts neben der Console auf die Schaltfläche Zum Modell.
Klicken Sie auf Fortschritt prüfen.
ML-Modell erstellen
Details zum Modelltraining anzeigen
Sie sehen nun die Modelldetails. Scrollen Sie nach unten zum Abschnitt Trainingsoptionen und sehen Sie sich die Iterationen an, die das Modell für das Training durchgeführt hat.
Wenn Sie Erfahrung mit Machine Learning haben, können Sie alle hier aufgeführten Hyperparameter (die Optionen, die vor der Ausführung des Modells eingestellt werden) anpassen. Legen Sie dazu deren Wert in der OPTIONEN-Anweisung fest.
Wenn dies Ihr Einstieg in Machine Learning ist und Sie keine Anpassungen vornehmen, werden von BigQuery ML intelligente Standardwerte für jede nicht eingestellte Option festgelegt.
ML-Modelle „lernen“ die Verknüpfungen zwischen bekannten Features und unbekannten Labels. Wie Sie sich vielleicht schon gedacht haben, sind einige Features wie „Gesetzte Position“ oder „Name der Ausbildungsstätte“ für die Ermittlung eines Sieges oder einer Niederlage nützlicher als andere Datenspalten (Features) wie z. B. der Wochentag, an dem das Spiel stattfindet.
ML-Modelle beginnen ihr Training ohne ein solches intuitives Wissen und gewichten jedes Feature in der Regel nach zufälligen Kriterien.
Während des Trainings optimiert das Modell den Vorgang, mit dem es die bestmögliche Gewichtung für jedes Feature findet. Das Modell versucht, den Trainingsdatenverlust und den Evaluationsdatenverlust mit jedem Lauf weiter zu minimieren.
Sollten Sie jemals feststellen, dass der finale Evaluationsdatenverlust deutlich höher als der Trainingsdatenverlust ist, liegt entweder eine Überanpassung des Modells vor oder das Modell merkt sich einfach alle Ihre Trainingsdaten, anstatt generalisierbare Zusammenhänge zu erlernen.
Sie können sehen, wie viele Trainingsläufe das Modell ausführt. Klicken Sie dazu auf den Tab TRAINING und wählen Sie unter „Ansicht“ die Option Tabelle aus.
In unserem Fall hat das Modell drei Trainingsläufe in ungefähr 20 Sekunden abgeschlossen. Ihr Modell wird sehr wahrscheinlich davon abweichen.
Über die Features gewonnene Erkenntnisse des Modells anzeigen
Nach dem Training können Sie die Gewichtungen untersuchen, um zu sehen, welche Features für das Modell am nützlichsten waren.
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
SELECT
category,
weight
FROM
UNNEST((
SELECT
category_weights
FROM
ML.WEIGHTS(MODEL `bracketology.ncaa_model`)
WHERE
processed_input = 'seed')) # try other features like 'school_ncaa'
ORDER BY weight DESC
Ihre Ausgabe sollte in etwa so aussehen:
Wenn die gesetzte Position eines Teams entweder sehr niedrig (1, 2, 3) oder sehr hoch (14, 15, 16) ist, weist das Modell diesem Feature zur Ermittlung des Ergebnisses (Sieg oder Niederlage) eine besonders hohe Gewichtung (maximal 1,0) zu. Das ist auch intuitiv betrachtet sinnvoll, da von Teams, die auf niedrige Positionen gesetzt wurden, zu erwarten ist, dass sie gut abschneiden.
Der größte Vorteil von Machine Learning besteht darin, dass wir keine zahlreichen hartcodierten IF THEN-Anweisungen schreiben mussten, mit denen wir dem Modell vermitteln: IF (wenn) die gesetzte Position 1 ist, THEN (dann) liegt die Siegchance des Teams um 80 % höher. Machine Learning benötigt keine hartcodierten Regeln oder hartcodierte Logik, sondern lernt diese Zusammenhänge selbst. Weitere Informationen finden Sie in der Dokumentation zur Gewichtung der BQML-Syntax.
Aufgabe 8: Modellleistung evaluieren
Um die Leistung des Modells zu evaluieren, können Sie ein trainiertes Modell mit einem simplen ML.EVALUATE-Befehl testen.
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
SELECT
*
FROM
ML.EVALUATE(MODEL `bracketology.ncaa_model`)
Die Ausgabe sollte ungefähr so aussehen:
Der Wert wird zu ungefähr 69 % korrekt sein. Dieses Ergebnis ist zwar besser als ein Münzwurf, lässt sich aber noch optimieren.
Hinweis: Bei Klassifizierungsmodellen ist die Accuracy des Modells nicht der einzige ausschlaggebende Messwert der Ausgabe.
Da Sie eine logistische Regression durchgeführt haben, können Sie die Leistung Ihres Modells hinsichtlich der folgenden Messwerte testen (je weiter sich das Ergebnis dem Wert 1,0 annähert, desto besser):
Precision: Messwert für Klassifizierungsmodelle. Gibt präzise die Häufigkeit an, mit der ein Modell die positive Klasse richtig vorhergesagt hat.
Recall: Messwert für Klassifikationsmodelle, der die folgende Frage beantwortet: Wie viele der möglichen positiven Labels konnte das Modell richtig identifizieren?
Accuracy: Anteil der Vorhersagen, die ein Klassifizierungsmodell richtig getroffen hat.
f1_score: Wert für die Accuracy des Modells. Der F1-Wert ist der harmonische Mittelwert von Precision und Recall. 1 ist der beste und 0 der schlechteste f1-Wert.
log_loss: Die in einer logistischen Regression verwendete Verlustfunktion. Gibt an, wie weit die Vorhersagen des Modells und die richtigen Labels auseinanderliegen.
roc_auc: Die Fläche unter der ROC-Kurve. Gibt die Wahrscheinlichkeit an, dass ein Klassifikator mit höherer Konfidenz davon ausgeht, dass ein zufällig ausgewähltes positives Beispiel tatsächlich positiv ist, als dass ein zufällig ausgewähltes negatives Beispiel positiv ist.
Aufgabe 9: Vorhersagen erstellen
Nachdem Sie nun ein Modell mit Verlaufsdaten aller Saisons bis einschließlich der Saison 2017 (also allen Daten, die Ihnen zur Verfügung standen) trainiert haben, ist es an der Zeit, Vorhersagen für die Saison 2018 zu treffen. Ihr Data Science-Team hat Ihnen soeben die Ergebnisse des 2018er Turniers in einer separaten Tabelle bereitgestellt. Sie waren nicht Teil Ihres ursprünglichen Datasets.
Um eine Vorhersage zu treffen, müssen Sie lediglich ML.PREDICT auf einem trainierten Modell aufrufen und das Dataset durchlaufen lassen, für das die Vorhersage getroffen werden soll.
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
CREATE OR REPLACE TABLE `bracketology.predictions` AS (
SELECT * FROM ML.PREDICT(MODEL `bracketology.ncaa_model`,
# predicting for 2018 tournament games (2017 season)
(SELECT * FROM `data-to-insights.ncaa.2018_tournament_results`)
)
)
Die Ausgabe sollte ungefähr so aussehen:
Klicken Sie auf Fortschritt prüfen.
Modellleistung evaluieren und Tabelle erstellen
Hinweis: Sie speichern Ihre Vorhersage in einer Tabelle, damit Sie später Statistiken abfragen können, ohne die obige Abfrage nochmals ausführen zu müssen.
Ihnen werden nun das ursprüngliche Dataset sowie die drei neuen Spalten angezeigt:
Vorhergesagtes Label
Optionen für das vorhergesagte Label
Wahrscheinlichkeit für das vorhergesagte Label
Da Sie die Ergebnisse des 2018er March Madness-Turniers bereits kennen, prüfen wir nun, wie gut das Modell sie vorhersagen konnte. (Tipp: Wenn Sie Vorhersagen für das diesjährige March Madness-Turnier treffen möchten, übergeben Sie einfach ein Dataset mit den gesetzten Positionen und Teamnamen der Saison 2019. Logischerweise ist die Label-Spalte in diesem Fall leer, da die Spiele des betreffenden Turniers noch nicht stattgefunden haben. Dafür treffen Sie schließlich die Vorhersage.)
Aufgabe 10: Wie viele Vorhersagen unseres Modells für das 2018er NCAA-Turnier waren korrekt?
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
SELECT * FROM `bracketology.predictions`
WHERE predicted_label <> label
Die Ausgabe sollte ungefähr so aussehen:
Bei 134 Vorhersagen (67 Turnierspielen) lag unser Modell 38-mal falsch. Insgesamt lag die Trefferquote für die 2018er Turnierpaarungen bei 70 %.
Aufgabe 11: Modelle sind leider nicht allwissend…
Es gibt so viele weitere Faktoren, die zu den knappen Siegen und Überraschungserfolgen bei einem March Madness-Turnier führen, und diese kann ein Modell kaum vorhersagen.
Suchen wir nach dem laut Modell größten Überraschungserfolg des 2017er Turniers. Wir sehen uns an, in welchen Fällen das Modell mit seiner Vorhersage, dass ein Ergebnis mit einer Wahrscheinlichkeit von 80 % oder höher eintritt, FALSCH lag.
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
SELECT
model.label AS predicted_label,
model.prob AS confidence,
predictions.label AS correct_label,
game_date,
round,
seed,
school_ncaa,
points,
opponent_seed,
opponent_school_ncaa,
opponent_points
FROM `bracketology.predictions` AS predictions,
UNNEST(predicted_label_probs) AS model
WHERE model.prob > .8 AND predicted_label <> predictions.label
Das Ergebnis sollte in etwa so aussehen:
Vorhersage: Das Modell sagt voraus, dass Virginia (gesetzt auf Position 1) gegen die UMBC (gesetzt auf Position 16) mit 87%iger Wahrscheinlichkeit gewinnen wird. Klingt doch ganz vernünftig, oder?
Sehen Sie sich das Video „16-seed UMBC pulls off a miracle upset over 1-seed Virginia“ an, um zu sehen, was wirklich passiert ist!
Ryan Odom, Trainer des UMBC-Teams, sagte nach dem Spiel: „Unglaublich, mir fehlen die Worte.“ Weitere Informationen finden Sie im Artikel 2018 UMBC vs. Virginia men's basketball game.
Zusammenfassung
Sie haben ein ML-Modell erstellt, um Spielergebnisse vorherzusagen.
Sie haben die Leistung des Modells evaluiert und mit der gesetzten Position und den Teamnamen als primäre Features eine Accuracy von 69 % erhalten.
Sie haben die Ergebnisse des 2018er Turniers vorhergesagt.
Sie haben die Statistiken der Ergebnisse analysiert.
Unsere nächste Aufgabe besteht darin, ein besseres Modell zu erstellen, das die gesetzte Position und die Teamnamen NICHT als Features verwendet.
Aufgabe 12: Nützliche Features für ML-Modelle
Im zweiten Teil dieses Labs erstellen Sie ein zweites ML-Modell mithilfe von neu bereitgestellten und detaillierten Features.
Da Sie sich nun mit der Erstellung von ML-Modellen mithilfe von BigQuery ML ganz gut auskennen, hat Ihr Data Science-Team Ihnen ein neues Dataset mit Spielberichten bereitgestellt. Dieses enthält neue Teammesswerte, aus denen Ihr Modell Erkenntnisse ziehen kann. Dazu gehören:
die Punkteverwertung über einen bestimmten Zeitraum basierend auf der Analyse der bisherigen Spiele
der Ballbesitz über einen bestimmten Zeitraum
Ein neues ML-Dataset mithilfe dieser auf Fähigkeiten basierenden Features erstellen
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
# create training dataset:
# create a row for the winning team
CREATE OR REPLACE TABLE `bracketology.training_new_features` AS
WITH outcomes AS (
SELECT
# features
season, # 1994
'win' AS label, # our label
win_seed AS seed, # ranking # this time without seed even
win_school_ncaa AS school_ncaa,
lose_seed AS opponent_seed, # ranking
lose_school_ncaa AS opponent_school_ncaa
FROM `bigquery-public-data.ncaa_basketball.mbb_historical_tournament_games` t
WHERE season >= 2014
UNION ALL
# create a separate row for the losing team
SELECT
# features
season, # 1994
'loss' AS label, # our label
lose_seed AS seed, # ranking
lose_school_ncaa AS school_ncaa,
win_seed AS opponent_seed, # ranking
win_school_ncaa AS opponent_school_ncaa
FROM
`bigquery-public-data.ncaa_basketball.mbb_historical_tournament_games` t
WHERE season >= 2014
UNION ALL
# add in 2018 tournament game results not part of the public dataset:
SELECT
season,
label,
seed,
school_ncaa,
opponent_seed,
opponent_school_ncaa
FROM
`data-to-insights.ncaa.2018_tournament_results`
)
SELECT
o.season,
label,
# our team
seed,
school_ncaa,
# new pace metrics (basketball possession)
team.pace_rank,
team.poss_40min,
team.pace_rating,
# new efficiency metrics (scoring over time)
team.efficiency_rank,
team.pts_100poss,
team.efficiency_rating,
# opposing team
opponent_seed,
opponent_school_ncaa,
# new pace metrics (basketball possession)
opp.pace_rank AS opp_pace_rank,
opp.poss_40min AS opp_poss_40min,
opp.pace_rating AS opp_pace_rating,
# new efficiency metrics (scoring over time)
opp.efficiency_rank AS opp_efficiency_rank,
opp.pts_100poss AS opp_pts_100poss,
opp.efficiency_rating AS opp_efficiency_rating,
# a little feature engineering (take the difference in stats)
# new pace metrics (basketball possession)
opp.pace_rank - team.pace_rank AS pace_rank_diff,
opp.poss_40min - team.poss_40min AS pace_stat_diff,
opp.pace_rating - team.pace_rating AS pace_rating_diff,
# new efficiency metrics (scoring over time)
opp.efficiency_rank - team.efficiency_rank AS eff_rank_diff,
opp.pts_100poss - team.pts_100poss AS eff_stat_diff,
opp.efficiency_rating - team.efficiency_rating AS eff_rating_diff
FROM outcomes AS o
LEFT JOIN `data-to-insights.ncaa.feature_engineering` AS team
ON o.school_ncaa = team.team AND o.season = team.season
LEFT JOIN `data-to-insights.ncaa.feature_engineering` AS opp
ON o.opponent_school_ncaa = opp.team AND o.season = opp.season
Die Ausgabe sollte ungefähr so aussehen:
Klicken Sie auf Fortschritt prüfen.
Nützliche Features für ML-Modelle verwenden
Aufgabe 13: Vorschau der neuen Features ansehen
Klicken Sie rechts neben der Konsole auf die Schaltfläche Weiter zur Tabelle. Klicken Sie auf den Tab Vorschau.
Ihre Tabelle sollte ungefähr so aussehen:
Es spielt keine Rolle, wenn Ihre Ausgabe nicht mit dem Screenshot oben übereinstimmt.
Aufgabe 14: Ausgewählte Messwerte interpretieren
Hier erfahren Sie mehr über einige wichtige Labels, die uns beim Treffen von Vorhersagen helfen.
opp_efficiency_rank
Punkteverwertung des Gegners: Welchen Rang nimmt unser Gegner unter allen Teams
bei der Punkteverwertung (Punkte pro 100 Ballbesitzphasen) für einen bestimmten Zeitabschnitt ein? Je niedriger der Wert, desto besser.
opp_pace_rank
Ballbesitz des Gegners: Welchen Rang nimmt unser Gegner unter allen Teams
beim Ballbesitz (Anzahl der Ballbesitzphasen innerhalb von 40 Minuten) ein? Je niedriger der Wert, desto besser.
Sie verfügen nun über aussagekräftige Features, die Ihnen Aufschluss über die Punkteverwertung und den Ballbesitz eines Teams geben und mit denen Sie Ihr zweites Modell trainieren können.
Um Ihr Modell daran zu hindern, sich „Teams, die in der Vergangenheit gut waren“ zu merken, schließen Sie Namen und gesetzte Position des Teams in diesem neuen Modell aus und beschränken Sie sich lediglich auf die Messwerte.
Aufgabe 15: Das neue Modell trainieren
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
CREATE OR REPLACE MODEL
`bracketology.ncaa_model_updated`
OPTIONS
( model_type='logistic_reg') AS
SELECT
# this time, don't train the model on school name or seed
season,
label,
# our pace
poss_40min,
pace_rank,
pace_rating,
# opponent pace
opp_poss_40min,
opp_pace_rank,
opp_pace_rating,
# difference in pace
pace_rank_diff,
pace_stat_diff,
pace_rating_diff,
# our efficiency
pts_100poss,
efficiency_rank,
efficiency_rating,
# opponent efficiency
opp_pts_100poss,
opp_efficiency_rank,
opp_efficiency_rating,
# difference in efficiency
eff_rank_diff,
eff_stat_diff,
eff_rating_diff
FROM `bracketology.training_new_features`
# here we'll train on 2014 - 2017 and predict on 2018
WHERE season BETWEEN 2014 AND 2017 # between in SQL is inclusive of end points
Die Ausgabe, die Sie anschließend erhalten, sollte in etwa so aussehen:
Aufgabe 16: Die Leistung des neuen Modells evaluieren
Führen Sie den folgenden Befehl im SQL-Abfrage-Editor aus, um die Leistung Ihres Modells zu evaluieren:
SELECT
*
FROM
ML.EVALUATE(MODEL `bracketology.ncaa_model_updated`)
Ihre Ausgabe sollte ungefähr so aussehen:
Sehr gut. Sie haben ein neues Modell mit anderen Features trainiert und die Accuracy auf rund 75 % verbessert. Das entspricht einem Anstieg von 5 % gegenüber dem ersten Modell.
Dies ist eine der wichtigsten Erkenntnisse beim Machine Learning: Ein Dataset mit hochwertigen Features kann einen großen Einfluss auf die Accuracy Ihres Modells haben.
Klicken Sie auf Fortschritt prüfen.
Neues Modell trainieren und bewerten
Aufgabe 17: Gelernte Ergebnisse des Modells untersuchen
Welche Features hat das Modell bei der Ermittlung des Spielergebnisses am stärksten gewichtet? Finden Sie es heraus, indem Sie den folgenden Befehl im SQL-Abfrage-Editor ausführen:
SELECT
*
FROM
ML.WEIGHTS(MODEL `bracketology.ncaa_model_updated`)
ORDER BY ABS(weight) DESC
Die Ausgabe sollte so aussehen:
Die absoluten Werte der Gewichtungen sind so angeordnet, dass die Features, die sich am stärksten auf das Spielergebnis auswirken, zuerst aufgeführt werden.
Wie Sie in den Ergebnissen sehen können, sind die drei wichtigsten Features pace_stat_diff, eff_stat_diff und eff_rating_diff. Sehen wir sie uns einmal genauer an.
pace_stat_diff
Der Unterschied zwischen den beiden Teams in Bezug auf Ballbesitzphasen/40 Minuten. Laut dem Modell hat dieses Feature die größte Aussagekraft in Bezug auf das Spielergebnis.
eff_stat_diff
Der Unterschied zwischen den beiden Teams in Bezug auf die Nettopunkte/100 Ballbesitzphasen.
eff_rating_diff
Der Unterschied zwischen den beiden Teams in Bezug auf die normalisierte Bewertung der Punkteverwertung.
Was wurde von dem Modell für die Vorhersagen nicht besonders stark gewichtet? Die Saison. In der obigen Ausgabe mit den gelisteten Gewichtungen nimmt sie den letzten Platz ein. Für das Modell ist die Saison (2013, 2014, 2015) nicht sonderlich nützlich zur Vorhersage eines Spielergebnisses. Das Jahr „2014“ war für die Teams ein Jahr wie jedes andere.
Eine interessante Erkenntnis ist, dass das Modell den Ballbesitz eines Teams, also das Maß dafür, wie gut das Team den Ball kontrollieren konnte, stärker gewichtete als die Punkteverwertung.
Aufgabe 18: Zeit für die nächste Vorhersage
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
CREATE OR REPLACE TABLE `bracketology.ncaa_2018_predictions` AS
# let's add back our other data columns for context
SELECT
*
FROM
ML.PREDICT(MODEL `bracketology.ncaa_model_updated`, (
SELECT
* # include all columns now (the model has already been trained)
FROM `bracketology.training_new_features`
WHERE season = 2018
))
Die Ausgabe sollte in etwa so aussehen:
Klicken Sie auf Fortschritt prüfen.
Abfrage zum Erstellen von ncaa_2018_predictions ausführen
Aufgabe 19: Vorhersageanalyse
Da Sie die korrekten Spielergebnisse kennen, können Sie mit dem neuen Test-Dataset sehen, wo Ihr Modell eine falsche Vorhersage getroffen hat.
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
SELECT * FROM `bracketology.ncaa_2018_predictions`
WHERE predicted_label <> label
Die Anzahl der von der Abfrage zurückgegebenen Einträge zeigt, dass das Modell bei 48 Paarungen (24 Spielen) falsch lag. Das ergibt bei der Gesamtanzahl aller Paarungen in dem 2018er Turnier eine Accuracy von 64 %. 2018 muss wohl ein ziemlich ungewöhnliches Jahr gewesen sein. Sehen wir uns doch einmal die Überraschungserfolge an.
Aufgabe 20: Bei welchen Spielen gab es im März 2018 Überraschungserfolge?
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
SELECT
CONCAT(school_ncaa, " was predicted to ",IF(predicted_label="loss","lose","win")," ",CAST(ROUND(p.prob,2)*100 AS STRING), "% but ", IF(n.label="loss","lost","won")) AS narrative,
predicted_label, # what the model thought
n.label, # what actually happened
ROUND(p.prob,2) AS probability,
season,
# us
seed,
school_ncaa,
pace_rank,
efficiency_rank,
# them
opponent_seed,
opponent_school_ncaa,
opp_pace_rank,
opp_efficiency_rank
FROM `bracketology.ncaa_2018_predictions` AS n,
UNNEST(predicted_label_probs) AS p
WHERE
predicted_label <> n.label # model got it wrong
AND p.prob > .75 # by more than 75% confidence
ORDER BY prob DESC
Ihre Ausgabe sollte ungefähr so aussehen:
Der größte Überraschungserfolg wurde auch von unserem vorherigen Modell gefunden: UMBC besiegte Virginia. 2018 war insgesamt ein Jahr der großen Überraschungen. Lesen Sie mehr darüber im Artikel Has This Been the “Maddest” March?. Wird 2019 genau so spannend sein?
Aufgabe 21: Leistung der Modelle vergleichen
Wie sieht es mit den Ergebnissen aus, bei denen das naive Modell (das die gesetzten Positionen verglichen hat) falsch, das fortschrittlichere Modell hingegen richtig lag?
Führen Sie im SQL-Abfrage-Editor den folgenden Befehl aus:
SELECT
CONCAT(opponent_school_ncaa, " (", opponent_seed, ") was ",CAST(ROUND(ROUND(p.prob,2)*100,2) AS STRING),"% predicted to upset ", school_ncaa, " (", seed, ") and did!") AS narrative,
predicted_label, # what the model thought
n.label, # what actually happened
ROUND(p.prob,2) AS probability,
season,
# us
seed,
school_ncaa,
pace_rank,
efficiency_rank,
# them
opponent_seed,
opponent_school_ncaa,
opp_pace_rank,
opp_efficiency_rank,
(CAST(opponent_seed AS INT64) - CAST(seed AS INT64)) AS seed_diff
FROM `bracketology.ncaa_2018_predictions` AS n,
UNNEST(predicted_label_probs) AS p
WHERE
predicted_label = 'loss'
AND predicted_label = n.label # model got it right
AND p.prob >= .55 # by 55%+ confidence
AND (CAST(opponent_seed AS INT64) - CAST(seed AS INT64)) > 2 # seed difference magnitude
ORDER BY (CAST(opponent_seed AS INT64) - CAST(seed AS INT64)) DESC
Ihre Ausgabe sollte ungefähr so aussehen:
Das Modell sagte einen Überraschungssieg der Florida State University (09) über die Xavier University (01) voraus – und so kam es auch.
Der Überraschungssieg wurde von dem neuen Modell korrekt vorhergesagt (obwohl die gesetzte Position einen anderen Schluss zuließ) und die Grundlage dafür waren die neuen, auf Fähigkeiten basierenden Features wie Ballbesitz und Punkteverwertung. Sehen Sie sich die Highlights des Spiels auf YouTube an.
Aufgabe 22: Vorhersage für das March Madness-Turnier 2019 treffen
Da wir die Teams und die gesetzten Positionen für März 2019 kennen, treffen wir nun eine Vorhersage zu den Ergebnissen zukünftiger Spiele.
Daten von 2019 untersuchen
Mit der folgenden Abfrage finden Sie die Teams, die auf die besten Positionen gesetzt wurden:
SELECT * FROM `data-to-insights.ncaa.2019_tournament_seeds` WHERE seed = 1
Ihre Ausgabe sollte ungefähr so aussehen:
Matrix aller möglichen Spiele erstellen
Da wir nicht wissen, welche Teams im Verlauf des Turniers aufeinandertreffen, lassen wir einfach alle Teams gegeneinander antreten.
CROSS JOIN ist eine einfache Methode, um mit SQL ein einzelnes Team gegen jedes andere Team in einer Tabelle antreten zu lassen.
Führen Sie die folgende Abfrage aus, um alle möglichen Teampaarungen des Turniers zu erhalten:
SELECT
NULL AS label,
team.school_ncaa AS team_school_ncaa,
team.seed AS team_seed,
opp.school_ncaa AS opp_school_ncaa,
opp.seed AS opp_seed
FROM `data-to-insights.ncaa.2019_tournament_seeds` AS team
CROSS JOIN `data-to-insights.ncaa.2019_tournament_seeds` AS opp
# teams cannot play against themselves :)
WHERE team.school_ncaa <> opp.school_ncaa
Fügen Sie die 2018er Teamstatistiken (Ballbesitz, Punkteverwertung) hinzu:
CREATE OR REPLACE TABLE `bracketology.ncaa_2019_tournament` AS
WITH team_seeds_all_possible_games AS (
SELECT
NULL AS label,
team.school_ncaa AS school_ncaa,
team.seed AS seed,
opp.school_ncaa AS opponent_school_ncaa,
opp.seed AS opponent_seed
FROM `data-to-insights.ncaa.2019_tournament_seeds` AS team
CROSS JOIN `data-to-insights.ncaa.2019_tournament_seeds` AS opp
# teams cannot play against themselves :)
WHERE team.school_ncaa <> opp.school_ncaa
)
, add_in_2018_season_stats AS (
SELECT
team_seeds_all_possible_games.*,
# bring in features from the 2018 regular season for each team
(SELECT AS STRUCT * FROM `data-to-insights.ncaa.feature_engineering` WHERE school_ncaa = team AND season = 2018) AS team,
(SELECT AS STRUCT * FROM `data-to-insights.ncaa.feature_engineering` WHERE opponent_school_ncaa = team AND season = 2018) AS opp
FROM team_seeds_all_possible_games
)
# Preparing 2019 data for prediction
SELECT
label,
2019 AS season, # 2018-2019 tournament season
# our team
seed,
school_ncaa,
# new pace metrics (basketball possession)
team.pace_rank,
team.poss_40min,
team.pace_rating,
# new efficiency metrics (scoring over time)
team.efficiency_rank,
team.pts_100poss,
team.efficiency_rating,
# opposing team
opponent_seed,
opponent_school_ncaa,
# new pace metrics (basketball possession)
opp.pace_rank AS opp_pace_rank,
opp.poss_40min AS opp_poss_40min,
opp.pace_rating AS opp_pace_rating,
# new efficiency metrics (scoring over time)
opp.efficiency_rank AS opp_efficiency_rank,
opp.pts_100poss AS opp_pts_100poss,
opp.efficiency_rating AS opp_efficiency_rating,
# a little feature engineering (take the difference in stats)
# new pace metrics (basketball possession)
opp.pace_rank - team.pace_rank AS pace_rank_diff,
opp.poss_40min - team.poss_40min AS pace_stat_diff,
opp.pace_rating - team.pace_rating AS pace_rating_diff,
# new efficiency metrics (scoring over time)
opp.efficiency_rank - team.efficiency_rank AS eff_rank_diff,
opp.pts_100poss - team.pts_100poss AS eff_stat_diff,
opp.efficiency_rating - team.efficiency_rating AS eff_rating_diff
FROM add_in_2018_season_stats
Vorhersagen treffen
CREATE OR REPLACE TABLE `bracketology.ncaa_2019_tournament_predictions` AS
SELECT
*
FROM
# let's predicted using the newer model
ML.PREDICT(MODEL `bracketology.ncaa_model_updated`, (
# let's predict on March 2019 tournament games:
SELECT * FROM `bracketology.ncaa_2019_tournament`
))
Klicken Sie auf Fortschritt prüfen.
Abfragen zum Erstellen der Tabellen „ncaa_2019_tournament“ und „ncaa_2019_tournament_predictions“ ausführen
Rufen Sie Ihre Vorhersagen ab:
SELECT
p.label AS prediction,
ROUND(p.prob,3) AS confidence,
school_ncaa,
seed,
opponent_school_ncaa,
opponent_seed
FROM `bracketology.ncaa_2019_tournament_predictions`,
UNNEST(predicted_label_probs) AS p
WHERE p.prob >= .5
AND school_ncaa = 'Duke'
ORDER BY seed, opponent_seed
Hier haben wir die Ergebnisse des Modells so gefiltert, dass alle möglichen Spiele der Duke University angezeigt werden. Scrollen Sie, um das Spiel Duke gegen North Dakota State zu finden.
Ergebnis: Duke (1) wird North Dakota State (16) mit einer Wahrscheinlichkeit von 88,5 % am 22.3.2019 schlagen.
Experimentieren Sie ein wenig, indem Sie den Filter school_ncaa so ändern, dass die Ergebnisse der Spiele in Ihrem Turnierbaum vorhergesagt werden. Notieren Sie sich, welche Wahrscheinlichkeiten das Modell für seine Vorhersagen angibt – und dann gute Unterhaltung bei den Spielen.
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
Sie haben mithilfe von BigQuery die Sieger des NCAA-Basketballturniers der Herren vorhergesagt.
Weitere Informationen
Möchten Sie mehr über Messwerte im Basketball und ihre Analyse erfahren? Hier finden Sie weitere Analysen des Teams, das für die Google Cloud-Anzeigen und ‑Vorhersagen des NCAA-Turniers verantwortlich war.
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.
Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen
Privates Surfen verwenden
Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
Klicken Sie im privaten Modus auf Konsole öffnen
In der Konsole anmelden
Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.
Diese Inhalte sind derzeit nicht verfügbar
Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail
Sehr gut!
Bei Verfügbarkeit kontaktieren wir Sie per E-Mail
Es ist immer nur ein Lab möglich
Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten
Privates Surfen für das Lab verwenden
Nutzen Sie den privaten oder Inkognitomodus, 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.
In diesem Lab verwenden Sie BigQuery, um das öffentliche NCAA-Dataset zu analysieren, und BigQuery ML, um eine Vorhersage über den Aufbau der NCAA-Turnierbäume zu treffen.