Otimizar uma solução para um objetivo adicional - Amazon Personalize

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á.

Otimizar uma solução para um objetivo adicional

Importante

Por padrão, todas as novas soluções usam treinamento automático. Com o treinamento automático, você incorre em custos de treinamento enquanto sua solução está ativa. Para evitar custos desnecessários, ao terminar, você poderá atualizar a solução para desativar o treinamento automático. Para obter informações sobre custos de treinamento, consulte os preços do Amazon Personalize.

Se você usar a receita de personalização de usuário ou a receita de classificação personalizada, poderá otimizar uma solução Amazon Personalize para um objetivo além da máxima relevância, como maximizar a receita.

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. Esses são os itens com os quais seus usuários provavelmente interagirão (por exemplo, os itens com os quais eles provavelmente clicarão). Se você tiver um objetivo adicional, como maximizar os minutos de streaming ou aumentar a fórmula, poderá criar uma solução que gere recomendações com base na relevância e no seu objetivo.

Para otimizar uma solução para um objetivo adicional, crie uma nova solução com a fórmula de personalização do usuário ou a fórmula de classificação personalizada e escolha a coluna de metadados numéricos no conjunto de dados de itens relacionada ao seu objetivo. Ao gerar recomendações, o Amazon Personalize dá mais importância aos itens com valores mais altos para essa coluna de dados. Por exemplo, você pode escolher uma LENGTH coluna VIDEO _ para maximizar os minutos de streaming ou uma PRICE coluna para maximizar a receita.

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 Amazon Personalize, consulte. Criar uma solução (console)

Diretrizes e requisitos

Os requisitos objetivos são os seguintes:

  • Você só pode escolher uma coluna para o seu objetivo.

  • A coluna deve ter um tipo numérico em seu esquema.

  • A coluna não pode ter um null tipo em seu esquema.

Para obter mais informações sobre os tipos de dados de transmissão, consulte Criação de JSON arquivos de esquema para esquemas do Amazon Personalize.

Equilibrando ênfase objetiva e relevância

Pode haver uma desvantagem ao recomendar itens com base mais em seu objetivo do que em sua relevância. Por exemplo, se você quiser aumentar a fórmula por meio de recomendações, recomendações somente para itens caros podem tornar os itens menos relevantes para seus usuários e diminuir o engajamento e a conversão do usuário.

Para configurar o equilíbrio entre relevância e seu objetivo, escolha um dos seguintes níveis de sensibilidade da objetiva ao criar a solução:

  • Desativado: o Amazon Personalize usa principalmente dados de interações com itens para prever os itens mais relevantes para o usuário.

  • Baixo: o Amazon Personalize dá menos ênfase ao seu objetivo. A relevância por meio de dados de interações com itens é mais importante.

  • Médio: o Amazon Personalize dá igual ênfase ao objetivo e à relevância por meio de dados de interações com itens.

  • Alto: o Amazon Personalize dá mais ênfase ao seu objetivo. A relevância por meio de dados de interações com itens é menos importante.

Medir a performance de otimizar

Quando você cria uma versão da solução (treina um modelo) para uma solução com um objetivo de otimização, o Amazon Personalize gera uma métrica average_rewards_at_k. A pontuação para de average_rewards_at_k indica o desempenho da versão da solução para atingir seu objetivo. Para calcular essa métrica, o Amazon Personalize calcula as recompensas para cada usuário da seguinte forma:

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

O average_rewards_at_k final é a média de todos os valores rewards_per_user normalizados para ser um valor decimal menor ou igual a 1 e maior que 0. Quanto mais próximo o valor estiver de 1, mais ganhos, em média, por usuário, você pode esperar das recomendações.

Por exemplo, se seu objetivo é maximizar a fórmula de cliques, o Amazon Personalize calcula a pontuação de cada usuário dividindo a fórmula total gerada pelos itens em que o usuário clicou em suas 25 recomendações mais caras pela fórmula de todos os itens recomendados em que o usuário clicou. Em seguida, o Amazon Personalize retorna uma média normalizada de todas as pontuações dos usuários. Quanto mais próximo o average_rewards_at_k for de 1, mais fórmula, em média, você pode esperar ganhar por usuário das recomendações.

Para ter mais informações sobre essas métricas, consulte Avaliação de uma versão da solução Amazon Personalize com métricas.

Otimizando uma solução (AWS CLI)

Você pode otimizar para um objetivo somente com a fórmula de Personalização do Usuário ou Classificação Personalizada. Para otimizar uma solução para um objetivo adicional usando o AWS CLI, crie uma nova solução e especifique os detalhes do objetivo usando a optimizationObjective chave no solutionConfig objeto. optimizationObjective tem os seguintes campos:

  • itemAttribute: especifique o nome da coluna de metadados numéricos do conjunto de dados Itens relacionada ao seu objetivo.

  • objectiveSensitivity: especifique o nível de ênfase que a solução coloca em seu objetivo ao gerar recomendações. O nível de sensibilidade do objetivo configura como o Amazon Personalize equilibra a recomendação de itens com base no objetivo versus relevância por meio de dados de interações com itens. O objectiveSensitivity pode ser OFF, LOW MEDIUM ou HIGH. Para obter mais informações, consulte Equilibrando ênfase objetiva e relevância.

A seguir está um exemplo do create-solution AWS CLI comando. Substitua solution name, dataset group arn e recipe arn pelos seus próprios valores.

Para optimizationObjective, COLUMN_NAME substitua pelo nome da coluna de metadados numéricos do conjunto de dados Itens relacionado ao seu objetivo. ParaobjectiveSensitivity, especifique OFFLOW,MEDIUM, ouHIGH.

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 sua solução estiver pronta, crie uma nova versão da solução (para obter um exemplo de comando, consulte Criando uma solução (AWS 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.

Otimizando uma solução (AWS SDKs)

Você pode otimizar para um objetivo somente com a fórmula de Personalização do Usuário ou Classificação Personalizada.

Para otimizar uma solução para um objetivo adicional usando o AWS SDKs, crie uma nova solução e especifique os detalhes do objetivo usando a optimizationObjective chave no solutionConfig objeto da solução. optimizationObjective tem os seguintes campos:

  • itemAttribute: especifique o nome da coluna de metadados numéricos do conjunto de dados Itens do grupo de conjuntos de dados relacionado ao seu objetivo.

  • objectiveSensitivity: especifique o nível de ênfase que a solução coloca em seu objetivo ao gerar recomendações. O nível de sensibilidade do objetivo configura como o Amazon Personalize equilibra a recomendação de itens com base no objetivo versus relevância por meio de dados de interações com itens. O objectiveSensitivity pode ser OFF, LOW MEDIUM ou HIGH. Para obter mais informações, consulte Equilibrando ênfase objetiva e relevância.

Use o código a seguir para criar uma solução com um objetivo adicional com o AWS SDK for Python (Boto3) ou o AWS SDK for Java 2.x.

Quando sua solução estiver pronta, crie uma nova versão da solução (por exemplo, consulte o códigoCriando uma versão da solução (AWS SDKs)). 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.

SDK for Python (Boto3)

Para criar uma solução otimizada para um objetivo adicional, use o método create_solution a seguir. Substitua solution name, dataset group arn e recipe arn pelos seus próprios valores.

Para optimizationObjective, COLUMN_NAME substitua pelo nome da coluna de metadados numéricos do conjunto de dados Itens relacionado ao seu objetivo. ParaobjectiveSensitivity, especifique OFFLOW,MEDIUM, ouHIGH.

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 criar uma solução otimizada para um objetivo adicional, use o createPersonalizeSolution método a seguir e transmita o seguinte como parâmetros: um cliente do serviço Amazon Personalize, o Amazon Resource Name (ARN) do grupo de conjuntos de dados, o nome da solução, a receitaARN, o atributo do item e o nível de sensibilidade do 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();

Exemplo de caderno Jupyter

Para ver um exemplo de caderno Jupyter que mostra como criar uma solução otimizada para metadados adicionais de itens baseados em objetivos, consulte a pasta objective_optimization do repositório de amostras Amazon Personalize GitHub