Ottimizzazione di una soluzione per un obiettivo aggiuntivo - Amazon Personalize

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ottimizzazione di una soluzione per un obiettivo aggiuntivo

Importante

Per impostazione predefinita, tutte le nuove soluzioni utilizzano la formazione automatica. Con la formazione automatica, si sostengono costi di formazione mentre la soluzione è attiva. Per evitare costi inutili, al termine è possibile aggiornare la soluzione per disattivare la formazione automatica. Per informazioni sui costi di formazione, consulta i prezzi di Amazon Personalize.

Se utilizzi la ricetta User-Personalization o la ricetta Personalized-Ranking, puoi ottimizzare una soluzione Amazon Personalize per un obiettivo oltre alla massima pertinenza, come massimizzare le entrate.

Con le ricette di raccomandazione degli articoli, l'obiettivo principale di Amazon Personalize è prevedere gli articoli più pertinenti per i tuoi utenti sulla base di dati storici e sulle interazioni tra gli articoli in tempo reale. Questi sono gli elementi con cui i tuoi utenti interagiranno molto probabilmente (ad esempio, gli elementi su cui molto probabilmente faranno clic). Se hai un obiettivo aggiuntivo, come massimizzare i minuti di streaming o aumentare le entrate, puoi creare una soluzione che generi consigli basati sia sulla pertinenza che sull'obiettivo.

Per ottimizzare una soluzione per un obiettivo aggiuntivo, crea una nuova soluzione con la ricetta User-Personalization o Personalized-Ranking e scegli la colonna di metadati numerici nel set di dati Items correlata al tuo obiettivo. Quando genera consigli, Amazon Personalize dà maggiore importanza agli elementi con valori più alti per questa colonna di dati. Ad esempio, puoi scegliere una LENGTH colonna VIDEO _ per massimizzare i minuti di streaming o una PRICE colonna per massimizzare le entrate.

Puoi utilizzare la console Amazon Personalize, AWS Command Line Interface (AWS CLI), oppure AWS SDKs. Per informazioni sull'uso della console Amazon Personalize, consulta. Creazione di una soluzione (console)

Linee guida e requisiti

I requisiti oggettivi sono i seguenti:

  • Puoi scegliere solo una colonna per il tuo obiettivo.

  • La colonna deve avere un tipo numerico nello schema.

  • La colonna non può avere un null tipo nello schema.

Per ulteriori informazioni sugli schemi e sui tipi di dati, consultaCreazione di JSON file di schema per i tuoi dati.

Bilanciare l'enfasi e la pertinenza degli obiettivi

Quando si consigliano articoli in base più all'obiettivo che alla pertinenza, si può trovare un compromesso. Ad esempio, se desideri aumentare le entrate attraverso i consigli, i consigli relativi solo agli articoli costosi potrebbero rendere gli articoli meno pertinenti per gli utenti e ridurre il coinvolgimento e la conversione degli utenti.

Per configurare l'equilibrio tra pertinenza e obiettivo, scegli uno dei seguenti livelli di sensibilità oggettiva quando crei la soluzione:

  • Disattivato: Amazon Personalize utilizza principalmente i dati sulle interazioni tra gli articoli per prevedere gli articoli più rilevanti per il tuo utente.

  • Basso: Amazon Personalize pone meno enfasi sul tuo obiettivo. La pertinenza attraverso i dati sulle interazioni tra gli articoli è più importante.

  • Medio: Amazon Personalize attribuisce la stessa importanza al tuo obiettivo e alla tua pertinenza attraverso i dati sulle interazioni tra gli articoli.

  • Alto: Amazon Personalize pone maggiormente l'accento sul tuo obiettivo. La pertinenza attraverso i dati sulle interazioni tra gli articoli è meno importante.

Misurazione delle prestazioni di ottimizzazione

Quando crei una versione della soluzione (addestra un modello) per una soluzione con un obiettivo di ottimizzazione, Amazon Personalize genera una average_rewards_at_k metrica. Il punteggio di average_rewards_at_k indica le prestazioni della versione della soluzione nel raggiungimento del tuo obiettivo. Per calcolare questa metrica, Amazon Personalize calcola i premi per ogni utente nel modo seguente:

rewards_per_user = total rewards from the user's interactions with their top 25 reward generating recommendations / total rewards from the user's interactions with recommendations

Il risultato finale average_rewards_at_k è la media di tutti i valori rewards_per_user normalizzati per essere un valore decimale inferiore o uguale a 1 e maggiore di 0. Più il valore si avvicina a 1, maggiori sono i guadagni in media per utente che puoi aspettarti dai consigli.

Ad esempio, se il tuo obiettivo è massimizzare le entrate derivanti dai clic, Amazon Personalize calcola il punteggio di ogni utente dividendo le entrate totali generate dagli articoli su cui l'utente ha fatto clic tra i 25 consigli più costosi per le entrate derivanti da tutti gli articoli consigliati su cui l'utente ha fatto clic. Amazon Personalize restituisce quindi una media normalizzata di tutti i punteggi degli utenti. Più average_rewards_at_k si avvicina a 1, maggiori sono le entrate medie che puoi aspettarti di ottenere per utente grazie ai consigli.

Per ulteriori informazioni sulla generazione di metriche, consultaValutazione di una versione della soluzione Amazon Personalize con parametri.

Ottimizzazione di una soluzione (AWS CLI)

Puoi ottimizzare per un obiettivo solo con la ricetta User-Personalization o Personalized-Ranking. Per ottimizzare una soluzione per un obiettivo aggiuntivo utilizzando il AWS CLI, crea una nuova soluzione e specifica i dettagli dell'obiettivo utilizzando la optimizationObjective chiave nell'solutionConfigoggetto. optimizationObjectiveHa i seguenti campi:

  • itemAttribute: Specificate il nome della colonna di metadati numerici del set di dati Items relativa al vostro obiettivo.

  • objectiveSensitivity: Specificate il livello di enfasi che la soluzione attribuisce al vostro obiettivo durante la generazione dei consigli. Il livello di sensibilità oggettiva configura il modo in cui Amazon Personalize bilancia gli articoli consigliati in base all'obiettivo e alla pertinenza attraverso i dati di interazione degli articoli. Possono essere, o. objectiveSensitivity OFF LOW MEDIUM HIGH Per ulteriori informazioni, consulta Bilanciare l'enfasi e la pertinenza degli obiettivi.

Di seguito è riportato un esempio di create-solution AWS CLI comando. Sostituisci i recipe arn valori solution namedataset group arn, e con i tuoi.

PeroptimizationObjective, COLUMN_NAME sostituiscilo con il nome numerico della colonna di metadati del set di dati Items correlato al tuo obiettivo. PerobjectiveSensitivity, specifica, OFFLOW, MEDIUM o. HIGH

aws personalize create-solution \ --name solution name \ --dataset-group-arn dataset group arn \ --recipe-arn recipe arn \ --solution-config "{\"optimizationObjective\":{\"itemAttribute\":\"COLUMN_NAME\",\"objectiveSensitivity\":\"MEDIUM\"}}"

Quando la soluzione è pronta, crea una nuova versione della soluzione (per un esempio, comando vediCreazione di una soluzione (AWS CLI)). Dopo aver creato una versione della soluzione, puoi visualizzare le prestazioni di ottimizzazione con le metriche della versione della soluzione. Per informazioni, consulta Misurazione delle prestazioni di ottimizzazione.

Ottimizzazione di una soluzione (AWS SDKs)

Puoi ottimizzare per un obiettivo solo con la ricetta User-Personalization o Personalized-Ranking.

Per ottimizzare una soluzione per un obiettivo aggiuntivo utilizzando il AWS SDKs, crea una nuova soluzione e specifica i dettagli oggettivi utilizzando la optimizationObjective chiave nell'solutionConfigoggetto della soluzione. optimizationObjectiveHa i seguenti campi:

  • itemAttribute: Specificate il nome della colonna di metadati numerici dal set di dati Items del gruppo di dati che si riferisce al vostro obiettivo.

  • objectiveSensitivity: Specificate il livello di enfasi che la soluzione attribuisce al vostro obiettivo durante la generazione dei consigli. Il livello di sensibilità oggettiva configura il modo in cui Amazon Personalize bilancia gli articoli consigliati in base all'obiettivo e alla pertinenza attraverso i dati di interazione degli articoli. Possono essere, o. objectiveSensitivity OFF LOW MEDIUM HIGH Per ulteriori informazioni, consulta Bilanciare l'enfasi e la pertinenza degli obiettivi.

Utilizzate il codice seguente per creare una soluzione con un obiettivo aggiuntivo con AWS SDK for Python (Boto3) o il AWS SDK for Java 2.x.

Quando la soluzione è pronta, crea una nuova versione della soluzione (ad esempio codice vediCreazione di una versione della soluzione (AWS SDKs)). Dopo aver creato una versione della soluzione, puoi visualizzare le prestazioni di ottimizzazione con le metriche della versione della soluzione. Per informazioni, consulta Misurazione delle prestazioni di ottimizzazione.

SDK for Python (Boto3)

Per creare una soluzione ottimizzata per un obiettivo aggiuntivo, utilizzate il create_solution metodo seguente. Sostituisci i recipe arn valori solution namedataset group arn, e con i tuoi.

PeroptimizationObjective, COLUMN_NAME sostituiscilo con il nome numerico della colonna di metadati del set di dati Items correlato al tuo obiettivo. PerobjectiveSensitivity, specifica, OFFLOW, MEDIUM o. HIGH

import boto3 personalize = boto3.client('personalize') create_solution_response = personalize.create_solution( name= 'solution name', recipeArn = 'recipe arn', datasetGroupArn = 'dataset group arn', solutionConfig = { "optimizationObjective": { "itemAttribute": "COLUMN_NAME", "objectiveSensitivity": "MEDIUM" } } ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)
SDK for Java 2.x

Per creare una soluzione ottimizzata per un obiettivo aggiuntivo, utilizza il seguente createPersonalizeSolution metodo e passa i seguenti parametri come parametri: un client del servizio Amazon Personalize, Amazon Resource Name (ARN) del gruppo di set di dati, il nome di una soluzione, la ricettaARN, l'attributo item e il livello di sensibilità dell'obiettivo.

public static String createPersonalizeSolution(PersonalizeClient personalizeClient, String datasetGroupArn, String solutionName, String recipeArn, String itemAttribute, String objectiveSensitivity) { try { OptimizationObjective optimizationObjective = OptimizationObjective.builder() .itemAttribute(itemAttribute) .objectiveSensitivity(objectiveSensitivity) .build(); SolutionConfig solutionConfig = SolutionConfig.builder() .optimizationObjective(optimizationObjective) .build(); CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder() .name(solutionName) .datasetGroupArn(datasetGroupArn) .recipeArn(recipeArn) .solutionConfig(solutionConfig) .build(); CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest); return solutionResponse.solutionArn(); } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return "";
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateSolutionCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create the personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION"}); // set the solution parameters. export const createSolutionParam = { datasetGroupArn: 'DATASET_GROUP_ARN', /* required */ recipeArn: 'RECIPE_ARN', /* required */ name: 'NAME', /* required */ solutionConfig: { optimizationObjective: { itemAttribute: "COLUMN_NAME", /* specify the numerical column from the Items dataset related to your objective */ objectiveSensitivity: "MEDIUM" /* specify OFF, LOW, MEDIUM, or HIGH */ } } }; export const run = async () => { try { const response = await personalizeClient.send(new CreateSolutionCommand(createSolutionParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Notebook Jupyter di esempio

Per un esempio di notebook Jupyter che mostra come creare una soluzione ottimizzata per metadati di elementi aggiuntivi basati su obiettivi, consulta la cartella objective_optimization dell'archivio di esempi di Amazon Personalize. GitHub