

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Otimização de uma solução com configuração de eventos
<a name="optimizing-solution-events-config"></a>

**Importante**  
Por padrão, todas as novas soluções usam o treinamento automático. Com o treinamento automático, você acumula custos de treinamento enquanto sua solução está ativa. Ao terminar, você poderá [atualizar a solução](updating-solution.md) para desativar o treinamento automático e evitar custos desnecessários. Para obter mais informações sobre os custos dos treinamentos, consulte [Preços do Amazon Personalize](https://aws.amazon.com/personalize/pricing/).

 Se você usar a fórmula User-Personalization-v2 ou Personalized-Ranking-v2, poderá otimizar uma solução do Amazon Personalize com uma configuração de eventos. 

 Com fórmulas de recomendação de itens, o objetivo principal do Amazon Personalize é prever os itens mais relevantes para os usuários com base em dados históricos e de interações com itens em tempo real. No entanto, a interação pode conter informações adicionais, como se um usuário clicou ou comprou um determinado item. Você pode gravar isso gravando o tipo do evento ([Tipo de evento e dados de valor do evento](interactions-datasets.md#event-type-and-event-value-data)). Ao configurar uma solução, você pode fazer com que a solução dê pesos diferentes aos diferentes tipos de eventos de interação. Por exemplo, você pode configurar uma solução para dar mais peso aos eventos de `purchase` do que aos eventos de `click`.

Para que uma solução dê pesos diferentes a diferentes tipos de eventos, especifique os tipos de eventos e os pesos correspondentes na configuração de eventos da solução. Além disso, você pode definir um limite de valor do evento para excluir interações com o valor do evento abaixo desse limite. Por exemplo, se seus dados de EVENT\_VALUE para eventos com um EVENT\_TYPE DE watch forem a porcentagem do vídeo que um usuário assistiu e você definir o limite do valor do evento como 0,5 e o tipo de evento como watch, o Amazon Personalize treinará o modelo usando somente eventos de interação de watch com EVENT\_VALUE maior ou igual a 0,5. 

 Os pesos associados a tipos de eventos determinarão sua importância. Um tipo de evento com peso maior fará com que o modelo treinado provavelmente recomende um item que interagiria com esse tipo de evento. Por exemplo, se você especificou “compra” com um peso maior do que “clique” e o modelo descobriu que um usuário clicaria no item B ou compraria o item C com seu histórico de interações, o modelo classificará o item C como mais alto. 

Para otimizar uma solução com configuração de eventos, crie uma nova solução com a fórmula User-Personalization-v2 ou Personalized-Ranking-v2 e especifique uma configuração de eventos. Também é possível atualizar uma solução existente ([Atualizar uma solução para alterar a configuração automática de treinamento](updating-solution.md)) com uma configuração de eventos. 

Você pode usar o console Amazon Personalize, AWS Command Line Interface (AWS CLI) ou AWS SDKs. Para obter informações sobre o uso do console do Amazon Personalize, consulte [Criar uma solução (console)](create-solution.md#configure-solution-console). 

**Topics**
+ [Diretrizes e requisitos](#optimize-event-config-guidelines-req)
+ [Medição do desempenho com a configuração do peso do evento](#optimize-event-configuration-measuring-performance)
+ [Otimizar uma solução (AWS CLI)](#optimize-event-configuration-cli)
+ [Otimizar uma solução (AWS SDKs)](#optimize-event-configuration-sdk)

## Diretrizes e requisitos
<a name="optimize-event-config-guidelines-req"></a>

 Veja abaixo as diretrizes e os requisitos para configuração de eventos: 
+ Para configurar pesos para diferentes tipos de eventos, seu conjunto de dados de interações com itens deve ter uma coluna EVENT\_TYPE e, se desejar, uma coluna EVENT\_VALUE.
+ Você pode especificar uma lista de parâmetros de eventos na configuração. Inclua todos os tipos de eventos que você deseja considerar para a criação da solução. É possível especificar no máximo 10 tipos de eventos diferentes.
+ Você pode especificar o peso do evento para cada tipo de evento. O peso do evento deve estar entre 0,0 e 1,0. Somente a proporção de pesos entre os tipos de eventos é importante. Por exemplo, definir um tipo de evento “compra” com peso 0,3 e um tipo de evento “clique” com peso 0,1 terá o mesmo efeito que definir “compra” com peso 0,6 e “clique” com peso 0,2.
+ Você pode atualizar a configuração do evento para uma solução existente usando a operação da API [UpdateSolution](https://docs.aws.amazon.com/personalize/latest/dg/API_UpdateSolution.html).

## Medição do desempenho com a configuração do peso do evento
<a name="optimize-event-configuration-measuring-performance"></a>

 Quando você cria uma versão da solução (treina um modelo) para uma solução com uma configuração de eventos, o Amazon Personalize gera uma métrica `normalized_discounted_cumulative_gain_with_event_weights_at_k`. A pontuação para `normalized_discounted_cumulative_gain_with_event_weights_at_k` indica o desempenho da versão da solução, considerando o peso dos eventos que você definiu para cada tipo de evento. 

 É semelhante ao ganho cumulativo normalizado (NDCG) em K, mas a recompensa para cada previsão correta será ponderada. Em contraste, no NDCG original em K, cada previsão correta terá um peso de 1. Por exemplo, com “compra” de peso 0,3 e “clique” de peso 0,1, prever corretamente o item “compra” receberá uma recompensa de 1,5, enquanto prever o item “clique” receberá uma recompensa de 0,5. 

Para ter mais informações sobre essas métricas, consulte [Avaliar uma versão da solução do Amazon Personalize com métricas](working-with-training-metrics.md).

## Otimizar uma solução (AWS CLI)
<a name="optimize-event-configuration-cli"></a>

Você pode otimizar com a configuração de eventos com a fórmula User-Personalization-v2 ou Personalized-Ranking-v2.

 Para otimizar uma solução com configuração de eventos usando a AWS CLI, crie uma nova solução e especifique os detalhes da configuração de eventos usando a chave `eventsConfig` no objeto `solutionConfig`. A `eventsConfig` tem uma chave `eventParametersList` sob a qual você pode especificar até 10 eventParameters. Cada `eventParameter` tem os seguintes campos:
+ eventType: especifique o tipo de evento que você deseja considerar para a criação da solução.
+ eventValueThreshold: especifique o limite do valor do evento. Somente eventos com valor maior que ou igual a esse limite serão considerados para a criação da solução.
+ weight: especifique o peso para cada tipo de evento. Um peso maior significa maior importância do tipo de evento para a solução criada.

Veja a seguir um exemplo do comando create-solution da AWS CLI. Substitua `solution name`, `dataset group arn` e `recipe arn` pelos seus próprios valores. 

```
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}]}"
```

Quando sua solução estiver pronta, crie uma nova versão da solução (para obter um exemplo de comando, consulte [Criar uma solução (AWS CLI)](create-solution.md#configure-solution-cli)). Depois de criar uma versão da solução, você pode visualizar o desempenho da otimização com as métricas da versão da solução. Consulte [Medir a performance de otimizar](optimizing-solution-for-objective.md#measuring-performance).

## Otimizar uma solução (AWS SDKs)
<a name="optimize-event-configuration-sdk"></a>

Você pode otimizar com a configuração de eventos com a fórmula User-Personalization-v2 ou Personalized-Ranking-v2.

 Para otimizar uma solução com configuração de eventos usando SDKs da AWS, crie uma nova solução e especifique os detalhes da configuração de eventos usando a chave `eventsConfig` no objeto `solutionConfig`. A `eventsConfig` tem uma chave `eventParametersList` sob a qual você pode especificar até 10 `eventParameters`. Cada `eventParameter` tem os seguintes campos:
+ eventType: especifique o tipo de evento que você deseja considerar para a criação da solução.
+ eventValueThreshold: especifique o limite do valor do evento. Somente eventos com valor maior que ou igual a esse limite serão considerados para a criação da solução.
+ weight: especifique o peso para cada tipo de evento. Um peso maior significa maior importância do tipo de evento para a solução criada.

------
#### [ 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 "";
```

------

Quando sua solução estiver pronta, crie uma nova versão da solução (para obter um exemplo de comando, consulte [Criar uma solução (SDKs da AWS)](create-solution.md#configure-solution-sdk)). Depois de criar uma versão da solução, você pode visualizar o desempenho da otimização com as métricas da versão da solução. Consulte [Medir a performance de otimizar](optimizing-solution-for-objective.md#measuring-performance).