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
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.
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.
Dopo aver selezionato la sandbox appropriata, visualizzerai la modifica dello schermo e ora ti trovi nella sandbox dedicata.
Dal menu a sinistra, fai clic su Set di dati.
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.
Apri il set di dati Sistema di demo - Set di dati evento per il sito web (Global v1.1).
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.
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.
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).
Mettiamoci le mani sporche adesso, andando a Jupyter Notebooks.
Nel menu a sinistra, fai clic su Notebook.
Fai clic su JupyterLab. Ora vedrai il caricamento di JupyterLab. L'operazione potrebbe richiedere 1-2 minuti.
Quando Jupyter Notebooks è in esecuzione, puoi continuare con il passaggio successivo.
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.
In Jupyter Notebooks, apri una vuota Pitone 3 blocco note facendo clic sul pulsante Vuoto nel modulo di avvio.
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.
Invio luma-recommendations-feature-conversion.ipynb come nome del blocco appunti e premi Invio. A quel punto avrai questo:
Operazioni successive:
Fare clic sulla prima cella del blocco appunti.
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
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:
Fare clic sul pulsante di riproduzione per eseguire la cella.
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:
Questo è l’indicatore quando la cella è stata eseguita e l’azione è stata completata:
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ì:
Non esiste alcun risultato visivo dopo l’esecuzione della cella 1. Dopo aver fatto clic sul pulsante di riproduzione, continua con il passaggio successivo.
Fare clic nella cella vuota successiva del blocco appunti.
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:
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.
Attendere che l'indicatore si presenti come segue prima di continuare:
Il risultato sarà simile a questo (ma non sarà identico - potresti avere più o meno dati disponibili nella tua istanza Adobe Experience Platform):
Fare clic nella cella vuota successiva del blocco appunti.
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:
Fare clic sul pulsante di riproduzione per eseguire la cella.
Attendere che l'indicatore si presenti come segue prima di continuare:
Non esiste un risultato visivo dopo l'esecuzione. Dopo aver fatto clic sul pulsante di riproduzione, continua con il passaggio successivo.
Fare clic nella cella vuota successiva del blocco appunti.
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:
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.
Attendere che l'indicatore si presenti come segue prima di continuare:
Non esiste un risultato visivo dopo l'esecuzione. Dopo aver fatto clic sul pulsante di riproduzione, continua con il passaggio successivo.
Fare clic nella cella vuota successiva del blocco appunti.
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:
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.
Attendere che l'indicatore si presenti come segue prima di continuare:
Non esiste un risultato visivo dopo l'esecuzione. Dopo aver fatto clic sul pulsante di riproduzione, continua con il passaggio successivo.
Fare clic nella cella vuota successiva del blocco appunti.
Copia il codice seguente e incollalo nella cella vuota successiva del blocco appunti.
df2.head()
Poi ci sarà questo in quella cella:
Fare clic sul pulsante di riproduzione per eseguire la cella.
Attendere che l'indicatore si presenti come segue prima di continuare:
Il risultato si presenta così:
Fare clic nella cella vuota successiva del blocco appunti.
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:
Fare clic sul pulsante di riproduzione per eseguire la cella.
Attendere che l'indicatore si presenti come segue prima di continuare:
Il risultato si presenta così:
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.
Passaggio successivo: 8.2 - Authoring e operazionalizzazione dei modelli