

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 con la configuración de eventos
<a name="optimizing-solution-events-config"></a>

**importante**  
De forma predeterminada, todas las soluciones nuevas utilizan el entrenamiento automático. Con el entrenamiento automático, incurrirá en costos de entrenamiento mientras la solución esté activa. Para evitar costos innecesarios, cuando haya terminado, puede [actualizar la solución](updating-solution.md) para desactivar el entrenamiento automático. Para obtener información sobre los costos de entrenamiento, consulte [Precios de Amazon Personalize](https://aws.amazon.com/personalize/pricing/).

 Si utiliza la receta Personalization-v2 o Personalized-Ranking-v2, puede optimizar una solución de Amazon Personalize con una configuración de eventos. 

 Con las recetas de recomendación de elementos, el objetivo principal de Amazon Personalize es predecir los artículos más relevantes para sus usuarios en función de los datos históricos y en tiempo real de las interacciones con artículos. Sin embargo, la interacción puede incluir información adicional; por ejemplo, si un usuario ha hecho clic en un artículo determinado o si lo ha comprado. Puede registrarlo grabando el tipo del evento ([Datos de valor de evento y tipo de evento](interactions-datasets.md#event-type-and-event-value-data)). Al configurar una solución, puede hacer que asigne ponderaciones distintas a los diferentes tipos de evento de interacción. Por ejemplo, puede configurar una solución para dar más peso a los eventos de `purchase` que a los de `click`.

Para que una solución asigne diferentes ponderaciones a los distintos tipos de evento, al configurar los eventos de la solución, debe especificar los tipos de evento y sus ponderaciones correspondientes. Además, puede definir un umbral de valor de evento para excluir las interacciones que tengan un valor de evento inferior a ese umbral. Por ejemplo, si los datos EVENT\_VALUE de los eventos con un EVENT\_TYPE de ver son el porcentaje de un vídeo que ha visto un usuario, si establece el umbral del valor del evento en 0,5 y el tipo de evento en ver, Amazon Personalize entrena el modelo utilizando únicamente eventos de interacción ver con un EVENT\_VALUE superior o igual a 0,5. 

 Las ponderaciones asociadas a los tipos de evento determinarán su importancia. Un tipo de evento con mayor ponderación hará que sea más probable que el modelo entrenado recomiende un artículo con el que se interactuaría con ese tipo de evento. Por ejemplo, si ha especificado "compra" con una ponderación mayor que "clic" y el modelo ha aprendido que, según su historial de interacciones, un usuario haría clic en el artículo B o compraría el artículo C, el modelo clasificará el artículo C en una posición más alta. 

Para optimizar una solución con la configuración de eventos, cree una nueva solución con la receta User-Personalization-v2 o Personalized-Ranking-v2 y especifique una configuración de eventos. También puede actualizar una solución existente ([Actualización de una solución para cambiar la configuración de entrenamiento automático](updating-solution.md)) con una configuración de eventos. 

Puede usar la consola de Amazon Personalize, AWS Command Line Interface (AWS CLI) o los SDK de AWS. Para obtener información sobre el uso de la consola de Amazon Personalize, consulte [Creación de una solución (consola)](create-solution.md#configure-solution-console). 

**Topics**
+ [Directrices y requisitos](#optimize-event-config-guidelines-req)
+ [Medición del rendimiento con la configuración de ponderación de eventos](#optimize-event-configuration-measuring-performance)
+ [Optimización de una solución (AWS CLI)](#optimize-event-configuration-cli)
+ [Optimización de una solución (SDK de AWS)](#optimize-event-configuration-sdk)

## Directrices y requisitos
<a name="optimize-event-config-guidelines-req"></a>

 Estas son las directrices y requisitos detallados de la configuración de eventos: 
+ Para configurar las ponderaciones de los distintos tipos de evento, su conjunto de datos de interacciones con artículos debe tener una columna EVENT\_TYPE y, opcionalmente, una columna EVENT\_VALUE.
+ Puede especificar una lista de parámetros de evento en la configuración. Incluya todos los tipos de evento que desee tener en cuenta para la creación de la solución. Puede especificar un máximo de 10 tipos de evento diferentes.
+ Puede especificar la ponderación del evento para cada tipo de evento. La ponderación del evento debe tener un valor entre 0,0 y 1,0. Solo importa la relación de las ponderaciones entre tipos de eventos. Por ejemplo, si se establece el tipo de evento "compra" con una ponderación de 0,3 y el tipo de evento "clic" con un ponderación de 0,1, tendrá el mismo resultado que si se establece el tipo de evento "compra" con una ponderación de 0,6 y "clic" con un ponderación de 0,2.
+ Puede actualizar la configuración de eventos de una solución existente utilizando la operación de la API [UpdateSolution](https://docs.aws.amazon.com/personalize/latest/dg/API_UpdateSolution.html).

## Medición del rendimiento con la configuración de ponderación de eventos
<a name="optimize-event-configuration-measuring-performance"></a>

 Cuando crea una versión de una solución (entrena un modelo) con una configuración de eventos, Amazon Personalize genera una métrica `normalized_discounted_cumulative_gain_with_event_weights_at_k`. La puntuación de `normalized_discounted_cumulative_gain_with_event_weights_at_k` indica lo bien que funciona la versión de la solución teniendo en cuenta la ponderación que haya establecido para cada tipo de evento. 

 Esta métrica es similar a la ganancia acumulada descontada normalizada (NCDG) en K, pero se ponderará la recompensa por cada predicción correcta. Por el contrario, en el NDCG original en K, cada predicción correcta tendrá una ponderación de 1. Por ejemplo, si "compra" tiene una ponderación de 0,3 y "clic" una ponderación de 0,1, la recompensa por pronosticar correctamente la "compra" del artículo será 1,5, mientras que si se predice "clic", la recompensa será de 0,5. 

Para obtener más información sobre la generación de métricas, consulte [Evaluación de una versión de solución de Amazon Personalize con métricas](working-with-training-metrics.md).

## Optimización de una solución (AWS CLI)
<a name="optimize-event-configuration-cli"></a>

Puede optimizar la configuración de eventos con la receta User-Personalization-v2 o Personalized-Ranking-v2.

 Para optimizar una solución con la configuración de eventos mediante la AWS CLI, cree una nueva solución y especifique los detalles de la configuración de eventos con la clave `eventsConfig` en el objeto `solutionConfig`. El evento `eventsConfig` tiene una clave de `eventParametersList` con la que puede especificar hasta 10 eventParameters. Cada `eventParameter` tiene los siguientes campos:
+ eventType: especifique el tipo de evento que desea que se tenga en cuenta para la creación de la solución.
+ eventValueThreshold: especifique el umbral del valor de evento. Para crear la solución, solo se tendrán en cuenta los eventos con un valor de evento superior o igual a este umbral.
+ weight: especifique el peso de cada tipo de evento. Una ponderación más alta significa que el tipo de evento tiene mayor importancia para la solución creada.

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

```
aws personalize create-solution \
--name {{solution name}} \
--dataset-group-arn {{dataset group arn}} \
--recipe-arn {{recipe arn}} \
--solution-config "{\"eventsConfig\":{\"eventParametersList\":[{\"eventType\":\"Purchase\", \"eventValueThreshold\":0.1, \"weight\":0.3}, {\"eventType\":\"Click\", \"weight\":0.1}]}"
```

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)](create-solution.md#configure-solution-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](optimizing-solution-for-objective.md#measuring-performance).

## Optimización de una solución (SDK de AWS)
<a name="optimize-event-configuration-sdk"></a>

Puede optimizar la configuración de eventos con la receta User-Personalization-v2 o Personalized-Ranking-v2.

 Para optimizar una solución con la configuración de eventos mediante los SDK de AWS, cree una solución y especifique los detalles de la configuración de eventos con la clave `eventsConfig` en el objeto `solutionConfig`. El evento `eventsConfig` tiene una clave de `eventParametersList` con la que puede especificar hasta 10 `eventParameters`. Cada `eventParameter` tiene los siguientes campos:
+ eventType: especifique el tipo de evento que desea que se tenga en cuenta para la creación de la solución.
+ eventValueThreshold: especifique el umbral del valor de evento. Para crear la solución, solo se tendrán en cuenta los eventos con un valor de evento superior o igual a este umbral.
+ weight: especifique el peso de cada tipo de evento. Una ponderación más alta significa que el tipo de evento tiene mayor importancia para la solución creada.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
    name= '{{solution name}}', 
    recipeArn = '{{recipe arn}}', 
    datasetGroupArn = '{{dataset group arn}}',
    solutionConfig = {
       "eventsConfig": {
          "eventParametersList": [
             {"eventType":"Purchase", 
              "eventValueThreshold":0.1, 
              "weight":0.3}, 
             {"eventType":"Click", 
              "weight":0.1}
          ]
       }
    }
)
solution_arn = create_solution_response['solutionArn']
print('solution_arn: ', solution_arn)
```

------
#### [ SDK for Java 2.x ]

```
public static String createPersonalizeSolution(PersonalizeClient personalizeClient, 
							  String datasetGroupArn, 
							  String solutionName, 
							  String recipeArn,
							  ) {
    
try {
    EventsConfig eventsConfig = EventsConfig.builder()
        .eventsParameterList(eventsParameterList)
        .build();

    SolutionConfig solutionConfig = SolutionConfig.builder()
        .eventsConfig(eventsConfig)
        .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 "";
```

------

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 (SDK de AWS)](create-solution.md#configure-solution-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](optimizing-solution-for-objective.md#measuring-performance).