8.1 Exploration et transformation des données

Pour créer un modèle d’apprentissage automatique qui recommandera des produits que les utilisateurs peuvent aimer lorsqu’ils consultent un produit particulier, vous devez analyser les achats précédents effectués par les utilisateurs sur le site Web. Dans cette leçon, vous allez explorer les données d’achat circulant via Adobe Analytics vers la plate-forme et les transformer en un ensemble de données de fonctionnalités qui peut vous aider à former votre modèle d’apprentissage automatique.

L’URL de connexion à Adobe Experience Platform est : https://experience.adobe.com/platform

8.1.1 Exploration des jeux de données et des Schémas XDM

Les modèles de données d’expérience (XDM) sur Adobe Experience Platform vous aident à normaliser vos données afin qu’elles puissent être utilisées efficacement dans l’ensemble de votre entreprise.

Connectez-vous à Adobe Experience Platform.

Une fois connecté, vous accédez à la page d'accueil de Adobe Experience Platform.

Ingestion des données

Avant de continuer, vous devez sélectionner un sandbox. Le sandbox à sélectionner est nommé --aepSandboxId--. Pour ce faire, cliquez sur le texte Production Prod dans la ligne bleue au-dessus de votre écran.

Ingestion des données

Après avoir sélectionné le sandbox approprié, vous verrez l'écran changer et vous êtes maintenant dans votre sandbox dédié.

Ingestion des données

Dans le menu de gauche, cliquez sur Datasets.

DSW

Pour développer un modèle d'apprentissage automatique de recommandations de produits, nous nous intéressons aux produits que les utilisateurs ont déjà achetés avec Luma. Pour simplifier les données nécessaires à la formation de notre modèle d'apprentissage automatique, nous avons créé un schéma simple appelé Schéma d'entrée Recommendations, comme indiqué dans le tableau ci-dessous (champs clés : userid - l'utilisateur qui a interagi avec le site Luma, horodatage - heure de l'interaction, interactiontype - Achat, itemid - produit avec lequel l'utilisateur a interagi).

Dans ce didacticiel, nous utiliserons trois jeux de données :

Nom du jeu de données Schéma du jeu de données Description
Système de démonstration - Jeu de données de Événement pour le site Web (Global v1.1) Système de démonstration - Jeu de données de Événement pour le Schéma Site Web (Global v1.1) Données du parcours de navigation sur le site Web
Système de démonstration - Jeu de données de Événement pour l'entrée de modèle Recommendations (Global v1.1) Système de démonstration - Schéma de Événement pour l’entrée de modèle Recommendations (Global v1.1) Les données du parcours de navigation seront converties en un ensemble de données de fonction/formation à l’aide d’un pipeline de fonctionnalités. Ces données servent à former le modèle d’apprentissage automatique de la Recommendations produit. itemid et userid correspondent à un produit acheté par cet utilisateur au moment de l’horodatage.
Système de démonstration - Jeu de données de Profil pour les prédictions ML (Global v1.1) Système de démonstration - Schéma de Profil pour les prédictions ML (Global v1.1) Schéma Il s’agit du jeu de données que vous obtenez après l’évaluation. Contient la liste des produits recommandés pour chaque utilisateur.

Examinons l'ensemble de données Demo System - Événement Dataset for Website (Global v1.1).

Dans la page Jeu de données -, saisissez Système de démonstration - Jeu de données de Événement pour le site Web dans la zone de recherche.

DSW

Ouvrez le jeu de données Demo System - Événement Dataset for Website (Global v1.1).

DSW

En cliquant sur le bouton Jeu de données de Prévisualisation, vous pouvez voir quelles données sont envoyées dans ce jeu de données et à quoi ressemble le modèle de données. FYI : vos données dans votre jeu de données peuvent avoir un aspect différent. C'est normal et attendu.

DSW

DSW

Fermez la fenêtre de prévisualisation de votre jeu de données.

Examinons le schéma qui a été défini pour ce jeu de données.

Dans le menu de gauche, sélectionnez Schémas.

DSW

Dans la présentation des Schémas, recherchez les 3 schémas que vous allez utiliser dans ce laboratoire.

Nom du schéma
Système de démonstration - Schéma de Événement pour l’entrée de modèle Recommendations (Global v1.1)
Système de démonstration - Schéma de Profil pour les prédictions ML (Global v1.1)
Système de démonstration - Schéma de Événement pour le site Web (Global v1.1)

Cliquez pour ouvrir le schéma nommé Demo System - Événement Schéma for Website (Global v1.1).

DSW

8.1.2 Ordinateurs portables Jupyter ouverts

Salissons vos mains maintenant, en allant sur les portables Jupyter.

Dans le menu de gauche, cliquez sur Ordinateurs portables.

DSW

Cliquez sur JupyterLab. Vous allez maintenant voir le chargement de JupyterLab. Cette opération peut prendre entre 1 et 2 minutes.

DSW

Une fois que Jupyter Notebooks est en cours d'exécution, vous pouvez passer à l'étape suivante.

DSW

8.1.3 Transformation des données du parcours de navigation

Jupyter Notebooks est en cours d'exécution. Vous pouvez ainsi début le processus de création de votre ordinateur portable et ajouter le code dont vous avez besoin pour transformer les données de parcours de navigation en un jeu de données utilisable prêt pour la formation.

DSW

Dans les blocs-notes Jupyter, ouvrez un bloc-notes Python 3 vide en cliquant sur le bouton Vierge sur le lanceur.

DSW

Vous aurez alors un nouveau portable Python 3 vide et vide. Avant de continuer, donnez un nom descriptif à votre bloc-notes. Cliquez avec le bouton droit sur le fichier Untitled.ipynb et cliquez sur Renommer.

DSW

Saisissez luma-recommendations-feature-transformation.ipynb comme nom de votre bloc-notes et appuyez sur Entrée. Vous aurez ensuite ceci :

DSW

Ce que vous allez faire ensuite :

  • Définir les jeux de données d'entrée et de sortie pour ce bloc-notes
  • Plate-forme de formulaire à lire : Charger le jeu de données d’entrée et le décrire
  • Filtrage des valeurs vides
  • Fractionner item_id en enregistrements individuels
  • Créer un nouveau cadre de données contenant les données dont nous avons besoin pour notre modèle
  • Écrire sur la plate-forme : Extraire cette trame de données dans un jeu de données à Adobe Experience Platform

Définir les jeux de données d'entrée et de sortie pour ce bloc-notes

Cliquez dans la première cellule du bloc-notes.

DSW

Copiez le code ci-dessous et collez-le dans la première cellule de votre bloc-notes.

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
IMPORTANT

Les variables d'environnement aepWebsiteInteractionsDatasetId et aepRecommendationsInputDatasetId se rapportent aux ID de jeux de données des jeux de données créés dans votre instance Adobe Experience Platform.

aepWebsiteInteractionsDatasetId désigne l'ID de jeu de données du système de démonstration de jeu de données - Jeu de données de Événement pour le site Web (Global v1.1), ​aepRecommendationsInputDatasetIdfait référence à l'ID de jeu de données du système de démonstration de jeu de données - Jeu de données de Événement pour l'entrée de modèle Recommendations (Global v1.1.)1.1.1.1.1.1.1.1.1.1.1.1 . Remplacez les variables d'environnement par les identifiants des jeux de données lorsque vous collez le code dans la première cellule de votre bloc-notes.

Vous aurez ensuite ceci dans la cellule 1 :

DSW

Cliquez sur le bouton de lecture pour exécuter cette cellule.

DSW

L'exécution de cette cellule peut prendre de quelques secondes à quelques minutes. Attendez et ne faites rien d'autre dans ce bloc-notes jusqu'à ce que vous obteniez le résultat ci-dessous.

Chaque fois que vous appuyez sur le bouton de lecture pour exécuter une cellule, un indicateur s’affiche vous indiquant si votre action est toujours en cours.

Il s’agit de l’indicateur lorsque vous appuyez sur le bouton de lecture pour exécuter une cellule :

DSW

Il s’agit de l’indicateur lorsque la cellule a été exécutée et que l’action est terminée :

DSW

Ne continuez pas les exercices tant que l'indicateur ne montre pas que l'exécution est terminée. Si vous n'attendez pas la fin de votre exécution, vous serez bloqué et recevrez de nombreuses erreurs dans les étapes suivantes. Ceci s'applique à l'exécution de toutes les cellules de n'importe quel ordinateur portable Jupyter : toujours attendre que l’exécution soit terminée et que l’indicateur change et ressemble à ceci :

DSW

Il n'y a aucun résultat visuel après l'exécution de la cellule 1. Après avoir cliqué sur le bouton de lecture, passez à l’étape suivante.

Lecture à partir de la plate-forme : Chargez le jeu de données d’entrée et affichez un aperçu des données.

Cliquez dans la cellule vide suivante du bloc-notes.

DSW

Copiez le code ci-dessous et collez-le dans la cellule vide suivante de votre bloc-notes.

from platform_sdk.dataset_reader import DatasetReader

dataset_reader = DatasetReader(client_context, inputDataset)
df = dataset_reader.limit(1000).read()
df.head()

Vous aurez ensuite ceci dans cette cellule :

DSW

Cliquez sur le bouton de lecture pour exécuter cette cellule.

L'exécution de cette cellule peut prendre entre 1 et 2 minutes. Attendez et ne faites rien d'autre dans ce bloc-notes jusqu'à ce que vous obteniez le résultat ci-dessous.

DSW

Attendez que l’indicateur se présente comme suit avant de continuer :

DSW

Le résultat ressemblera à ceci (mais ne sera pas identique - vous disposez peut-être de plus ou moins de données dans votre instance Adobe Experience Platform) :

DSW

Filtrage des valeurs vides et sélection des données pour la marque Luma

Cliquez dans la cellule vide suivante du bloc-notes.

DSW

Copiez le code ci-dessous et collez-le dans la cellule vide suivante de votre bloc-notes.

# 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"])]

Vous aurez ensuite ceci dans cette cellule :

DSW

Cliquez sur le bouton de lecture pour exécuter cette cellule.

DSW

Attendez que l’indicateur se présente comme suit avant de continuer :

DSW

Il n’y a aucun résultat visuel après cette exécution. Après avoir cliqué sur le bouton de lecture, passez à l’étape suivante.

Fractionner les éléments en enregistrements individuels

Cliquez dans la cellule vide suivante du bloc-notes.

DSW

Copiez le code ci-dessous et collez-le dans la cellule vide suivante de votre bloc-notes.

# 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, "\|\|")

Vous aurez ensuite ceci dans cette cellule :

DSW

Cliquez sur le bouton de lecture pour exécuter cette cellule.

DSW

L'exécution de cette cellule peut prendre entre 1 et 2 minutes. Attendez et ne faites rien d'autre dans ce bloc-notes jusqu'à ce que vous obteniez le résultat ci-dessous.

Attendez que l’indicateur se présente comme suit avant de continuer :

DSW

Il n’y a aucun résultat visuel après cette exécution. Après avoir cliqué sur le bouton de lecture, passez à l’étape suivante.

Préparer les données avant de les enregistrer à nouveau dans Adobe Experience Platform

Cliquez dans la cellule vide suivante du bloc-notes.

DSW

Copiez le code ci-dessous et collez-le dans la cellule vide suivante de votre bloc-notes.

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)

Vous aurez ensuite ceci dans cette cellule :

DSW

Cliquez sur le bouton de lecture pour exécuter cette cellule.

DSW

L'exécution de cette cellule peut prendre entre 1 et 2 minutes. Attendez et ne faites rien d'autre dans ce bloc-notes jusqu'à ce que vous obteniez le résultat ci-dessous.

Attendez que l’indicateur se présente comme suit avant de continuer :

DSW

Il n’y a aucun résultat visuel après cette exécution. Après avoir cliqué sur le bouton de lecture, passez à l’étape suivante.

Écrire sur la plate-forme : Extraire cette trame de données dans un jeu de données à Adobe Experience Platform

Cliquez dans la cellule vide suivante du bloc-notes.

DSW

Copiez le code ci-dessous et collez-le dans la cellule vide suivante de votre bloc-notes.

df2.head()

Vous aurez ensuite ceci dans cette cellule :

DSW

Cliquez sur le bouton de lecture pour exécuter cette cellule.

DSW

Attendez que l’indicateur se présente comme suit avant de continuer :

DSW

Le résultat ressemble à ceci :

DSW

Cliquez dans la cellule vide suivante du bloc-notes.

DSW

Copiez le code ci-dessous et collez-le dans la cellule vide suivante de votre bloc-notes.

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')

Vous aurez ensuite ceci dans cette cellule :

DSW

Cliquez sur le bouton de lecture pour exécuter cette cellule.

DSW

Attendez que l’indicateur se présente comme suit avant de continuer :

DSW

Le résultat ressemble à ceci :

DSW

Le résultat dans Adobe Experience Platform est qu'un nouveau lot de données a été créé sur le système de démonstration - jeu de données de Événement pour l'entrée de modèle Recommendations (Global v1.1) que vous pouvez vérifier en allant dans
ici.

DSW

DSW

Étape suivante : 8.2 - Création et mise en oeuvre de modèles

Revenir au module 8

Revenir à tous les modules

Sur cette page