Amazon Personalize
O Amazon Personalize é como ter seu próprio sistema de recomendação da Amazon com machine learning funcionando o dia todo. Com base em mais de 20 anos de experiência em recomendações, o Amazon Personalize permite que você melhore o engajamento dos clientes, fornecendo recomendações personalizadas de produtos e conteúdo em tempo real e promoções de marketing direcionadas.
Essa integração é mantida pelo Amazon Personalize.
Sobre a integração
Usando machine learning e um algoritmo que você ajuda a definir, o Amazon Personalize pode ajudar a treinar um modelo que gera recomendações de alta qualidade para seus websites e aplicativos. Esses modelos permitem criar listas de recomendações com base nos comportamentos anteriores dos usuários, classificar itens por relevância e recomendar outros itens com base em similaridade. As listas obtidas pela API do Amazon Personalize podem ser usadas no Connected Content da Braze para executar Campaigns de recomendação personalizadas. Ao integrar com o Amazon Personalize, os clientes têm liberdade para controlar os parâmetros usados para treinar os modelos e definir objetivos de negócios opcionais que otimizam a saída do algoritmo.
Este artigo de referência ajudará você a entender os casos de uso que o Amazon Personalize oferece, os dados com os quais ele trabalha, como configurar o serviço e como integrá-lo à Braze.
Pré-requisitos
| Requisito | Descrição |
|---|---|
| Conta do Amazon Web Service | É necessário ter uma conta do AWS para aproveitar essa parceria. Depois de ter uma conta do AWS, você pode acessar o Amazon Personalize por meio do console do Amazon Personalize, da AWS Command Line Interface (AWS CLI) ou dos SDKs do AWS. |
| Casos de uso definidos | Antes de criar um modelo, você deve determinar seu caso de uso para essa integração. Consulte a lista a seguir para casos de uso comuns. |
| Conjuntos de dados | Os modelos de recomendação do Amazon Personalize exigem três tipos diferentes de conjuntos de dados: interações, usuários e itens. Consulte os detalhes a seguir para ver os requisitos de cada conjunto de dados. |
Casos de uso
Antes de criar um modelo, você deve determinar seu caso de uso para essa integração. Alguns casos de uso comuns incluem:
- Recomendar itens para usuários com base em suas interações anteriores, criando uma experiência verdadeiramente personalizada para seus usuários.
- Fornecer uma lista de itens ou resultados de pesquisa adaptados a cada usuário, aumentando o engajamento ao mostrar itens por relevância para o usuário.
- Encontrar recomendações de itens semelhantes, ajudando os usuários a descobrir coisas novas.
No guia a seguir, vamos nos concentrar na receita de recomendações personalizadas para o usuário.
Conjuntos de dados
Para começar a usar os modelos de recomendação do Amazon Personalize, você precisa de três tipos de conjuntos de dados:
- Interações
- Armazena interações históricas entre usuários e itens
- Exige os valores
USER_ID,ITEM_ID,EVENT_TYPEeTIMESTAMPe, opcionalmente, aceita metadados sobre o evento
- Usuários
- Armazena metadados sobre os usuários
- Exige um valor
USER_IDe pelo menos um campo de metadados (string ou numérico), como gênero, idade, programa de fidelidade
- Itens
- Armazena metadados sobre os itens
- Exige um
ITEM_IDe pelo menos um campo de metadados (textual, categórico ou numérico) que descreva o item
Para uma receita de recomendações de usuário, você deve fornecer um conjunto de dados de interações contendo pelo menos 1000 pontos de dados de interação de, no mínimo, 25 usuários únicos com pelo menos duas interações cada. Esses conjuntos de dados podem ser enviados em massa usando arquivos CSV armazenados no S3 ou de forma incremental pela API.
Criando modelos
Etapa 1: Treinamento
Depois que os conjuntos de dados forem importados, você pode criar uma solução. Uma solução usa uma das receitas (algoritmos) do Amazon Personalize para treinar um modelo. No nosso caso, usaremos a receita USER_PERSONALIZATION. O treinamento da solução cria uma versão da solução (modelo treinado) que você pode avaliar com base nas métricas de desempenho do modelo.
O Amazon Personalize permite ajustar os hiperparâmetros que o modelo usa para treinamento. Por exemplo:
- O parâmetro “User history length percentile” encontrado no console do Amazon Personalize permite ajustar o percentil do histórico do usuário a ser incluído no treinamento:
min_user_history_length_percentile: exclui uma porcentagem de usuários com históricos muito curtos, o que pode ajudar a eliminar itens populares e criar recomendações com base em padrões subjacentes mais profundos.max_user_history_length_percentile: ajusta a porcentagem de usuários a ser levada em conta ao treinar com históricos muito longos.
O número de dimensões ocultas ajuda a detectar padrões mais complexos em conjuntos de dados elaborados, enquanto a técnica de retropropagação através do tempo (BPTT) ajusta as recompensas de um evento inicial após uma cadeia de eventos que resultou em uma ação de alto valor.
Além disso, o Amazon Personalize oferece ajuste automático de hiperparâmetros executando várias versões da solução com valores diferentes simultaneamente. Para usar o ajuste, ative Perform HPO ao criar uma solução.
Etapa 2: Avaliar e comparar
Quando uma solução termina o treinamento, você pode avaliá-la e comparar diferentes versões. Cada versão da solução exibe métricas calculadas. Algumas das métricas disponíveis incluem:
- Ganho cumulativo descontado normalizado: compara a ordem recomendada dos itens com a lista real de itens e atribui um peso a cada item correspondente à sua posição na lista
- Precisão @k: a quantidade de itens recomendados corretamente dividida pela quantidade total de itens recomendados, onde
ké o número de itens - Ranking recíproco médio: foca na primeira recomendação de classificação mais alta e calcula quantos itens recomendados são vistos antes de a primeira recomendação correspondente aparecer
- Cobertura: a proporção de itens recomendados únicos em relação ao número total de itens únicos no conjunto de dados
Obtendo recomendações
Depois de criar uma versão de solução com a qual você está satisfeito, é hora de colocar as recomendações em uso. Existem duas maneiras de acessar as recomendações:
- Campaign em tempo real
Uma campaign é uma versão de solução implantada com uma taxa mínima de transações definida. Uma transação é uma única chamada de API para obter a saída de recomendação, e é definida como TPS, ou transações por segundo, com um valor mínimo de uma. A campaign escalará recursos em caso de aumento de carga, mas não ficará abaixo do seu valor mínimo. Você pode consultar as recomendações no console, na AWS CLI ou por meio dos AWS SDKs no seu código. - Job em lote
Um job em lote exporta as recomendações para um bucket S3. O job recebe como entrada um arquivo JSON com uma lista de IDs de usuários para os quais você deseja exportar as recomendações. Depois de especificar as permissões corretas e o destino de saída, você está pronto para executar o job. O tempo de execução depende do tamanho dos seus conjuntos de dados e do comprimento da lista de recomendações.
Filtros
Os filtros permitem ajustar a saída de recomendação excluindo itens com base no ID do item, tipo de evento ou metadados. Você também pode filtrar usuários com base em seus metadados, como idade ou status de participação no programa de fidelidade, e evitar recomendar itens com os quais o usuário já interagiu.
Integrando resultados com a Braze
Com o modelo e a campanha de recomendações criados, você está pronto para executar uma campanha na Braze para seus usuários usando Content Cards e Connected Content. Antes de executar uma campanha na Braze, é necessário criar um serviço que possa fornecer essas recomendações por meio de uma API. Você pode seguir a etapa 3 no artigo do workshop para implantar o serviço usando os serviços da AWS. Você também pode implantar seu próprio serviço de backend independente que fornece as recomendações.
Caso de uso de campanha com Content Cards
Vamos executar uma campanha de Content Cards com o primeiro item recomendado da lista.
Nos exemplos a seguir, vamos consultar o endpoint
GET http://<service-endpoint.com>/recommendations?user_id=user123 com um parâmetro user_id que retornará uma lista de itens recomendados:
[
{
"id": "abc123",
"url": "http://productpage.com/product/abc123",
"name": "First Item",
"price": 39.99,
"image": "http://pp.cdn.com/abvh3321pjb1j"
},
{
"id": "xyz987",
"url": "http://productpage.com/product/xyz987",
"name": "Great Item",
"price": 19.99,
"image": "http://pp.cdn.com/234bjl1gioj1b2b"
},
...
]
No dashboard da Braze, crie uma nova campanha de Content Cards. No campo de texto da mensagem, crie um bloco Liquid de Connected Content para consultar a API e salvar a resposta na variável recommendations:
{% connected_content https:/<service-endpoint.com>/recommendations?user_id={{${user_id}}} :save recommendations %}
Em seguida, você pode referenciar o primeiro item no array resultante e exibir o conteúdo para o usuário:
This seems like a great fit for you:
{% recommendations[0].name %}
{% recommendations[0].price %}
Incluindo o título, a imagem e vinculando a URL, este é o visual completo do Content Card:
