Um ein Modell für maschinelles Lernen zu erstellen, mit dem Produkte empfohlen werden, die Benutzern bei der Anzeige eines bestimmten Produkts angezeigt werden, müssen Sie die vorherigen Käufe von Benutzern auf der Website analysieren. In dieser Lektion werden Sie die Kaufdaten, die über Adobe Analytics an die Plattform gesendet werden, untersuchen und diese Daten in einen Funktionsdatensatz umwandeln, der Ihnen bei der Ausbildung Ihres maschinellen Lernmodells hilft.
Die URL für die Anmeldung bei Adobe Experience Platform lautet: https://experience.adobe.com/platform
Erlebnisdatenmodelle (XDM) unter Adobe Experience Platform helfen Ihnen, Ihre Daten zu standardisieren, damit sie in Ihrem Unternehmen effizient genutzt werden können.
Melden Sie sich bei Adobe Experience Platform an.
Nach dem Anmelden landen Sie auf der Homepage von Adobe Experience Platform.
Bevor Sie fortfahren, müssen Sie eine Sandbox auswählen. Die auszuwählende Sandbox trägt den Namen --aepSandboxId--
. Klicken Sie dazu auf den Text Produktions-Prod in der blauen Zeile oben auf Ihrem Bildschirm.
Nachdem Sie die entsprechende Sandbox ausgewählt haben, sehen Sie die Änderung des Bildschirms, und jetzt befinden Sie sich in Ihrer eigenen Sandbox.
Klicken Sie im linken Menü auf Datensätze.
Um ein Modell für Produktempfehlungen für maschinelles Lernen zu entwickeln, sind wir an Produkten interessiert, die Benutzer zuvor bei Luma gekauft haben. Um die für die Ausbildung unseres maschinellen Lernmodells erforderlichen Daten zu optimieren, haben wir ein einfaches Schema namens Recommendations Input Schema erstellt, wie in der folgenden Tabelle beschrieben (Schlüsselfelder: userid - der Benutzer, der mit der Luma Website interagiert hat, Zeitstempel - Zeit der Interaktion, Interaktionstyp - Kauf, Produkt - mit dem der Benutzer interagiert hat).
In diesem Tutorial verwenden wir drei Datensätze:
Dataset-Name | Datensatzschema | Beschreibung |
---|---|---|
Demosystem - Ereignis DataSet für Website (Global v1.1) | Demosystem - Ereignis DataSet für Schema der Website (Global v1.1) | Clickstream-Daten von Websites |
Demosystem - Ereignis DataSet für Recommendations Model Input (Global v1.1) | Demosystem - Ereignis-Schema für Recommendations-Modelleingabe (Global v1.1) | Die Clickstream-Daten werden mithilfe einer Feature/Training-Pipeline in ein Feature/Training-Dataset konvertiert. Diese Daten werden verwendet, um das Produkt Recommendations-Modell für maschinelles Lernen zu schulen. itemid und userid entsprechen einem Produkt, das dieser Benutzer zum Zeitpunkt des Zeitstempels gekauft hat |
Demosystem - Profil DataSet für ML Predictions (Global v1.1) | Demosystem - Profil-Schema für ML-Prognosen (Global v1.1) | Schema Dies ist der Datensatz, den Sie nach der Auswertung erhalten. Dies enthält die Liste der empfohlenen Produkte für jeden Benutzer |
Schauen wir uns einmal den Dataset Demo System - Ereignis DataSet for Website (Global v1.1) an.
Geben Sie auf der Seite "Datasets -"im Suchfeld Demosystem - Ereignis-Dataset für Website ein.
Öffnen Sie den Datensatz Demosystem - Ereignis-Datensatz für Website (Global v1.1).
Wenn Sie auf die Schaltfläche Vorschau DataSet klicken, können Sie sehen, welche Daten in diesen Datensatz gesendet werden und wie das Datenmodell aussieht. FYI - Ihre Daten in Ihrem Datensatz können anders aussehen. Das ist normal und erwartet.
Schließen Sie das Fenster "Vorschau"Ihres Datensatzes.
Schauen wir uns das Schema an, das für diesen Datensatz definiert wurde.
Wählen Sie im linken Menü Schema.
Suchen Sie in der Übersicht über die Schemas nach den 3 Schemas, die Sie in diesem Labor verwenden werden.
Name des Schemas |
---|
Demosystem - Ereignis-Schema für Recommendations-Modelleingabe (Global v1.1) |
Demosystem - Profil-Schema für ML-Prognosen (Global v1.1) |
Demosystem - Ereignis-Schema für Website (Global v1.1) |
Klicken Sie auf , um das Schema Demosystem - Ereignis-Schema für Website (Global v1.1) zu öffnen.
Lassen Sie uns jetzt die Hände schmutzig machen, indem wir zu Jupyter-Notebooks gehen.
Klicken Sie im linken Menü auf Notebooks.
Klicken Sie auf JupyterLab. Sie sehen jetzt das Laden von JupyterLab. Dies kann 1-2 Minuten dauern.
Sobald Jupyter-Notebooks ausgeführt werden, können Sie mit dem nächsten Schritt fortfahren.
Jupyter-Notebooks werden ausgeführt, damit Sie den Vorgang zum Erstellen Ihres Notebooks und zum Hinzufügen des erforderlichen Codes zur Umwandlung von Clickstream-Daten in ein brauchbares Dataset, das für Schulungen bereit ist, Beginn leisten können.
Öffnen Sie in Jupyter-Notebooks ein leeres Notizbuch Python 3, indem Sie auf die Schaltfläche Leer im Starter klicken.
Dann haben Sie ein leeres neues Python 3 Notebook. Bevor Sie fortfahren, geben Sie Ihrem Notebook einen beschreibenden Namen. Klicken Sie mit der rechten Maustaste auf die Datei Unbenannt.ipynb und klicken Sie auf Umbenennen.
Geben Sie luma-recommendations-feature-transformation.ipynb als Namen für Ihr Notebook ein und klicken Sie auf Eingabetaste. Dann haben Sie Folgendes:
Nächste Schritte:
Klicken Sie in die erste Zelle des Notebooks.
Kopieren Sie den unten stehenden Code und fügen Sie ihn in die erste Zelle Ihres Notebooks ein.
import pandas as pd
inputDataset="--aepWebsiteInteractionsDatasetId--" # Demo System - Event Dataset for Website (Global v1.1) Dataset
outputDataset="--aepRecommendationsInputDatasetId--" # Demo System - Event Dataset for Recommendations Model Input (Global v1.1)
tenant_id = "--aepTenantId--"
item_id = "web.webPageDetails.name"
interactionType = "eventType"
user_id = "--aepTenantId--.identification.core.ecid"
brand_name = "--aepTenantId--.demoEnvironment.brandName"
timestamp = "timestamp"
idcolumn = "_id"
client_context = PLATFORM_SDK_CLIENT_CONTEXT
Die Umgebung-Variablen aepWebsiteInteractionsDataSetId und aepRecommendationsInputDataId beziehen sich auf die DataSet-IDs von Datensätzen, die in Ihrer Adobe Experience Platform-Instanz erstellt wurden.
aepWebsiteInteractionsDataSetID bezieht sich auf die DataSet-ID des Demosystems - Ereignis DataSet für Website (Global v1.1), aepRecommendationsInputDataSetID bezieht sich auf die Dataset-ID des Dataset Demo Systems - Ereignis DataSet for Recommendations Model Input (Global v1.1). Ersetzen Sie die Umgebung durch die Datensatzkennungen, wenn Sie den Code in die erste Ihres Notebooks einfügen.
Sie haben dann Folgendes in Zelle 1:
Klicken Sie auf die Wiedergabeschaltfläche, um diese Zelle auszuführen.
Die Ausführung dieser Zelle kann einige Sekunden bis Minuten dauern. Warten Sie einfach und machen Sie nichts anderes in diesem Notebook, bis Sie das unten stehende Ergebnis erhalten.
Jedes Mal, wenn Sie die Abspielen-Taste drücken, um eine Zelle auszuführen, wird ein Indikator angezeigt, der Ihnen mitteilt, ob Ihre Aktion noch läuft oder nicht.
Dies ist der Indikator, wenn Sie auf die Wiedergabetaste drücken, um eine Zelle auszuführen:
Dies ist der Indikator, wenn die Zelle ausgeführt und die Aktion abgeschlossen wurde:
Fahren Sie die Übungen erst dann fort, wenn der Indikator zeigt, dass die Ausführung abgeschlossen ist. Wenn Sie nicht warten, bis die Ausführung abgeschlossen ist, werden Sie in den nächsten Schritten festsitzen und viele Fehler erhalten. Dies gilt für die Ausführung aller Zellen eines Jupyter-Notebooks: Warten Sie immer, bis die Ausführung abgeschlossen ist. Der Indikator ändert sich und sieht wie folgt aus:
Es gibt kein visuelles Ergebnis nach der Ausführung von Zelle 1. Nachdem Sie auf die Wiedergabeschaltfläche geklickt haben, fahren Sie mit dem nächsten Schritt fort.
Klicken Sie auf die nächste leere Zelle im Notebook.
Kopieren Sie den unten stehenden Code und fügen Sie ihn in die nächste leere Zelle Ihres Notebooks ein.
from platform_sdk.dataset_reader import DatasetReader
dataset_reader = DatasetReader(client_context, inputDataset)
df = dataset_reader.limit(1000).read()
df.head()
Sie haben dann Folgendes in der Zelle:
Klicken Sie auf die Wiedergabeschaltfläche, um diese Zelle auszuführen.
Die Ausführung dieser Zelle kann 1-2 Minuten dauern. Warten Sie einfach und machen Sie nichts anderes in diesem Notebook, bis Sie das unten stehende Ergebnis erhalten.
Warten Sie, bis der Indikator wie folgt aussieht, bevor Sie fortfahren:
Das Ergebnis sieht wie folgt aus (ist jedoch nicht identisch - in Ihrer Adobe Experience Platform-Instanz stehen möglicherweise mehr oder weniger Daten zur Verfügung):
Klicken Sie auf die nächste leere Zelle im Notebook.
Kopieren Sie den unten stehenden Code und fügen Sie ihn in die nächste leere Zelle Ihres Notebooks ein.
# drop nulls
df = df.dropna(subset=[user_id, item_id, interactionType, brand_name])
# only focus on one brand
df = df[df[brand_name].isin(["Luma", "Luma Retail"])]
# filter out product views
df = df[df[interactionType].isin(["commerce.productViews"])]
Sie haben dann Folgendes in der Zelle:
Klicken Sie auf die Wiedergabeschaltfläche, um diese Zelle auszuführen.
Warten Sie, bis der Indikator wie folgt aussieht, bevor Sie fortfahren:
Nach dieser Ausführung gibt es kein visuelles Ergebnis. Nachdem Sie auf die Wiedergabeschaltfläche geklickt haben, fahren Sie mit dem nächsten Schritt fort.
Klicken Sie auf die nächste leere Zelle im Notebook.
Kopieren Sie den unten stehenden Code und fügen Sie ihn in die nächste leere Zelle Ihres Notebooks ein.
# vectorized (no loops) solution for splitting in pandas
# source: https://stackoverflow.com/a/48120674
def split_df(dataframe, col_name, sep):
orig_col_index = dataframe.columns.tolist().index(col_name)
orig_index_name = dataframe.index.name
orig_columns = dataframe.columns
dataframe = dataframe.reset_index()
index_col_name = (set(dataframe.columns) - set(orig_columns)).pop()
df_split = pd.DataFrame(
pd.DataFrame(dataframe[col_name].str.split(sep).tolist())
.stack().reset_index(level=1, drop=1), columns=[col_name])
df = dataframe.drop(col_name, axis=1)
df = pd.merge(df, df_split, left_index=True, right_index=True, how='inner')
df = df.set_index(index_col_name)
df.index.name = orig_index_name
return df
df2 = split_df(df, item_id, "\|\|")
Sie haben dann Folgendes in der Zelle:
Klicken Sie auf die Wiedergabeschaltfläche, um diese Zelle auszuführen.
Die Ausführung dieser Zelle kann 1-2 Minuten dauern. Warten Sie einfach und machen Sie nichts anderes in diesem Notebook, bis Sie das unten stehende Ergebnis erhalten.
Warten Sie, bis der Indikator wie folgt aussieht, bevor Sie fortfahren:
Nach dieser Ausführung gibt es kein visuelles Ergebnis. Nachdem Sie auf die Wiedergabeschaltfläche geklickt haben, fahren Sie mit dem nächsten Schritt fort.
Klicken Sie auf die nächste leere Zelle im Notebook.
Kopieren Sie den unten stehenden Code und fügen Sie ihn in die nächste leere Zelle Ihres Notebooks ein.
filtered_column_list = [idcolumn, item_id, user_id, interactionType, brand_name, timestamp]
df2 = df2[filtered_column_list]
df2.rename(columns={
item_id: tenant_id + ".recommendationsInput" + ".productSku",
user_id: tenant_id + ".recommendationsInput" + ".ecid",
interactionType: tenant_id + ".recommendationsInput" + ".interactionType",
brand_name: tenant_id + ".recommendationsInput" + ".brandName"
}, inplace=True)
Sie haben dann Folgendes in der Zelle:
Klicken Sie auf die Wiedergabeschaltfläche, um diese Zelle auszuführen.
Die Ausführung dieser Zelle kann 1-2 Minuten dauern. Warten Sie einfach und machen Sie nichts anderes in diesem Notebook, bis Sie das unten stehende Ergebnis erhalten.
Warten Sie, bis der Indikator wie folgt aussieht, bevor Sie fortfahren:
Nach dieser Ausführung gibt es kein visuelles Ergebnis. Nachdem Sie auf die Wiedergabeschaltfläche geklickt haben, fahren Sie mit dem nächsten Schritt fort.
Klicken Sie auf die nächste leere Zelle im Notebook.
Kopieren Sie den unten stehenden Code und fügen Sie ihn in die nächste leere Zelle Ihres Notebooks ein.
df2.head()
Sie haben dann Folgendes in der Zelle:
Klicken Sie auf die Wiedergabeschaltfläche, um diese Zelle auszuführen.
Warten Sie, bis der Indikator wie folgt aussieht, bevor Sie fortfahren:
Das Ergebnis sieht folgendermaßen aus:
Klicken Sie auf die nächste leere Zelle im Notebook.
Kopieren Sie den unten stehenden Code und fügen Sie ihn in die nächste leere Zelle Ihres Notebooks ein.
df2['timestamp'] = pd.to_datetime(df2['timestamp']).apply(lambda x: x.isoformat())
from platform_sdk.models import Dataset
from platform_sdk.dataset_writer import DatasetWriter
dataset = Dataset(PLATFORM_SDK_CLIENT_CONTEXT).get_by_id(dataset_id=outputDataset)
dataset_writer = DatasetWriter(PLATFORM_SDK_CLIENT_CONTEXT, dataset)
write_tracker = dataset_writer.write(df2, file_format='json')
Sie haben dann Folgendes in der Zelle:
Klicken Sie auf die Wiedergabeschaltfläche, um diese Zelle auszuführen.
Warten Sie, bis der Indikator wie folgt aussieht, bevor Sie fortfahren:
Das Ergebnis sieht folgendermaßen aus:
Das Ergebnis in Adobe Experience Platform ist, dass ein neuer Datenstapel auf dem Demosystem - Ereignis-Datensatz für Recommendations-Modelleingabe (Global v1.1) erstellt wurde, den Sie überprüfen können, indem Sie
hier.
Nächster Schritt: 8.2 - Modellerstellung und -operationalisierung