In dieser Anleitung erfahren Sie, wie Sie ein Matrixfaktorisierungsmodell erstellen und mit den Google Analytics 360-Nutzersitzungsdaten in der öffentlichen Tabelle GA360_test.ga_sessions_sample trainieren. Anschließend verwenden Sie das Matrixfaktorisierungsmodell, um Inhaltsempfehlungen für Websitenutzer zu generieren.
Wenn Sie das Modell mit indirekten Informationen zu Kundenpräferenzen wie der Sitzungsdauer trainieren, wird dies als Training mit implizitem Feedback bezeichnet. Matrixfaktorisierungsmodelle werden mit dem WALS-Algorithmus (Weighted Alternating Least Squares) trainiert, wenn Sie implizites Feedback als Trainingsdaten verwenden.
Ziele
In dieser Anleitung werden Sie durch die folgenden Aufgaben geführt:
- Matrixfaktorisierungsmodell mit der Anweisung
CREATE MODELerstellen. - Das Modell mit der
ML.EVALUATE-Funktion bewerten. - Inhaltsempfehlungen für Nutzer generieren, indem Sie das Modell mit der Funktion
ML.RECOMMENDverwenden.
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloudverwendet, darunter:
- BigQuery
- BigQuery ML
Weitere Informationen zu den Kosten von BigQuery finden Sie auf der Seite BigQuery-Preise.
Weitere Informationen zu den Kosten für BigQuery ML finden Sie unter BigQuery ML-Preise.
Hinweis
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- BigQuery ist in neuen Projekten automatisch aktiviert.
Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu
Aktivieren Sie die BigQuery API, falls sie noch nicht aktiviert ist.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen
Erforderliche Berechtigungen
Sie benötigen die IAM-Berechtigung
bigquery.datasets.create, um das Dataset zu erstellen.Zum Erstellen des Modells benötigen Sie die folgenden Berechtigungen:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
Zum Ausführen von Inferenzen benötigen Sie die folgenden Berechtigungen:
bigquery.models.getDatabigquery.jobs.create
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Einführung in IAM.
Dataset erstellen
Wählen Sie eine der folgenden Optionen aus, um ein BigQuery-Dataset zu erstellen:
Console
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Klicken Sie im linken Bereich auf Explorer:

Wenn der linke Bereich nicht angezeigt wird, klicken Sie auf Linken Bereich maximieren, um ihn zu öffnen.
Maximieren Sie im Explorer Ihr Projekt und klicken Sie dann auf Datasets.
Klicken Sie auf der Seite Datasets auf Dataset erstellen.
Führen Sie im Bereich Dataset erstellen die folgenden Schritte aus:
Geben Sie unter Dataset-ID
bqml_tutorialein.Wählen Sie unter Speicherort der Daten die Option USA aus.
Übernehmen Sie die anderen Standardeinstellungen.
Klicken Sie auf Dataset erstellen.
bq
Wenn Sie ein neues Dataset erstellen möchten, verwenden Sie den Befehl bq mk --dataset.
Erstellen Sie ein Dataset mit dem Namen
bqml_tutorialund dem DatenspeicherortUS:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Prüfen Sie, ob das Dataset erstellt wurde:
bq ls
API
Rufen Sie die Methode datasets.insert mit einer definierten Dataset-Ressource auf:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Beispieldaten vorbereiten
Die Daten aus der Tabelle GA360_test.ga_sessions_sample in eine bessere Struktur für das Modelltraining umwandeln und diese Daten dann in eine BigQuery-Tabelle schreiben. Mit der folgenden Abfrage wird die Sitzungsdauer für jeden Nutzer und jeden Inhalt berechnet. Diese können Sie dann als implizites Feedback verwenden, um die Präferenz des Nutzers für diesen Inhalt abzuleiten.
So erstellen Sie die Tabelle mit den Trainingsdaten:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Erstellen Sie die Tabelle mit den Trainingsdaten. Fügen Sie im Abfrageeditor die folgende Abfrage ein und klicken Sie auf Ausführen:
CREATE OR REPLACE TABLE `bqml_tutorial.analytics_session_data` AS WITH visitor_page_content AS ( SELECT fullVisitorID, ( SELECT MAX( IF( index = 10, value, NULL)) FROM UNNEST(hits.customDimensions) ) AS latestContentId, (LEAD(hits.time, 1) OVER (PARTITION BY fullVisitorId ORDER BY hits.time ASC) - hits.time) AS session_duration FROM `cloud-training-demos.GA360_test.ga_sessions_sample`, UNNEST(hits) AS hits WHERE # only include hits on pages hits.type = 'PAGE' GROUP BY fullVisitorId, latestContentId, hits.time ) # aggregate web stats SELECT fullVisitorID AS visitorId, latestContentId AS contentId, SUM(session_duration) AS session_duration FROM visitor_page_content WHERE latestContentId IS NOT NULL GROUP BY fullVisitorID, latestContentId HAVING session_duration > 0 ORDER BY latestContentId;
Teilmenge der Trainingsdaten ansehen Fügen Sie im Abfrageeditor die folgende Abfrage ein und klicken Sie auf Ausführen:
SELECT * FROM `bqml_tutorial.analytics_session_data` LIMIT 5;
Die Antwort sollte in etwa so aussehen:
+---------------------+-----------+------------------+ | visitorId | contentId | session_duration | +---------------------+-----------+------------------+ | 7337153711992174438 | 100074831 | 44652 | +---------------------+-----------+------------------+ | 5190801220865459604 | 100170790 | 121420 | +---------------------+-----------+------------------+ | 2293633612703952721 | 100510126 | 47744 | +---------------------+-----------+------------------+ | 5874973374932455844 | 100510126 | 32109 | +---------------------+-----------+------------------+ | 1173698801255170595 | 100676857 | 10512 | +---------------------+-----------+------------------+
Modell erstellen
Erstellen Sie ein Matrixfaktorisierungsmodell und trainieren Sie es mit den Daten in der Tabelle analytics_session_data. Das Modell wird trainiert, um eine Konfidenzbewertung für jedes visitorId/contentId-Paar vorherzusagen. Die Konfidenzbewertung wird mit Zentrierung und Skalierung nach dem Medianwert für die Sitzungsdauer erstellt. Datensätze, bei denen die Sitzungsdauer mehr als das 3,33-fache des Medianwerts beträgt, werden als Ausreißer herausgefiltert.
In der folgenden CREATE MODEL-Anweisung werden diese Spalten verwendet, um Empfehlungen zu generieren:
visitorId: Die Besucher-ID.contentId: Die Content-ID.rating: Die implizite Bewertung von 0 bis 1, die für jedes Besucher-Inhalt-Paar berechnet, zentriert und skaliert wird.
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Fügen Sie im Abfrageeditor die folgende Abfrage ein und klicken Sie auf Ausführen:
CREATE OR REPLACE MODEL `bqml_tutorial.mf_implicit` OPTIONS ( MODEL_TYPE = 'matrix_factorization', FEEDBACK_TYPE = 'implicit', USER_COL = 'visitorId', ITEM_COL = 'contentId', RATING_COL = 'rating', L2_REG = 30, NUM_FACTORS = 15) AS SELECT visitorId, contentId, 0.3 * (1 + (session_duration - 57937) / 57937) AS rating FROM `bqml_tutorial.analytics_session_data` WHERE 0.3 * (1 + (session_duration - 57937) / 57937) < 1;
Die Abfrage dauert etwa zehn Minuten. Anschließend wird das Modell
mf_implicitim Bereich Explorer angezeigt. Da die Abfrage eineCREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, werden keine Abfrageergebnisse ausgegeben.
Trainingsstatistiken abrufen
Optional können Sie die Trainingsstatistiken des Modells in derGoogle Cloud Console aufrufen.
Ein Algorithmus für maschinelles Lernen erstellt ein Modell, indem er viele Iterationen des Modells mit unterschiedlichen Parametern erstellt und dann die Version des Modells auswählt, die den Verlust minimiert. Dieser Vorgang wird als empirische Risikominimierung bezeichnet. In den Trainingsstatistiken des Modells sehen Sie den Verlust, der mit jeder Iteration des Modells verbunden ist.
So rufen Sie die Trainingsstatistiken des Modells auf:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Klicken Sie im linken Bereich auf Explorer:

Wenn der linke Bereich nicht angezeigt wird, klicken Sie auf Linken Bereich maximieren, um ihn zu öffnen.
Maximieren Sie im Bereich Explorer Ihr Projekt und klicken Sie auf Datasets.
Klicken Sie auf das Dataset
bqml_tutorial. Sie können auch die Suchfunktion oder Filter verwenden, um das Dataset zu finden.Klicken Sie auf den Tab Modelle.
Klicken Sie auf das Modell
mf_implicitund dann auf den Tab Training.Klicken Sie im Abschnitt Anzeigen als auf Tabelle. Die Antwort sollte in etwa so aussehen:
+-----------+--------------------+--------------------+ | Iteration | Training Data Loss | Duration (seconds) | +-----------+--------------------+--------------------+ | 5 | 0.0027 | 47.27 | +-----------+--------------------+--------------------+ | 4 | 0.0028 | 39.60 | +-----------+--------------------+--------------------+ | 3 | 0.0032 | 55.57 | +-----------+--------------------+--------------------+ | ... | ... | ... | +-----------+--------------------+--------------------+
Die Spalte Trainingsdatenverlust enthält den Verlustmesswert, der berechnet wird, nachdem das Modell trainiert wurde. Da es sich um ein Matrixfaktorisierungsmodell handelt, wird in dieser Spalte die mittlere quadratische Abweichung angezeigt.
Modell bewerten
Bewerten Sie die Leistung des Modells mit der Funktion ML.EVALUATE.
Die Funktion ML.EVALUATE wertet die vom Modell zurückgegebenen vorhergesagten Inhaltsbewertungen anhand der während des Trainings berechneten Bewertungsmesswerte aus.
So bewerten Sie das Modell:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Fügen Sie im Abfrageeditor die folgende Abfrage ein und klicken Sie auf Ausführen:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.mf_implicit`);
Die Antwort sollte in etwa so aussehen:
+------------------------+-----------------------+---------------------------------------+---------------------+ | mean_average_precision | mean_squared_error | normalized_discounted_cumulative_gain | average_rank | +------------------------+-----------------------+---------------------------------------+---------------------+ | 0.4434341257478137 | 0.0013381759837648962 | 0.9433280547112802 | 0.24031636088594222 | +------------------------+-----------------------+---------------------------------------+---------------------+
Weitere Informationen zur Ausgabe der Funktion
ML.EVALUATEfinden Sie unter Ausgabe.
Vorhergesagte Bewertungen für eine Teilmenge von Besucher-Inhalt-Paaren abrufen
Verwenden Sie die ML.RECOMMEND, um die vorhergesagte Bewertung für jeden Inhalt für fünf Websitebesucher abzurufen.
So rufen Sie prognostizierte Bewertungen ab:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Fügen Sie im Abfrageeditor die folgende Abfrage ein und klicken Sie auf Ausführen:
SELECT * FROM ML.RECOMMEND( MODEL `bqml_tutorial.mf_implicit`, ( SELECT visitorId FROM `bqml_tutorial.analytics_session_data` LIMIT 5 ));
Die Antwort sollte in etwa so aussehen:
+-------------------------------+---------------------+-----------+ | predicted_rating_confidence | visitorId | contentId | +-------------------------------+---------------------+-----------+ | 0.0033608418060270262 | 7337153711992174438 | 277237933 | +-------------------------------+---------------------+-----------+ | 0.003602395397293956 | 7337153711992174438 | 158246147 | +-------------------------------+---------------------+-- -------+ | 0.0053197670652785356 | 7337153711992174438 | 299389988 | +-------------------------------+---------------------+-----------+ | ... | ... | ... | +-------------------------------+---------------------+-----------+
Empfehlungen generieren
Verwenden Sie die vorhergesagten Bewertungen, um die fünf am häufigsten empfohlenen Content-IDs für jede Besucher-ID zu generieren.
So generieren Sie Empfehlungen:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Schreiben Sie die vorhergesagten Bewertungen in eine Tabelle. Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
CREATE OR REPLACE TABLE `bqml_tutorial.recommend_content` AS SELECT * FROM ML.RECOMMEND(MODEL `bqml_tutorial.mf_implicit`);
Wählen Sie die fünf besten Ergebnisse pro Besucher aus. Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
SELECT visitorId, ARRAY_AGG( STRUCT(contentId, predicted_rating_confidence) ORDER BY predicted_rating_confidence DESC LIMIT 5) AS rec FROM `bqml_tutorial.recommend_content` GROUP BY visitorId;
Die Antwort sollte in etwa so aussehen:
+---------------------+-----------------+---------------------------------+ | visitorId | rec:contentId | rec:predicted_rating_confidence | +---------------------+-----------------+------------------------- ------+ | 867526255058981688 | 299804319 | 0.88170525357178664 | | | 299935287 | 0.54699439944935124 | | | 299410466 | 0.53424780863188659 | | | 299826767 | 0.46949603950374219 | | | 299809748 | 0.3379991197434149 | +---------------------+-----------------+---------------------------------+ | 2434264018925667659 | 299824032 | 1.3903516407308065 | | | 299410466 | 0.9921995618196483 | | | 299903877 | 0.92333625294129218 | | | 299816215 | 0.91856701667757279 | | | 299852437 | 0.86973661454890561 | +---------------------+-----------------+---------------------------------+ | ... | ... | ... | +---------------------+-----------------+---------------------------------+
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
- Sie können das von Ihnen erstellte Projekt löschen.
- Sie können das Projekt aber auch behalten und das Dataset löschen.
Dataset löschen
Wenn Sie Ihr Projekt löschen, werden alle Datasets und Tabellen entfernt. Wenn Sie das Projekt wieder verwenden möchten, können Sie das in dieser Anleitung erstellte Dataset löschen:
Rufen Sie, falls erforderlich, die Seite „BigQuery“ in derGoogle Cloud Console auf.
Wählen Sie im Navigationsbereich das Dataset bqml_tutorial aus, das Sie erstellt haben.
Klicken Sie rechts im Fenster auf Delete dataset (Dataset löschen). Dadurch werden das Dataset, die Tabelle und alle Daten gelöscht.
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:
- Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Nächste Schritte
- Versuchen Sie, ein Matrixfaktorisierungsmodell basierend auf explizitem Feedback zu erstellen.
- Einführung in BigQuery ML
- Mehr über maschinelles Lernen im Machine Learning Crash Course erfahren