In dieser Anleitung erfahren Sie, wie Sie ein Matrixfaktorisierungsmodell erstellen und mit den Google Analytics 360-Nutzungsdaten 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 indirekte Informationen zu den Kundenpräferenzen wie die Dauer der Nutzersitzung zum Trainieren des Modells verwenden, wird dies als Training mit implizitem Feedback bezeichnet. Matrixfaktorisierungsmodelle werden mit dem Algorithmus der gewichteten alternierenden kleinsten Quadrate trainiert, wenn Sie implizites Feedback als Trainingsdaten verwenden.
Lernziele
In dieser Anleitung werden Sie durch die folgenden Aufgaben geführt:
- Mit der Anweisung
CREATE MODEL
ein Matrixfaktorisierungsmodell erstellen. - Bewerten Sie das Modell mit der
ML.EVALUATE
-Funktion. - Generieren von Inhaltsempfehlungen für Nutzer mithilfe des Modells und der Funktion
ML.RECOMMEND
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.
Vorbereitung
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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.
-
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.
- BigQuery ist in neuen Projekten automatisch aktiviert.
Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu
Enable the BigQuery API.
.
Erforderliche Berechtigungen
- Sie benötigen die IAM-Berechtigung
bigquery.datasets.create
, um das Dataset zu erstellen. Zum Erstellen der Verbindungsressource benötigen Sie die folgenden Berechtigungen:
bigquery.connections.create
bigquery.connections.get
Zum Erstellen des Modells benötigen Sie die folgenden Berechtigungen:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.connections.delegate
Zum Ausführen von Inferenzen benötigen Sie die folgenden Berechtigungen:
bigquery.models.getData
bigquery.jobs.create
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Einführung in IAM.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern:
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
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
bqml_tutorial
ein.Wählen Sie als Standorttyp die Option Mehrere Regionen 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 unverändert und klicken Sie auf Dataset erstellen.
Beispieldaten vorbereiten
Transformieren Sie die Daten aus der Tabelle GA360_test.ga_sessions_sample
in eine bessere Struktur für das Modelltraining und schreiben Sie diese Daten dann in eine BigQuery-Tabelle. Mit der folgenden Abfrage wird die Sitzungsdauer für jeden Nutzer und für jeden Inhalt berechnet. Diese Daten können Sie dann als implizites Feedback verwenden, um die Präferenzen des Nutzers für diese Inhalte abzuleiten.
So erstellen Sie die Tabelle mit Trainingsdaten:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Erstellen Sie die Trainingsdatentabelle. Fügen Sie die folgende Abfrage in den Abfrageeditor 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;
Sie können sich eine Teilmenge der Trainingsdaten ansehen. Fügen Sie die folgende Abfrage in den Abfrageeditor 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 anhand der Daten in der Tabelle analytics_session_data
. Das Modell wird darauf trainiert, für jedes visitorId
-contentId
-Paar eine Konfidenzbewertung 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.
Die folgende CREATE MODEL
-Anweisung generiert Empfehlungen anhand der folgenden Spalten:
visitorId
: Die Besucher-ID.contentId
: die Content-ID.rating
: Die implizite Bewertung von 0 bis 1, die für jedes Besucher-Inhalt-Paar berechnet wurde, wobei die Werte zentriert und skaliert werden.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor 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 10 Minuten. Anschließend wird das Modell
mf_implicit
im Bereich Explorer angezeigt. Da die Abfrage eineCREATE MODEL
-Anweisung zum Erstellen eines Modells verwendet, werden keine Abfrageergebnisse ausgegeben.
Trainingsstatistiken abrufen
Optional können Sie sich die Trainingsstatistiken des Modells in derGoogle Cloud -Konsole ansehen.
Ein Algorithmus für maschinelles Lernen erstellt ein Modell, indem er viele Iterationen des Modells mit verschiedenen 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:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Maximieren Sie im Bereich Explorer Ihr Projekt, maximieren Sie das Dataset
bqml_tutorial
und maximieren Sie dann den Ordner Modelle.Klicken Sie auf das Modell
mf_implicit
und dann auf den Tab Training.Klicken Sie im Bereich 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, enthält diese Spalte den mittleren quadratischen Fehler.
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 Bewertungsmesswerte aus, die während des Trainings berechnet wurden.
So bewerten Sie das Modell:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor 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.EVALUATE
finden Sie unter Matrixfaktorisierungsmodelle.
Vorhergesagte Bewertungen für eine Teilmenge von Besucher-Inhalt-Paaren abrufen
Mit dem ML.RECOMMEND
können Sie die prognostizierte Altersfreigabe für jeden Inhalt für fünf Websitebesucher abrufen.
So rufen Sie die geschätzten Bewertungen ab:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor 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:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Schreiben Sie die prognostizierten 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 -Konsole 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:
- 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
- Erstellen Sie ein Matrixfaktorisierungsmodell auf der Grundlage von explizitem Feedback.
- Einführung in BigQuery ML
- Mehr über maschinelles Lernen im Machine Learning Crash Course erfahren