8.1 Esplorazione e trasformazione dei dati

Per creare un modello di apprendimento automatico che consigli i prodotti che potrebbero piacere agli utenti quando guardano un particolare prodotto, è necessario analizzare gli acquisti precedenti effettuati dagli utenti sul sito web. In questa lezione, esplorerai il flusso di dati di acquisto tramite Adobe Analytics su Platform e trasformerai tali dati in un set di dati di funzionalità che può aiutare a addestrare il modello di apprendimento automatico.

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

8.1.1 Esplorare i set di dati e gli schemi XDM

Experience Data Models (XDM) su Adobe Experience Platform consente di standardizzare i dati in modo che possano essere utilizzati in modo efficiente in tutta l’organizzazione.

Accedi a Adobe Experience Platform.

Dopo aver effettuato l'accesso, si aprirà la homepage di Adobe Experience Platform.

Acquisizione dei dati

Prima di continuare, devi selezionare un sandbox. La sandbox da selezionare è denominata --aepSandboxId--. Per eseguire questa operazione, fai clic sul testo Produzione Prod nella linea blu sopra lo schermo.

Acquisizione dei dati

Dopo aver selezionato la sandbox appropriata, visualizzerai la modifica dello schermo e ora ti trovi nella sandbox dedicata.

Acquisizione dei dati

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

DSW

Per sviluppare un modello di apprendimento automatico per i consigli sui prodotti, siamo interessati ai prodotti che gli utenti hanno precedentemente acquistato con Luma. Per semplificare i dati necessari alla formazione del nostro modello di apprendimento automatico, abbiamo creato uno schema semplice denominato Schema di input Recommendations come descritto nella tabella seguente (campi chiave: userid - l’utente che ha interagito con il sito web Luma, timestamp - ora dell’interazione, interactiontype - Purchase, itemid - product 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
Sistema di demo - Set di dati evento per il sito web (Global v1.1) Sistema di demo - Set di dati evento per lo schema del sito web (Global v1.1) Dati di click-stream dal sito web
Sistema demo - Set di dati evento per l’input del modello Recommendations (Global v1.1) Sistema demo - Schema eventi per l’input del modello Recommendations (Global v1.1) I dati di click-stream verranno convertiti in un set di dati di funzionalità/formazione utilizzando una pipeline di funzioni. Questi dati vengono utilizzati per addestrare il modello di apprendimento automatico del prodotto Recommendations. itemid e userid corrispondono a un prodotto acquistato da quell’utente al timestamp dell’ora
Sistema di demo - Set di dati del profilo per le previsioni ML (Global v1.1) Sistema di demo - Schema del profilo per le previsioni ML (Global v1.1) Schema Questo è il set di dati che si ottiene dopo il punteggio. Contiene l’elenco dei prodotti consigliati per ogni utente

Diamo un'occhiata al Sistema di demo - Set di dati evento per il sito web (Global v1.1) set di dati.

Nella pagina Set di dati, immetti Sistema demo - Set di dati evento per il sito web nella casella di ricerca.

DSW

Apri il set di dati Sistema di demo - Set di dati evento per il sito web (Global v1.1).

DSW

Facendo clic sul pulsante Anteprima set di dati puoi vedere quali dati vengono inviati in quel set di dati e come si presenta il modello dati. FYI: i dati nel set di dati possono avere un aspetto diverso. È normale e previsto.

DSW

DSW

Chiudi la finestra di anteprima del set di dati.

Diamo un'occhiata allo schema definito per questo set di dati.

Dal menu di sinistra, seleziona Schemi.

DSW

Nella panoramica Schemi, cerca i 3 schemi che userai in questo laboratorio.

Nome dello schema
Sistema demo - Schema eventi per l’input del modello Recommendations (Global v1.1)
Sistema di demo - Schema del profilo per le previsioni ML (Global v1.1)
Sistema demo - Schema evento per sito web (Global v1.1)

Fare clic per aprire lo schema denominato Sistema demo - Schema evento per sito web (Global v1.1).

DSW

8.1.2 Open Jupyter Notebooks

Mettiamoci le mani sporche adesso, andando a Jupyter Notebooks.

Nel menu a sinistra, fai clic su Notebook.

DSW

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

DSW

Quando Jupyter Notebooks è in esecuzione, puoi continuare con il passaggio successivo.

DSW

8.1.3 Trasforma i dati Clickstream

Jupyter Notebooks è in esecuzione per consentire di iniziare 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, apri una vuota Pitone 3 blocco note facendo clic sul pulsante Vuoto nel modulo di avvio.

DSW

Avrete quindi un nuovo notebook Python 3 vuoto e vuoto. Prima di continuare, assegnare un nome descrittivo al blocco appunti. Fai clic con il pulsante destro del mouse sul pulsante Senza titolo.ipynb e fai clic su Rinomina.

DSW

Invio luma-recommendations-feature-conversion.ipynb come nome del blocco appunti e premi Invio. A quel punto avrai questo:

DSW

Operazioni successive:

  • Definire i set di dati di input e output per il blocco appunti
  • Piattaforma di lettura: Carica il set di dati di input e descrivilo
  • Filtrare valori vuoti
  • Dividere l'elemento_id in singoli record
  • Crea un nuovo data-frame che contenga i dati necessari per il modello
  • Scrittura su piattaforma: Trasmettere tale data-frame in un set di dati 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 seguente 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

Variabili di ambiente aepWebsiteInteractionsDatasetId e aepRecommendationsInputDatasetId fai riferimento agli ID dei set di dati creati nella tua istanza Adobe Experience Platform.

aepWebsiteInteractionsDatasetId si riferisce all’ID del set di dati Sistema di demo - Set di dati evento per il sito web (Global v1.1), aepRecommendationsInputDatasetId si riferisce all’ID del set di dati Sistema demo - Set di dati evento per l’input del modello Recommendations (Global v1.1). Sostituisci le variabili di ambiente con gli ID del set di dati quando incolla il codice nella prima cella del blocco appunti.

Nella cella 1 si trova questo:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

L'esecuzione di questa cella potrebbe richiedere un paio di secondi a minuti. Attendere e non fare altro in questo blocco appunti fino a quando non si ottiene il risultato sottostante.

Ogni volta che premi il pulsante di riproduzione per eseguire una cella, visualizzerai 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 è stata completata:

DSW

Non continuare gli esercizi finché l'indicatore non mostra che l'esecuzione è terminata. Se non aspetti il completamento dell’esecuzione, rimani bloccato e ricevi molti errori nei passaggi successivi. Questo è applicabile all'esecuzione di tutte le celle in qualsiasi blocco appunti Jupyter: attendi sempre il completamento dell'esecuzione e vedi che 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, continua con il passaggio successivo.

Leggi da Platform: Carica il set di dati di input e mostra una panoramica dei dati

Fare clic nella cella vuota successiva del blocco appunti.

DSW

Copia il codice seguente e incollalo 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()

Poi ci sarà 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. Attendere e non fare altro in questo blocco appunti fino a quando non si ottiene il risultato sottostante.

DSW

Attendere che l'indicatore si presenti come segue prima di continuare:

DSW

Il risultato sarà simile a questo (ma non sarà identico - potresti avere più o meno dati disponibili nella tua istanza Adobe Experience Platform):

DSW

Filtrare i valori vuoti e selezionare i dati per il brand Luma

Fare clic nella cella vuota successiva del blocco appunti.

DSW

Copia il codice seguente e incollalo 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"])]

Poi ci sarà questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

Attendere che l'indicatore si presenti come segue prima di continuare:

DSW

Non esiste un risultato visivo dopo l'esecuzione. Dopo aver fatto clic sul pulsante di riproduzione, continua con il passaggio successivo.

Dividere gli elementi in singoli record

Fare clic nella cella vuota successiva del blocco appunti.

DSW

Copia il codice seguente e incollalo 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, "\|\|")

Poi ci sarà 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. Attendere e non fare altro in questo blocco appunti fino a quando non si ottiene il risultato sottostante.

Attendere che l'indicatore si presenti come segue prima di continuare:

DSW

Non esiste un risultato visivo dopo l'esecuzione. Dopo aver fatto clic sul pulsante di riproduzione, continua con il passaggio successivo.

Prepara i dati prima di salvarli nuovamente in Adobe Experience Platform

Fare clic nella cella vuota successiva del blocco appunti.

DSW

Copia il codice seguente e incollalo 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)

Poi ci sarà 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. Attendere e non fare altro in questo blocco appunti fino a quando non si ottiene il risultato sottostante.

Attendere che l'indicatore si presenti come segue prima di continuare:

DSW

Non esiste un risultato visivo dopo l'esecuzione. Dopo aver fatto clic sul pulsante di riproduzione, continua con il passaggio successivo.

Scrittura su piattaforma: Trasmettere tale data-frame in un set di dati in Adobe Experience Platform

Fare clic nella cella vuota successiva del blocco appunti.

DSW

Copia il codice seguente e incollalo nella cella vuota successiva del blocco appunti.

df2.head()

Poi ci sarà questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

Attendere che l'indicatore si presenti come segue prima di continuare:

DSW

Il risultato si presenta così:

DSW

Fare clic nella cella vuota successiva del blocco appunti.

DSW

Copia il codice seguente e incollalo 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')

Poi ci sarà questo in quella cella:

DSW

Fare clic sul pulsante di riproduzione per eseguire la cella.

DSW

Attendere che l'indicatore si presenti come segue prima di continuare:

DSW

Il risultato si presenta così:

DSW

Il risultato è che è stato creato un nuovo batch di dati sul Sistema demo - Set di dati evento per l’input del modello Recommendations (Global v1.1) che puoi 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