Creación de recomendadores (SDK)AWS - Amazon Personalize

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de recomendadores (SDK)AWS

Después de crear un grupo de conjuntos de datos de dominio e importar los datos, puede crear generadores de recomendaciones para sus casos de uso de dominio. Un generador de recomendaciones es un recurso de grupo de conjuntos de datos de dominio que genera recomendaciones.

Para todos los casos de uso, puede configurar las columnas que se utilizan durante el entrenamiento. Para obtener más información, consulte Configuración de las columnas que se utilizan en el entrenamiento. Para los casos de uso Top picks for your o Recommended for you, Amazon Personalize utiliza la exploración al recomendar elementos. Para obtener más información, consulte Configuración de la exploración.

Creación de un generador de recomendaciones

Cree un generador de recomendaciones para un caso de uso de dominio con el siguiente código: Asigne un nombre al generador de recomendaciones y proporcione el nombre de recurso de Amazon (ARN) de su grupo de conjuntos de datos de dominio. Para recipeArn, proporcione el ARN para su caso de uso. Ejecute este código para cada uno de sus casos de uso de dominio. Los casos de uso disponibles dependen de su dominio. Para obtener una lista de los casos de uso, sus ARN y sus requisitos, consulte Elección de un caso de uso.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') create_recommender_response = personalize.create_recommender( name = 'recommender name', recipeArn = 'recipe ARN', datasetGroupArn = 'dataset group ARN' ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn)
SDK for Java 2.x
public static String createRecommender(PersonalizeClient personalizeClient, String name, String datasetGroupArn, String recipeArn) { long maxTime = 0; long waitInMilliseconds = 30 * 1000; // 30 seconds String recommenderStatus = ""; try { CreateRecommenderRequest createRecommenderRequest = CreateRecommenderRequest.builder() .datasetGroupArn(datasetGroupArn) .name(name) .recipeArn(recipeArn) .build(); CreateRecommenderResponse recommenderResponse = personalizeClient .createRecommender(createRecommenderRequest); String recommenderArn = recommenderResponse.recommenderArn(); System.out.println("The recommender ARN is " + recommenderArn); DescribeRecommenderRequest describeRecommenderRequest = DescribeRecommenderRequest.builder() .recommenderArn(recommenderArn) .build(); maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; while (Instant.now().getEpochSecond() < maxTime) { recommenderStatus = personalizeClient.describeRecommender(describeRecommenderRequest).recommender() .status(); System.out.println("Recommender status: " + recommenderStatus); if (recommenderStatus.equals("ACTIVE") || recommenderStatus.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return recommenderArn; } 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 { CreateRecommenderCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION" }); // set the recommender's parameters export const createRecommenderParam = { name: "RECOMMENDER_NAME", /* required */ recipeArn: "RECIPE_ARN", /* required */ datasetGroupArn: "DATASET_GROUP_ARN" /* required */ } export const run = async () => { try { const response = await personalizeClient.send(new CreateRecommenderCommand(createRecommenderParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Configuración de la exploración

Para los casos de uso Top picks for your o Recommended for you, Amazon Personalize utiliza la exploración al recomendar elementos. La exploración implica probar diferentes recomendaciones de elementos para saber cómo responden los usuarios a elementos con muy pocos datos de interacción. Puede configurar la exploración con lo siguiente:

  • Énfasis en la exploración de los elementos menos relevantes (ponderación de la exploración): configure cuánto explorar. Especifique un valor decimal entre 0 y 1. El valor predeterminado es 0,3. Cuanto más se acerque el valor a 1, mayor será la exploración. Con una mayor exploración, las recomendaciones incluyen más elementos con menos datos de interacciones de elementos o relevancia en función del comportamiento anterior. En cero, no se realiza ninguna exploración y las recomendaciones se basan en los datos actuales (relevancia).

  • Límite de antigüedad del elemento de exploración: especifique la antigüedad máxima del elemento en días desde la última interacción entre todos los elementos del conjunto de datos de interacciones de elementos. Esto define el alcance de la exploración del elemento en función de su antigüedad. Amazon Personalize determina la antigüedad del elemento en función de su marca de tiempo de creación o, si faltan los datos de esa marca, de los datos de interacciones de elementos. Para obtener más información sobre cómo Amazon Personalize determina la antigüedad del elemento, consulte Datos de marca temporal de creación.

    Para aumentar el número de elementos que Amazon Personalize considera durante la exploración, indique un valor superior. El mínimo es de 1 día y el valor predeterminado es de 30 días. Las recomendaciones pueden incluir elementos con una antigüedad superior al límite de antigüedad que especifique. Esto se debe a que estos elementos son relevantes para el usuario y la exploración no los identificó.

En el código siguiente se muestra cómo configurar la exploración al crear un generador de recomendación. El ejemplo utiliza los valores predeterminados.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') create_recommender_response = personalize.create_recommender( name = 'recommender name', recipeArn = 'arn:aws:personalize:::recipe/aws-vod-top-picks', datasetGroupArn = 'dataset group ARN', recommenderConfig = {"itemExplorationConfig": {"explorationWeight": "0.3", "explorationItemAgeCutOff": "30"}} ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn)
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateRecommenderCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION" }); // set the recommender's parameters export const createRecommenderParam = { name: "RECOMMENDER_NAME", /* required */ recipeArn: "RECIPE_ARN", /* required */ datasetGroupArn: "DATASET_GROUP_ARN", /* required */ recommenderConfig: { itemExplorationConfig: { explorationWeight: "0.3", explorationItemAgeCutOff: "30" } } }; export const run = async () => { try { const response = await personalizeClient.send(new CreateRecommenderCommand(createRecommenderParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Configuración de las columnas que se utilizan en el entrenamiento

Para excluir las columnas del entrenamiento, proporcione el objeto excludedDatasetColumns en la trainingDataConfig como parte de la configuración del generador de recomendaciones. Para cada clave, proporciona el tipo de conjunto de datos. Para cada valor, proporcione la lista de columnas que se excluirán. En el código siguiente se muestra cómo excluir columnas de la formación al crear un programa de recomendaciones. Para obtener más información, consulte Configuración de las columnas que se utilizan en el entrenamiento.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') create_recommender_response = personalize.create_recommender( name = 'recommender name', recipeArn = 'recipe name', datasetGroupArn = 'dataset group ARN', recommenderConfig = { "trainingDataConfig": { "excludedDatasetColumns": { "datasetType": ["COLUMN_A", "COLUMN_B"] } } } ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn)
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateRecommenderCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION" }); // set the recommender's parameters export const createRecommenderParam = { name: "RECOMMENDER_NAME", /* required */ recipeArn: "RECIPE_ARN", /* required */ datasetGroupArn: "DATASET_GROUP_ARN", /* required */ recommenderConfig: { trainingDataConfig: { excludedDatasetColumns: { "DATASET_TYPE": ["COLUMN_A", "COLUMN_B"] } } } }; export const run = async () => { try { const response = await personalizeClient.send(new CreateRecommenderCommand(createRecommenderParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Habilitación de metadatos

Si tiene un conjunto de datos de elementos y quiere tener la opción de incluir metadatos al recibir recomendaciones, establezca enableMetadataWithRecommendations en true en recommender-config.

import boto3 personalize = boto3.client('personalize') create_recommender_response = personalize.create_recommender( name = 'recommender name', recipeArn = 'recipe name', datasetGroupArn = 'dataset group ARN', recommenderConfig = {"enableMetadataWithRecommendations": True} ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn)