O blog da AWS

Utilize regras de negócio para promover produtos com o Amazon Personalize.

Por Anna Gruebler é Senior AI Specialist Solutions Architect;
Alex Burkleaux é AI Services Solutions Architect;
Liam Morrison é Senior Manager AI Personalize.

 

O Amazon Personalize permite que você melhore o engajamento com seu cliente por meio de recomendações personalizadas de produtos, campanhas de marketing, conteúdos em sites e aplicativos. Você pode iniciar o uso sem nenhuma experiência prévias em aprendizado de máquina (Machine Learning), usando APIs para criar facilmente recursos de personalização com apenas alguns cliques. Todos os seus dados permanecem protegidos e seguros através de criptografia, e são utilizados somente para criar recomendações para seus clientes ou usuários.

Filtro de promoção é uma funcionalidade do Amazon Personalize que possibilita a recomendação de produtos com base em regras de negócio. Por exemplo, ao iniciar uma campanha de marketing com o objetivo de promover o maior engajamento e visibilidade de uma determinada marca, produto ou categoria para os seus clientes. O filtro de promoção oferece um controle do percentual de produtos promovidos, sem nenhum custo adicional. Com esta funcionalidade, o Amazon Personalize encontra os produtos relevantes nos seus dados, para gerar recomendações alinhadas com o seu objetivo de negócio.

Nesta publicação, vamos demonstrar como utilizar a funcionalidade de filtro de promoção para personalizar recomendações em um cenário de e-commerce.

Resumo da solução

Diferentes tipos de empresa podem se beneficiar do uso desta funcionalidade para aumentar o engajamento de produtos ou serviços, alinhado com o seu objetivo de negócio. Por exemplo, em websites de e-commerce podemos utilizar esta funcionalidade para que 20% dos produtos recomendados sejam os que estão em promoção, ou sejam de uma determinada marca ou categoria. Para o cenário de um website de vídeo sob demanda, podemos utilizar esta funcionalidade para preencher 40% de um carrossel com séries e filmes recém-lançados, que pretendemos promover como estratégia de divulgação e aumento de engajamento. É possível utilizar filtro de promoção em conjuntos de dados de domínio e receitas personalizadas (receitas de personalização do usuário e de itens similares).

O Amazon Personalize simplifica a configuração de itens promovidos: primeiro, faça a criação de um filtro que seleciona os itens que serão promovidos. Esta configuração pode ser feita utilizando a console do Amazon Personalize ou através de API utilizando o Amazon Personalize DSL (domain specific language). Em seguida, ao solicitar recomendações, especifique o filtro de promoção, o percentual das recomendações que devem corresponder a esse filtro, e se necessário os parâmetros dinâmicos do filtro. Os produtos promovidos são posicionados aleatoriamente dentre todas as recomendações, ordenados por relevância.

O diagrama abaixo mostra como você pode usar o filtro de promoção em recomendações no Amazon Personalize.

Em nosso exemplo acima, utilizamos os dados do catálogo de produtos para criar o conjunto de dado de itens no Amazon Personalize e receber recomendações personalizadas. Ao solicitar recomendações sem utilizar o filtro de promoção, nós recebemos recomendações de itens relevantes, e nesse exemplo somente um item faz parte dos produtos promovidos. Ao utilizar o filtro de promoção com 50% de itens promovidos, os produtos serão recomendados com este percentual.

Esta publicação demonstra os passos de criação e utilização do filtro de promoção nas suas recomendações do Amazon Personalize, para que os resultados contenham itens promovidos que serão exibidos aos clientes. Em nosso exemplo, criamos um recomendador de varejo e promovemos itens com CATEGORY_L2 como halloween, que corresponde a decorações de Halloween. Um exemplo do código para este cenário está disponível no GitHub.

Primeiros passos

Para utilizar o filtro de promoção, acesse o console do Amazon Personalize. Em seguida crie o seu conjunto de dados, depois carregue os seus dados e treine um recomendador. Para ter acesso as instruções completas, consulte conceitos básicos.

  1. Crie um grupo de conjuntos de dados.
  2. Crie um conjunto de dados de interações usando o esquema a seguir:
    {
        "type": "record",
        "name": "Interactions",
        "namespace": "com.amazonaws.personalize.schema",
        "fields": [
            {
                "name": "USER_ID",
                "type": "string"
            },
            {
                "name": "ITEM_ID",
                "type": "string"
            },
            {
                "name": "TIMESTAMP",
                "type": "long"
            },
            {
                "name": "EVENT_TYPE",
                "type": "string"
            }
        ],
        "version": "1.0"
    }
  3. Importe os dados de interação do Amazon Simple Storage Service (Amazon S3) para o Amazon Personalize. Neste exemplo, usamos o seguinte arquivo de dados. Os dados foram gerados com base no código do projeto Retail Demo Store. Consulte o repositório do GitHub para saber mais sobre o projeto e os possíveis usos.
  4. Crie um conjunto de dados Itens usando o esquema a seguir
    {
        "type": "record",
        "name": "Items",
        "namespace": "com.amazonaws.personalize.schema",
        "fields": [
            {
                "name": "ITEM_ID",
                "type": "string"
            },
            {
                "name": "PRICE",
                "type": "float"
            },
            {
                "name": "CATEGORY_L1",
                "type": ["string"],
                "categorical": true
            },
            {
                "name": "CATEGORY_L2",
                "type": ["string"],
                "categorical": true
            },
            {
                "name": "GENDER",
                "type": ["string"],
                "categorical": true
            }
        ],
        "version": "1.0"
    }
  5. Importe os dados de itens do Amazon S3 para o Amazon Personalize. Neste exemplo, estamos usando o seguinte arquivo de dados, com base no código do projeto Retail Demo Store. Para obter mais informações sobre como formatar e importar seus dados de interações e itens do Amazon S3, consulte importação de registros em massa.
  6. Crie um recomendador. Neste exemplo, criamos um recomendador “Recomendado para você”.

Crie um filtro de promoção

Agora que os seus recursos do Amazon Personalize já estão configurados, você pode criar um filtro que seleciona os itens para sua promoção.

É possível criar um filtro estático em que todas as variáveis são definidas na criação do filtro. Por exemplo, para adicionar todos os itens que tenham CATEGORY_L2 como halloween, utilize a seguinte expressão de filtro:

INCLUDE ItemID WHERE Items.CATEGORY_L2 IN ("halloween")

Também é possível criar filtros dinâmicos. Os filtros dinâmicos podem ser customizados em tempo real quando você solicita as recomendações. Para criar um filtro dinâmico, você define os critérios de expressão do filtro usando uma variável ao invés de um valor fixo. Isso permite que você escolha os valores a serem filtrados aplicando um filtro durante a solicitação da recomendação, ao invés de ter esse valor fixo durante a criação da sua expressão. Você utiliza o filtro ao chamar as operações de API getRecommendations ou getPersonalizedRanking, ou como parte da entrada ao gerar recomendações no modo de inferência em lote.

Por exemplo, para selecionar todos os itens de uma determinada categoria durante a chamada de inferência, use a seguinte expressão em seu filtro:

INCLUDE ItemID WHERE Items.CATEGORY_L2 IN ($CATEGORY)

You can use the preceding DSL to create a customizable filter on the Amazon Personalize console. Complete the following steps:

  1. Na console do Amazon Personalize, no menu Filtros, selecione Criar filtro.
  2. Em Nome do filtro, insira o nome do filtro (nesta postagem vamos utilizar category_filter).
  3. Selecione Criar expressão ou adicione sua expressão manualmente para criar seu filtro personalizado.
  4. Crie a expressão “Include ItemID WHERE Items.CATEGORY_L2 IN $CATEGORY” Para Value, você insere um valor de $ mais um nome de parâmetro semelhante ao nome da sua variável para ficar fácil de lembrar (neste exemplo, $CATEGORY).
  5. Opcionalmente, para encadear expressões adicionais com seu filtro, selecione o sinal de adição.
  6. Para adicionar mais expressões de filtro, clique em Adicionar expressão.
  7. Clique em Criar filtro.

Você também pode criar filtros através da API createFilter no Amazon Personalize. Para obter mais informações, consulte CreateFilter.

Promovendo itens em suas recomendações

O exemplo de código a seguir é um corpo da solicitação de API GetRecommendations que recebe recomendações para um usuário usando o recomendador “Recomendado para você”:

{
    "recommenderArn" = "arn:aws:personalize:us-west-2:000000000000:recommender/test-recommender",
    userId = "1",
    numResults = 20
}

Esta solicitação retorna recomendações personalizadas, contendo os 20 produtos do catálogo mais relevantes para o usuário especificado.

Podemos fazer a mesma chamada e aplicar um filtro para retomar apenas os itens que correspondem ao filtro. O exemplo de código a seguir é uma solicitação para a API GetRecommendations que recebe recomendações para um usuário usando o recomendador “Recomendado para você”, e aplica um filtro dinâmico para retornar apenas itens relevantes que tenham CATEGORY_L2 como halloween:

{
    "recommenderArn" = "arn:aws:personalize:us-west-2:000000000000:recommender/test-recommender",
    userId = "1",
    numResults = 20,
    filterArn = "arn:aws:personalize:us-west-2:000000000000:filter/category_filter",
    filterValues={ "CATEGORY": "\"halloween\""}
}

Esta solicitação retorna recomendações personalizadas que têm CATEGORY_L2 como halloween. Dos itens do catálogo, estes são os 20 itens mais relevantes com CATEGORY_L2 como halloween para o usuário especificado.

É possível utilizar filtro de promoção para promover um determinado percentual de produtos, e os demais sejam os produtos do catálogo mais relevantes para este usuário. Para isso podemos fazer a mesma solicitação e aplicar um filtro de promoção. O exemplo de código a seguir é uma solicitação para a API GetRecommendations que retorna recomendações para um usuário utilizando o recomendador “Recomendado para você” e aplica o filtro para incluir um determinado porcentual de produtos relevantes que têm CATEGORY_L2 como halloween:

{
    recommenderArn = "arn:aws:personalize:us-west-2:000000000000:recommender/test-recommender",
    userId = "1",
    numResults = 20,
    promotions = [{
        "name" : "halloween_promotion",
        "percentPromotedItems" : 20,
        "filterArn": "arn:aws:personalize:us-west-2:000000000000:filter/category_filter",
        "filterValues": {
            "CATEGORY" : "\"halloween\""
        }
    }]
}

Esta solicitação retorna 20% das recomendações que correspondem ao filtro especificado na promoção: produtos com CATEGORY_L2 como halloween, e 80% que são os itens mais relevantes para o usuário dentre os itens no catálogo.

É possível utilizar um filtro combinado com o filtro de promoção. O filtro no nível superior dos parâmetros será aplicado apenas aos produtos não promovidos.

No exemplo abaixo, o filtro de promoção está especificado na sessão de parâmetros promotions. O exemplo de código a seguir é uma solicitação para a API GetRecommendations que retorna recomendações para um usuário utilizando o recomendador “Recomendado para você”. Além disso ele utiliza o filtro dinâmico que já mencionamos nas etapas acima. O primeiro filtro será aplicado aos itens não promovidos, selecionando itens com CATEGORY_L2 como decorative, e o segundo filtro será aplicado para promover itens com CATEGORY_L2 como halloween:

 

{
    recommenderArn = "arn:aws:personalize:us-west-2:000000000000:recommender/test-recommender",
    userId = "1",
    numResults = 20,
    "filterArn": "arn:aws:personalize:us-west-2:000000000000:filter/category_filter",
    "filterValues": {
        "CATEGORY" : "\"decorative\""
    }
    promotions = [{
        "name" : "halloween_promotion",
        "percentPromotedItems" : 20,
        "filterArn": "arn:aws:personalize:us-west-2:000000000000:filter/category_filter",
        "filterValues": {
            "CATEGORY" : "\"halloween\""
        }
    }]
}

Esta solicitação retorna 20% das recomendações que correspondem ao filtro de promoção especificado: itens com CATEGORY_L2 como halloween. Os 80% restantes, são recomendações personalizadas para o usuário especificado com CATEGORY_L2 como decorative. Estes são os produtos mais relevantes disponíveis no catálogo de produtos que correspondem a CATEGORY_L2 como decorative.

Limpeza dos recursos criados

Após a execução dos testes realizados nesta publicação, certifique-se de remover todos os recursos que foram criados e não serão reutilizados. Você pode excluir filtros, recomendadores e conjuntos de dados através da Console de Gerenciamento da AWS ou usando o SDK do Python.

Conclusão

O filtro de promoção do Amazon Personalize permite que você personalize suas recomendações para cada usuário, incluindo itens nos quais você deseja aumentar a visibilidade e o engajamento. Também é possível especificar o percentual dos itens que serão promovidos, permitindo que as recomendações estejam alinhadas com os seus objetivos de negócios. Você pode usar filtro de promoção para recomendações usando as receitas como: Personalização do usuário e itens semelhantes.

Para obter mais informações sobre o Amazon Personalize, consulte O que é o Amazon Personalize?

 

Esta publicação foi traduzida do blog da AWS em inglês.

 


Sobre os autores

Anna Gruebler é arquiteta de soluções especialista na AWS com foco em inteligência artificial. Ela tem mais de 10 anos de experiência ajudando clientes a desenvolver e implantar aplicativos de aprendizado de máquina. Sua paixão é pegar novas tecnologias e colocá-las nas mãos de todos e resolver problemas difíceis aproveitando as vantagens de usar a IA na nuvem.

 

 

 

 

Alex Burkleaux é arquiteta de soluções na AWS. Ela gosta de ajudar os clientes a aplicar o aprendizado de máquina e a análise de dados para resolver problemas no setor de mídia e entretenimento. Em seu tempo livre, ela gosta de passar tempo com a família e ser voluntária como patrulheira de esqui.

 

 

 

 

Liam Morrison é gerente de arquitetura de soluções na AWS. Ele lidera um time focado em serviços de inteligência de marketing. Ele passou os últimos 5 anos atuando em aplicações práticas de aprendizado de máquina para o segmento de mídia e entretenimento, ajudando clientes a implementar personalização, processamento de linguagem natural, visão computacional e muito mais.

 

 

 

 

Tradutores

Daniel Volochen é um arquiteto de soluções na AWS. Trabalha construindo soluções e ajudando clientes em suas jornadas para a nuvem. Tem se especializado em inteligência artificial e aprendizado de máquina (AI/ML) com foco em sistemas de recomendação.

 

 

 

 

Thiago Couto é arquiteto de soluções na AWS e atua no segmento Enterprise auxiliando clientes de Retail e CPG em suas jornadas para nuvem. Possui mais de 15 anos de experiência atuando em arquiteturas que englobam AI/ML, integrações, IoT e correlatos.

 

 

 

 

Yan Marim é arquiteto de soluções na AWS e tem interesse principalmente em AI/ML. Atualmente apoia clientes na sua jornada de transformação digital na nuvem.