Criação de recomendações (SDKs)AWS - 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á.

Criação de recomendações (SDKs)AWS

Depois de criar um grupo de conjuntos de dados de domínio e importar dados, você pode criar recomendadores para os casos de uso do seu domínio. Um recomendador é um recurso do grupo de conjuntos de dados do domínio que gera recomendações.

Para todos os casos de uso, você pode configurar as colunas usadas durante o treinamento. Para ter mais informações, consulte Configurar colunas usadas durante o treinamento. Para os casos de uso Top picks for your ou Recommended for you, o Amazon Personalize usa a exploração ao recomendar itens. Para ter mais informações, consulte Configurar a exploração.

Criar um recomendador

Crie um recomendador para um caso de uso de domínio com o código a seguir. Dê um nome ao recomendador e forneça o nome do recurso da Amazon (ARN) do grupo de conjuntos de dados de domínio. Para recipeArn, forneça o ARN para seu caso de uso. Execute esse código para cada um dos casos de uso do seu domínio. Os casos de uso disponíveis dependem do seu domínio. Para obter uma lista de casos de uso e seus ARNs e requisitos, consulte Escolher um 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();

Configurar a exploração

Para os casos de uso Top picks for your ou Recommended for you, o Amazon Personalize usa a exploração ao recomendar itens. A exploração envolve testar recomendações de itens diferentes para saber como os usuários respondem aos itens com poucos dados de interação. Você pode configurar a exploração com o seguinte:

  • Ênfase na exploração de itens menos relevantes (peso de exploração) — Configure o quanto explorar. Especifique um valor decimal entre 0 e 1. O padrão é de 0,3. Quanto mais próximo o valor estiver de 1, maior será a exploração. Com maior exploração, as recomendações incluem mais itens com menos dados de interações ou relevância com base no comportamento anterior. Em zero, nenhuma exploração ocorre, e as recomendações são baseadas nos dados atuais (relevância).

  • Limite de idade do item de exploração: especifique a idade máxima do item em dias desde a última interação em todos os itens no conjunto de dados de interações com itens. Isso define o escopo da exploração do item com base na idade do item. O Amazon Personalize determina a idade do item com base no carimbo de data e hora de criação ou, se não houver dados de carimbo de data e hora de criação, serão usados os dados das interações com itens. Para obter mais informações sobre como o Amazon Personalize determina a idade do item, consulte Dados de carimbo de data e hora de criação.

    Para aumentar os itens que o Amazon Personalize considera durante a exploração, insira um valor maior. O mínimo é 1 dia e o padrão é 30 dias. As recomendações podem incluir itens mais antigos do que o limite de idade do item especificado. Isso ocorre porque esses itens são relevantes para o usuário, e a exploração não os identificou.

O código a seguir mostra como configurar a exploração ao criar um recomendador. O exemplo usa os valores padrão.

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

Configurar colunas usadas durante o treinamento

Para excluir colunas do treinamento, forneça o objeto excludedDatasetColumns no trainingDataConfig como parte da configuração do recomendador. Para cada chave, forneça o tipo de conjunto de dados. Para cada valor, forneça a lista de colunas a serem excluídas. O código a seguir mostra como excluir colunas do treinamento ao criar um recomendador. Para ter mais informações, consulte Configurar colunas usadas durante o treinamento.

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

Habilitar metadados

Se você tiver um conjunto de dados de itens e quiser a opção de incluir metadados ao receber recomendações, defina enableMetadataWithRecommendations como true na 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)