Optimización de una solución para un objetivo adicional - 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.

Optimización de una solución para un objetivo adicional

importante

Después de crear una solución, no puede cambiar su configuración. De forma predeterminada, todas las soluciones nuevas utilizan el entrenamiento automático. Con la formación automática, incurrirá en costes de formación mientras la solución esté activa. Para evitar costes innecesarios, asegúrese de eliminar la solución cuando haya terminado. Para obtener información sobre los costes de formación, consulta los precios de Amazon Personalize.

Si usa la receta User-Personalization o Personalized-Ranking, puede optimizar una solución de Amazon Personalize para lograr un objetivo determinado junto con la máxima relevancia (como maximizar los ingresos) antes del entrenamiento.

Con las recetas de recomendación de elementos, el objetivo principal de Amazon Personalize es predecir los elementos más relevantes para sus usuarios en función de los datos de interacciones de elementos históricos y en tiempo real. Estos son los elementos con los que es más probable que tus usuarios interactúen (por ejemplo, los artículos en los que probablemente hagan clic). Si tiene un objetivo adicional, como maximizar los minutos de streaming o aumentar los ingresos, puede crear una solución que genere recomendaciones basadas tanto en la relevancia como en su objetivo.

Para optimizar una solución para un objetivo adicional, cree una nueva solución con la receta User-Personalization o la receta Personalized-Ranking y elija la columna de metadatos numéricos del conjunto de datos de elementos que esté relacionada con su objetivo. Al generar recomendaciones, Amazon Personalize da más importancia a los elementos con valores más altos para esta columna de datos. Por ejemplo, puede elegir una columna VIDEO_LENGTH para maximizar los minutos de streaming o una columna PRICE para maximizar los ingresos.

Puedes usar la consola Amazon Personalize, AWS Command Line Interface (AWS CLI) o AWS los SDK. Para obtener información sobre el uso de la consola Amazon Personalize, consulteCreación de una solución (consola).

Directrices y requisitos

Los requisitos del objetivo son los siguientes:

  • Solo puede elegir una columna para su objetivo.

  • La columna debe tener un tipo numérico en el esquema.

  • La columna no puede tener ningún tipo null en su esquema.

Para obtener más información sobre esquemas y tipos de datos, consulte Schemas.

Equilibrio del énfasis y la relevancia del objetivo

Puede haber una compensación al recomendar elementos basándose más en su objetivo que en su relevancia. Por ejemplo, si quiere aumentar los ingresos mediante recomendaciones, las recomendaciones que solo incluyan elementos caros pueden hacer que los artículos sean menos relevantes para sus usuarios y reducir la participación y la conversión de los usuarios.

Para configurar el equilibrio entre la relevancia y su objetivo, elija uno de los siguientes niveles de sensibilidad objetiva al crear la solución:

  • Desactivado: Amazon Personalize utiliza principalmente datos de interacciones de elementos para predecir los elementos más relevantes para el usuario.

  • Bajo: Amazon Personalize pone menos énfasis en su objetivo. La relevancia a través de los datos de interacciones de elementos es más importante.

  • Medio: Amazon Personalize pone el mismo énfasis en su objetivo y relevancia a través de los datos de interacciones de elementos.

  • Alto: Amazon Personalize pone más énfasis en su objetivo. La relevancia a través de los datos de interacciones de elementos es menos importante.

Medición del rendimiento de optimización

Cuando crea una versión de solución (entrena un modelo) para una solución con un objetivo de optimización, Amazon Personalize genera una métrica average_rewards_at_k. La puntuación de average_rewards_at_k indica el rendimiento de la versión de la solución en cuanto al logro de su objetivo. Para calcular esta métrica, Amazon Personalize calcula las recompensas para cada usuario de la siguiente manera:

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

El average_rewards_at_k final es el promedio de todos los valores rewards_per_user normalizados para que sea un valor decimal menor o igual a 1 y mayor que 0. Cuanto más se acerque el valor a 1, más beneficios de media por usuario se pueden esperar de las recomendaciones.

Por ejemplo, si su objetivo es maximizar los ingresos de los clics, Amazon Personalize calcula la puntuación de cada usuario dividiendo los ingresos totales generados por los elementos en los que el usuario hizo clic de sus 25 recomendaciones más caras entre los ingresos de todos los elementos recomendados en los que hizo clic el usuario. Amazon Personalize devuelve entonces un promedio normalizado de todas las puntuaciones de los usuarios. Cuanto más cerca esté average_rewards_at_k de 1, más ingresos en promedio se pueden esperar por usuario a partir de las recomendaciones.

Para obtener más información sobre la generación de métricas, consulte Evaluación de una versión de la solución Amazon Personalize con métricas.

Optimización de una solución (AWS CLI)

Solo puede optimizar para un objetivo con la receta User-Personalization o Personalized-Ranking. Para optimizar una solución para un objetivo adicional mediante el AWS CLI, cree una nueva solución y especifique los detalles del objetivo con la optimizationObjective clave del solutionConfig objeto. El valor optimizationObjective tiene los siguientes campos:

  • itemAttribute: especifique el nombre de la columna de metadatos numéricos del conjunto de datos de elementos relacionado con su objetivo.

  • objectiveSensitivity: especifique el nivel de énfasis que la solución pone en su objetivo al generar recomendaciones. El nivel de sensibilidad de los objetivos configura la forma en que Amazon Personalize equilibra la recomendación de elementos en función de su objetivo frente a la relevancia a través de los datos de interacciones de elementos. El valor objectiveSensitivity puede serOFF, LOW, MEDIUM o HIGH. Para obtener más información, consulte Equilibrio del énfasis y la relevancia del objetivo.

A continuación, se muestra un ejemplo del comando create-solution AWS CLI . Reemplace solution name, dataset group arn y recipe arn por los suyos.

Para optimizationObjective, sustituya COLUMN_NAME por el nombre de la columna numérica de metadatos del conjunto de datos de elementos que esté relacionada con su objetivo. ParaobjectiveSensitivity, especifique OFF, LOW, 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\"}}"

Cuando la solución esté lista, cree una nueva versión de la solución (para ver un ejemplo de comando, consulte Creación de una solución (AWS CLI)). Una vez que haya creado una versión de la solución, podrá ver el rendimiento de la optimización con las métricas de la versión de la solución. Consulte Medición del rendimiento de optimización.

Optimización de una solución (AWS SDK)

Solo puede optimizar para un objetivo con la receta User-Personalization o Personalized-Ranking.

Para optimizar una solución para un objetivo adicional mediante los AWS SDK, cree una nueva solución y especifique los detalles del objetivo con la optimizationObjective clave del solutionConfig objeto de la solución. El valor optimizationObjective tiene los siguientes campos:

  • itemAttribute: especifique el nombre de la columna de metadatos numéricos del conjunto de datos de elementos del grupo del conjunto de datos relacionado con su objetivo.

  • objectiveSensitivity: especifique el nivel de énfasis que la solución pone en su objetivo al generar recomendaciones. El nivel de sensibilidad de los objetivos configura la forma en que Amazon Personalize equilibra la recomendación de elementos en función de su objetivo frente a la relevancia a través de los datos de interacciones de elementos. El valor objectiveSensitivity puede ser OFF, LOW, MEDIUM o HIGH. Para obtener más información, consulte Equilibrio del énfasis y la relevancia del objetivo.

Utilice el siguiente código para crear una solución con un objetivo adicional con AWS SDK for Python (Boto3) o AWS SDK for Java 2.x.

Cuando la solución esté lista, cree una nueva versión de la solución (para ver un ejemplo de código, consulte Crear una versión de solución (AWS SDK)). Una vez que haya creado una versión de la solución, podrá ver el rendimiento de la optimización con las métricas de la versión de la solución. Consulte Medición del rendimiento de optimización.

SDK for Python (Boto3)

Para crear una solución optimizada para un objetivo adicional, utilice el siguiente método create_solution. Reemplace solution name, dataset group arn y recipe arn por los suyos.

Para optimizationObjective, sustituya COLUMN_NAME por el nombre de la columna numérica de metadatos del conjunto de datos de elementos que esté relacionada con su objetivo. ParaobjectiveSensitivity, especifique OFF, LOW, 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

Para crear una solución optimizada para un objetivo adicional, utilice el siguiente método createPersonalizeSolution y pase los siguientes parámetros: un cliente de servicio de Amazon Personalize, el nombre de recurso de Amazon (ARN) del grupo de conjuntos de datos, el nombre de la solución, el ARN de la receta, el atributo del elemento y el nivel de sensibilidad del objetivo.

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();

Cuaderno de Jupyter de ejemplo

Para ver un ejemplo de bloc de notas de Jupyter que muestra cómo crear una solución optimizada para metadatos de elementos adicionales basados en objetivos, consulte la carpeta objective_optimization del repositorio de muestras de Amazon Personalize. GitHub