8.1 Esplorazione e trasformazione dei dati

Per creare un modello di machine learning che consiglierà agli utenti i prodotti che potrebbero interessarsi quando stanno guardando un particolare prodotto, è necessario analizzare gli acquisti precedenti effettuati dagli utenti sul sito Web. In questa lezione, esplorerete il flusso di dati di acquisto tramite Adobe Analytics a Platform e trasformerete tali dati in un set di dati della funzionalità che può aiutare a formare il modello di apprendimento automatico.

L'URL per accedere ad Adobe Experience Platform è: https://experience.adobe.com/platform

8.1.1 Esplorare i set di dati e gli schemi XDM

I modelli XDM (Experience Data Models) su Adobe Experience Platform consentono di standardizzare i dati in modo che possano essere utilizzati in modo efficiente in tutta l'azienda.

Accedete a Adobe Experience Platform.

Dopo aver effettuato l'accesso, si arriva sulla homepage di Adobe Experience Platform.

Acquisizione dei dati

Prima di continuare, è necessario selezionare una sandbox. La sandbox da selezionare è denominata --aepSandboxId--. A tale scopo, fare clic sul testo Produzione Prod nella linea blu sopra lo schermo.

Acquisizione dei dati

Dopo aver selezionato la sandbox appropriata, verrà visualizzato il cambio dello schermo e ora siete nella sandbox dedicata.

Acquisizione dei dati

Dal menu a sinistra, fare clic su Set di dati.

DSW

Per sviluppare un modello di machine learning per le raccomandazioni sui prodotti, siamo interessati ai prodotti che gli utenti hanno acquistato in precedenza con Luma. Per semplificare i dati necessari per formare il nostro modello di apprendimento automatico, abbiamo creato uno schema semplice denominato Recommendations Input Schema come descritto nella tabella seguente (campi chiave: userid - l'utente che ha interagito con il sito Web Luma, marca temporale - ora dell'interazione, tipo di interazione - Acquisto, elemento - prodotto con cui l'utente ha interagito).

In questa esercitazione verranno utilizzati tre set di dati:

Nome set di dati Dataset Schema (Schema del set di dati) Descrizione
Demo System - Set di dati evento per il sito Web (Global v1.1) Demo System - Set di dati evento per lo schema del sito Web (Global v1.1) Dati clickstream dal sito Web
Demo System - Set di dati evento per l'input di modelli Recommendations (Global v1.1) Demo System - Schema evento per Recommendations Model Input (Global v1.1) I dati clickstream saranno convertiti in un set di dati per funzionalità/formazione utilizzando una pipeline delle funzioni. Questi dati vengono utilizzati per formare il modello di apprendimento automatico Recommendations prodotto. itemid e userid corrispondono a un prodotto acquistato da tale utente alla marca temporale
Sistema dimostrativo - Set di dati di profilo per le previsioni ML (Global v1.1) Demo System - Schema di profilo per le previsioni ML (Global v1.1) Schema È il set di dati che si ottiene dopo il punteggio. Contiene l'elenco dei prodotti consigliati per ogni utente

Vediamo il set di dati Demo System - Event Dataset for Website (Global v1.1).

Nella pagina Set di dati -, immettere Demo System - Event Dataset for Website nella casella di ricerca.

DSW

Aprite il set di dati Demo System - Event Dataset for Website (Global v1.1).

DSW

Facendo clic sul pulsante Anteprima DataSet, è possibile vedere quali dati vengono inviati in tale dataset e come si presenterà il modello dati. FYI - i dati inseriti nel set di dati possono essere diversi. È normale e previsto.

DSW

DSW

Chiude la finestra di anteprima del set di dati.

Vediamo lo schema definito per questo set di dati.

Dal menu a sinistra, selezionare Schemi.

DSW

Nella panoramica Schemi, cercate i 3 schemi che utilizzerete in questo laboratorio.

Nome schema
Demo System - Schema evento per Recommendations Model Input (Global v1.1)
Demo System - Schema di profilo per le previsioni ML (Global v1.1)
Demo System - Schema evento per il sito Web (Global v1.1)

Fare clic per aprire lo schema denominato Demo System - Event Schema for Website (Global v1.1).

DSW

8.1.2 Open Jupyter Notebooks

Mettiamo le mani sporche adesso, andando a Jupyter Notebooks.

Nel menu a sinistra, fare clic su Blocco note.

DSW

Fare clic su JupyterLab. Ora vedrai il caricamento di JupyterLab. L'operazione potrebbe richiedere 1-2 minuti.

DSW

Una volta che Jupyter Notebooks è in esecuzione, potete continuare con il passaggio successivo.

DSW

8.1.3 Trasformare i dati Clickstream

Jupyter Notebooks è in esecuzione per consentire di avviare il processo di creazione del blocco appunti e di aggiungere il codice necessario per trasformare i dati clickstream in un set di dati utilizzabile pronto per la formazione.

DSW

In Jupyter Notebooks, aprire un blocco appunti Python 3 vuoto facendo clic sul pulsante Blank (Vuoto) sul Launcher.

DSW

A questo punto avrete un nuovo notebook Python 3 vuoto e vuoto. Prima di continuare, assegnare al blocco appunti un nome descrittivo. Fare clic con il pulsante destro del mouse sul file Untitled.ipynb e scegliere Rinomina.

DSW

Immettere luma-recommendations-feature-transformation.ipynb come nome del blocco appunti e premere Invio. Avrete quindi questo:

DSW

Ulteriori operazioni:

  • Definire i set di dati di input e output per il blocco appunti
  • Piattaforma per moduli di lettura: Caricate il set di dati di input e descrivetelo
  • Escludere valori vuoti
  • Dividere l'elemento_id in singoli record
  • Crea un nuovo data-frame che contenga i dati necessari per il nostro modello
  • Scrivi sulla piattaforma: Trasmettere la cornice dati in un dataset in Adobe Experience Platform

Definire i set di dati di input e output per il blocco appunti

Fare clic sulla prima cella del blocco appunti.

DSW

Copiare il codice riportato di seguito e incollarlo nella prima cella del blocco appunti.

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
IMPORTANTE

Le variabili di ambiente aepWebsiteInteractionsDatasetId e aepRecommendationsInputDatasetId fanno riferimento agli ID di set di dati creati nell'istanza di Adobe Experience Platform.

aepWebsiteInteractionsDatasetId fa riferimento all'ID del set di dati Demo System - Event Dataset for Website (Global v1.1), ​aepRecommendationsInputDatasetIdentità fa riferimento all'ID del dataset del dataset Demo System - Event Dataset for Recommendations Model Input (Global v1.1). Sostituire le variabili di ambiente con gli ID del set di dati quando si incolla il codice nella prima cella del blocco appunti.

Avrete questo nella cella 1:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

L'esecuzione di questa cella potrebbe durare un paio di secondi a minuti. Aspetta e non fare nient'altro in questo notebook fino a quando non avrai il seguente risultato.

Ogni volta che premi il pulsante di riproduzione per eseguire una cella, viene visualizzato un indicatore che indica se l’azione è ancora in corso o meno.

Questo è l'indicatore quando si preme il pulsante di riproduzione per eseguire una cella:

DSW

Questo è l’indicatore quando la cella è stata eseguita e l’azione è terminata:

DSW

Non continuare gli esercizi finché l'indicatore non mostra che l'esecuzione è finita. Se non si attende il completamento dell'esecuzione, si resterà bloccati e si riceveranno molti errori nei passaggi successivi. Questo è applicabile all'esecuzione di tutte le celle in qualsiasi blocco appunti Jupyter: attendete sempre che l'esecuzione sia completata e l'indicatore cambia e si presenta così:

DSW

Non esiste alcun risultato visivo dopo l'esecuzione della cella 1. Dopo aver fatto clic sul pulsante di riproduzione, continuate con il passaggio successivo.

Leggi dalla piattaforma: Caricate il set di dati di input e visualizzate una panoramica dei dati

Fare clic sulla cella vuota successiva del blocco appunti.

DSW

Copiare il codice riportato di seguito e incollarlo nella cella vuota successiva del blocco appunti.

from platform_sdk.dataset_reader import DatasetReader

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

Avrete questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

L'esecuzione di questa cella potrebbe richiedere 1-2 minuti. Aspetta e non fare nient'altro in questo notebook fino a quando non avrai il seguente risultato.

DSW

Attendete che l’indicatore sia simile a questo prima di continuare:

DSW

Il risultato sarà simile al seguente (ma non sarà identico - è possibile che nell’istanza di Adobe Experience Platform siano disponibili più o meno dati):

DSW

Escludere valori vuoti e selezionare i dati per il marchio Luma

Fare clic sulla cella vuota successiva del blocco appunti.

DSW

Copiare il codice riportato di seguito e incollarlo nella cella vuota successiva del blocco appunti.

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

Avrete questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

Attendete che l’indicatore sia simile a questo prima di continuare:

DSW

Dopo l'esecuzione non è disponibile alcun risultato visivo. Dopo aver fatto clic sul pulsante di riproduzione, continuate con il passaggio successivo.

Dividere gli elementi in singoli record

Fare clic sulla cella vuota successiva del blocco appunti.

DSW

Copiare il codice riportato di seguito e incollarlo nella cella vuota successiva del blocco appunti.

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

Avrete questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

L'esecuzione di questa cella potrebbe richiedere 1-2 minuti. Aspetta e non fare nient'altro in questo notebook fino a quando non avrai il seguente risultato.

Attendete che l’indicatore sia simile a questo prima di continuare:

DSW

Dopo l'esecuzione non è disponibile alcun risultato visivo. Dopo aver fatto clic sul pulsante di riproduzione, continuate con il passaggio successivo.

Preparare i dati prima di salvarli nuovamente in Adobe Experience Platform

Fare clic sulla cella vuota successiva del blocco appunti.

DSW

Copiare il codice riportato di seguito e incollarlo nella cella vuota successiva del blocco appunti.

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)

Avrete questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

L'esecuzione di questa cella potrebbe richiedere 1-2 minuti. Aspetta e non fare nient'altro in questo notebook fino a quando non avrai il seguente risultato.

Attendete che l’indicatore sia simile a questo prima di continuare:

DSW

Dopo l'esecuzione non è disponibile alcun risultato visivo. Dopo aver fatto clic sul pulsante di riproduzione, continuate con il passaggio successivo.

Scrivi sulla piattaforma: Trasmettere la cornice dati in un dataset in Adobe Experience Platform

Fare clic sulla cella vuota successiva del blocco appunti.

DSW

Copiare il codice riportato di seguito e incollarlo nella cella vuota successiva del blocco appunti.

df2.head()

Avrete questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

Attendete che l’indicatore sia simile a questo prima di continuare:

DSW

Il risultato sarà simile al seguente:

DSW

Fare clic sulla cella vuota successiva del blocco appunti.

DSW

Copiare il codice riportato di seguito e incollarlo nella cella vuota successiva del blocco appunti.

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

Avrete questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

Attendete che l’indicatore sia simile a questo prima di continuare:

DSW

Il risultato sarà simile al seguente:

DSW

Il risultato in Adobe Experience Platform è che è stato creato un nuovo batch di dati sul Demo System - Event Dataset for Recommendations Model Input (Global v1.1) che è possibile verificare andando
qui.

DSW

DSW

Passaggio successivo: 8.2 - Authoring e operazionalizzazione dei modelli

Torna al modulo 8

Torna a tutti i moduli

In questa pagina