Compartilhar via


Marcação de metadados e particionamento de usuários

As Recomendações Inteligentes podem ser usadas para melhorar a personalização relevante para os usuários finais, mesmo quando eles são anônimos. Os clientes podem integrar uma experiência personalizada de marcação de metadados para sua vitrine. Essa experiência é obtida usando a possibilidade de identificar marcas de metadados para conteúdo (como artigos escritos, podcasts, vídeos, produtos de varejo, etc.) e recomendar marcas ou conteúdo semelhantes com base nos gostos/preferências desse usuário. Os metadados do usuário podem ser poderosos para recomendar conteúdo relevante a todos os usuários, incluindo:

  • Clientes novos ou pouco frequentes (também conhecidos como "usuários frios").
  • Conectar usuários a outros usuários com base na marcação exclusiva de metadados.
  • Conectar usuários a conteúdo relevante e de curto prazo.

Quando a marcação de metadados está habilitada, os usuários podem criar cenários de recomendações, como:

  • Categorias de metadados que escolhemos para você
  • Outras pessoas também olham essas categorias
  • Eventos recentes com base em sua atividade recente
  • Produtos/conteúdos semelhantes com base em nas marcas de metadados atribuídas
  • Escolhas para você com base nos buckets de comportamento do usuário

O que é uma marca?

Marcas são um descritor para algo de interesse nos dos itens/conteúdo, para o qual os usuários gravitam, e devem ser específicas para a atividade do usuário final. Por exemplo, no mundo dos filmes, gênero, membros do elenco, tom, etc. podem ser considerados marcas para um filme, bem como algo pelo qual os usuários finais têm um gosto especial/não gostam. As marcas podem até incluir jogadores/usuários famosos, títulos de artigos, gênero, categorias de produtos, eventos e outras terminologias de conteúdo. O objetivo é garantir que os usuários finais recebam conteúdo relevante recomendado que atenda aos seus interesses/gostos/preferências com base nos metadados disponíveis.

Visão geral da arquitetura

Para configurar a marcação de metadados conforme mostrado no diagrama de arquitetura, os pré-requisitos são os seguintes:

  1. Armazenamento impositivo para conteúdo com marcas de metadados avançadas – Catálogo.
  2. Comportamento de interação do usuário (cliques no conteúdo/Uso). As informações do perfil do usuário final também podem estar disponíveis para uso.
  3. Uma Conta de Recomendações Inteligentes separada e instância de modelagem para entender os interesses do usuário apresentados como marcas.
  4. Um componente para classificar o conteúdo com base em marcas personalizadas com uma consulta de API em tempo real.

Esta imagem mostra o esboço da arquitetura para configurar a marcação de metadados em uma conta separada de recomendações inteligentes.

Quando habilitado, o serviço produz um modelo de "tags" personalizados para os usuários, com base em:

  1. Interações históricas do usuário
  2. Conteúdo rico em metadados com "marcas"
    1. A suposição aqui é que as tags são limpas (sem erros de ortografia e as tags são um conjunto predeterminado e racionalizado de especialistas e não criados ou anexados aleatoriamente).

Configuração do Contrato de Dados

Para configurar um Contrato de dados para oferecer suporte à marcação de metadados, faça o seguinte: observe as alterações entre a ItemId, a TagId e a InteractionGroupingId.

Na seção Aplicativos, você vê exemplos de como a introdução de um TagID ou BucketId altera a configuração do Contrato de Dados. Sugerimos ter uma conta separada de Recomendações Inteligentes e uma instância de modelagem ao testar a marcação de metadados.

Nome da capacidade do IR CATÁLOGO
Entidade de Dados
CATÁLOGO
Campos de Entidade de Dados
INTERAÇÕES
Entidade de Dados
INTERAÇÕES
Campos de Entidade de Dados
(Necessário para todas as respostas) Reco_ItemsAndVariants ItemId como a TagId
Title
Capacidade de filtragem
(Aplica-se a todas as listas)
Reco_ItemCategories ItemCategories: ItemId (ou TagId), Categoria
As pessoas também viram Reco_Interactions InteractionGroupingId como a UserId
ItemId como a TagId
UserId
InteractionType: Compra == visualizada
Carimbo de data/hora
Sugestões Reco_Interactions (Mesmo que a anterior)

Aplicativos e exemplos

As seções a seguir abordam dois casos de uso comuns que se beneficiam da marcação de metadados e fornecem alguns exemplos com dados de demonstração para cada um.

  1. Para obter "itens mais populares para você" para usuários frios. Para ver um exemplo, consulte a seção chamada "Obter os itens mais populares para usuários frios".
  2. Para criar um mapa com machine learning dos valores de metadados dos usuários. Para ver um exemplo, consulte a seção chamada "Criar um mapa de ML dos valores de metadados dos usuários".

Um problema comum no mundo da AI-ML é como fornecer recomendações relevantes para usuários que são clientes novos ou pouco frequentes (também conhecidos como "usuários frios"). Conforme mencionado anteriormente, o objetivo aqui é criar alguns intervalos distintos com base em categorias significativas e informações demográficas disponíveis (ou seja, Idade e Sexo). Em seguida, use todas as interações para conectar todos os usuários aos seus buckets demográficos correspondentes, o que, por sua vez, permite que os intervalos sejam conectados a itens durante a fase de treinamento do modelo. Durante a fase de veiculação, um segmento demográfico de Cold User pode ser atribuído e usado para recomendar itens, por exemplo, "itens mais populares por segmento de usuário".

As etapas são as seguintes:

  1. Prepare um particionamento de usuários com suas informações de metadados.
  2. Crie as conexões para o modelo no arquivo de armazenamento de dados "Reco_Interactions.csv".
  3. Consulte o modelo para obter a API de "itens mais populares por grupo de usuários".

Etapa 1: Preparar um particionamento dos usuários com suas informações de metadados

Algumas melhores prática ao criar seus buckets são as seguintes:

  • Os metadados do usuário podem ser representados como buckets à distância. Use os metadados que fazem sentido para seu domínio de negócios e caso de uso. Por exemplo, se quiser criar um bucket para dados de idade, você poderá usar estes valores: Age5To11, Age30To40, etc.
  • Alguns metadados do usuário podem até ser combinados em buckets. Use os metadados e combinações que façam sentido para seu domínio de negócios e caso de uso. Por exemplo, você pode combinar os dados de Idade e Sexo para criar buckets como este: Age20To30Male, Age20To30Female, Age30To40Male, Age30To40Female, etc.
  • Depois que os buckets são criados, você precisa atribuir a cada bucket um único BucketId.

Etapa 2: Criar as conexões para o modelo no arquivo de armazenamento de dados "Reco_Interactions.csv"

Dependendo do número de buckets acima ou abaixo de 1.000, a forma como os dados são configurados no contrato de dados pode mudar.

Se houver MENOS de 1.000 buckets

Para cada Linha de Interação, você define o ChannelId como o BucketId, que corresponde (ou melhor se ajusta) ao usuário. A linha CSV de interação é alterada para: InteractionGroupingID, ItemId, UserId e BucketId como o ChannelId. Um exemplo do CSV Interações é mostrado conforme a seguir:

Exemplo de CSV para MENOS de 1.000 buckets

Os cabeçalhos do CSV Interações aparecem somente por conveniência e não devem fazer parte dos dados reais.

InteractionGroupingId ItemId ItemVariantId UserId InteractionType Carimbo de data/hora Atributo Futuro Atributo Futuro Canal Catálogo Ponto Forte IsPositive
InteractionGroupingID ItemId UserId BucketId
Se houver MAIS de 1.000 buckets

Se houver mais de 1.000 depósitos de dados, você criará mais linhas de interação usando BucketId. Transforme cada linha de interação original entre um usuário e um item em duas novas linhas distintas com uma InteractionGroupingId exclusiva que seja exclusiva somente apenas para essas duas linhas. O exemplo mostra:

  1. A linha de interação original usando a UserId, a ItemId e a InteractionGroupingId como UNIQUE_ID.
  2. A linha de interação adicional com a BucketId como a ItemId.
Exemplo de CSV para MENOS de 1.000 buckets:

Os cabeçalhos do CSV Interações aparecem somente por conveniência e não devem fazer parte dos dados reais.

InteractionGroupingId ItemId ItemVariantId UserId InteractionType Carimbo de data/hora Atributo Futuro Atributo Futuro Canal Catálogo Ponto Forte IsPositive
UNIQUE_ID ItemId UserId
UNIQUE_ID BucketId UserId

Leve em consideração o esboço de construção do modelo discutido anteriormente. Depois que um Cold User e seu intervalo demográfico forem determinados, consulte o ponto de extremidade de exibição usando o tipo de lista "Próxima Melhor Ação" (anteriormente CART) com o foco demográfico BucketId para recomendar os itens mais populares para esse bucket.

Quando há MENOS de 1.000 buckets

Um exemplo de link de consulta de API em que o parâmetro para ChannelId é substituído pelo valor BucketId, que se pareceria com isso:

<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
Exemplo 1: Menos de 1.000 buckets

Suponha que um Usuário com UserId=100, com uma atribuição personalizada BucketId=Age30To40, que comprou recentemente um item com ItemId=98005. Este exemplo cria uma linha no arquivo "Reco_Interactions.csv", que usa um BucketId (no campo ChannelId do esquema IR) que melhor corresponde ao usuário (representado por UserId no esquema IR):

  • As informações da interação original são: InteractionGroupingId=1, UserId=100, ItemId=98005
  • Observe no CSV de exemplo que o ChannelId relevante, que melhor corresponde ao UserId foi anexado. No exemplo, oUserId foi correspondido ao BucketId= Age30To40, então a linha de interação modificada é:
InteractionGroupingId ItemId ItemVariantId UserId InteractionType Carimbo de data/hora Atributo Futuro Atributo Futuro Canal Catálogo Ponto Forte IsPositive
1 98005 100 Age30To40
  • A Consulta e a Resposta da API retornam uma lista de ItemIds, incluindo ItemId=43218 na terceira posição, que é um item popular para usuários desta categoria.
Consulta API
GET <serving-endpoint>/reco/v1.0/Popular?ChannelId=Age30To40
Response
{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "65106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "43218",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Popular",
    "longTitle": "Popular",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}
Quando há MAIS de 1.000 buckets

Um exemplo de link de consulta de API em que a ItemId é substituída pela BucketId, para um usuário frio se pareceria com isso:

<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
Exemplo 2: Mais de 1.000 buckets

Suponha que um Usuário com UserId=100, com uma atribuição personalizada BucketId=Age30To40Female, que comprou recentemente um item com ItemId=98005. Agora você pode usar os dados de interação originais e construir linhas no arquivo "Reco_Interactions.csv":

  • As informações da interação original são: InteractionGroupingId= NEW_UNIQUE_ID, UserId=100, ItemId=98005
  • As duas linhas de informações de interação construídas que devem estar no arquivo "Reco_Interactions.csv" que é lido pelo serviço de Recomendações Inteligentes:
InteractionGroupingId ItemId ItemVariantId UserId InteractionType Carimbo de data/hora Atributo Futuro Atributo Futuro Canal Catálogo Ponto Forte IsPositive
UNIQUE_ID 98005 100
UNIQUE_ID Age30To40Female 100
  • A Consulta e a Resposta da API retornam uma lista de ItemIds, incluindo ItemId=43218 na terceira posição, que é um produto popular para usuários desta categoria.
Consulta API
GET <serving-endpoint>/reco/v1.0/Cart/Age30To40Female? 
Response
{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "65106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "43218",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Cart",
    "longTitle": "FrequentlyBoughtTogether",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}

Aplicação 2: Criar um mapa de ML dos valores de metadados dos usuários

Modelar "Marcas" de metadados do usuário no lugar de interações diretas com o usuário pode ser uma modificação poderosa quando o objetivo é produzir um resultado, que mostra como os usuários estão conectados com essas marcas e quais marcas são realmente semelhantes em comportamento. Atribua a cada marca significativa e disponível (por exemplo, informações demográficas como Idade e Sexo ou outros metadados) um identificador exclusivo, ao qual o serviço se refere como a TagId. Durante a fase de treinamento do modelo, todos os dados de interação são usados para criar uma conexão entre UserIds e TagIds.

Durante a fase de veiculação, o sistema pode fornecer uma lista personalizada de Marcas chamando "Sugestões" com a UserId, e marcas semelhantes chamando "As pessoas também gostaram" com a TagId.

Como usar TagIds para recomendações:

  1. Prepare uma lista de valores de metadados do usuário (marcas) e atribua a cada uma delas uma TagId.
  2. Crie as conexões para o modelo no arquivo de armazenamento de dados "Reco_Interactions.CSV".
  3. Consulte o modelo para obter a API "marcas personalizadas por usuário" ou "marcas semelhantes".

Etapa 1: Preparar uma lista de valores de metadados do usuário (marcas) e atribuir a cada uma delas uma TagId

Ao construir valores para dados de Idade, o particionamento ainda é uma boa abordagem: Age5To11, Age12To18, etc.

Para outros valores de metadados, crie uma TagId separada para cada um. Por exemplo, se quisermos uma categoria para Status Familiar: Solteiro, Casal, CasalComFilhos, etc.

Etapa 2: Criar as conexões para o modelo no arquivo de armazenamento de dados "Reco_Interactions.CSV"

Use cada Interação original entre um Usuário e um Item para construir uma linha de dados de Interação com a TagId. [!Observação:]

Alguns lembretes importantes com essa abordagem:

  1. Somente os dados recém-construídos serão usados na entidade de dados Interações para o modelo.
  2. A criação de uma linha de Interação que conecta Usuários a TagIds não precisa necessariamente ser baseada em uma interação. Este é um exemplo para ilustrar como se pode criar uma Interação para conectar Usuários a Marcas no modelo.
  3. Na InteractionGroupingId pode fazer sentido reutilizar a interação original, se disponível. Caso contrário, tente agrupar por UserId. Durante a fase de treinamento do modelo, todos os dados de interação são usados para criar uma conexão entre as diferentes TagIds e entre as UserIds e TagIds. Tentar diferentes maneiras de agrupar e ver qual produz os melhores resultados relevantes é nossa sugestão, pois diferentes cenários e padrões de uso podem diferir.
    1. Linha de interação original: com UserId, ItemId, InteractionGroupingId. Diferentemente do exemplo acima com BucketId, NÃO INCLUA esta linha no conjunto de dados de entrada.
    2. NOVA Linha de interação: com a UserId, TagId como a ItemId, UserId como a InteractionGroupingId.

Um exemplo de Contrato de Dados ficaria assim:

InteractionGroupingId ItemId ItemVariantId UserId InteractionType Carimbo de data/hora Atributo Futuro Atributo Futuro Canal Catálogo Ponto Forte IsPositive
UserId TagId UserId

Etapa 3: Consultar o modelo para obter marcas personalizadas por usuário ou marcas semelhantes

Com uma construção de modelo cuidadosa, consultar o Ponto de Extremidade de Veiculação usando os tipos de lista "Escolhas para você" e "Pessoas também gostam" produz os resultados desejados.

Uma consulta de API "Sugestões", que retorna as TagIds recomendadas para uma determinada UserId ficaria assim:

<serving-endpoint>Reco/v1.0/picks?userId=<UserId>

Uma consulta de API "As pessoas também gostaram" em que o parâmetro item de propagação é substituído pela TagId correspondente:

<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
Saída da resposta do exemplo
{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "68100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62500",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61504",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "65103",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61401",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "personalizationConfidence": 1.0,
    "pagingInfo": {
        "totalItems": 139
    },
    "status": "Success"
}

Exemplo 3: Consulta de tagIds com dados de demonstração

Suponha que um Usuário com UserId=100 indicou que está alinhado com as seguintes tags: 123 (que representa "fã de futebol"), Age30To40Female e FamíliaComCrianças.

Você pode usar a linha de interação original para construir as seguintes linhas no arquivo "Reco_Interactions.csv": as informações de Novas 3 linhas de interação, uma para cada Marca para esse Usuário, que deve estar no arquivo "Reco_Interactions.csv" que é lido pelo serviço de Recomendações Inteligentes:

![Observação]

Neste exemplo, escolhemos agrupar por UserId e definimos a InteractionGroupingId igual a UserId. Observe também que a ItemId está representando a TagId.

InteractionGroupingId ItemId ItemVariantId UserId InteractionType Carimbo de data/hora Atributo Futuro Atributo Futuro Canal Catálogo Ponto Forte IsPositive
100 123 100
100 Age30To40Female 100
100 FamíliaComCrianças 100
Consulta e respostas para sugestões

Veja a aparência da solicitação "Sugestões" construída:

GET <serving-endpoint>/reco/v1.0/picks?UserId=100

A Resposta das Sugestões retorna uma lista de 200 ItemIds (para tags), incluindo, TagID=FamilyWithKids na primeira posição.

{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "FamilyWithKids",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "625",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "Sports",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "651",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "611",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "personalizationConfidence": 1.0,
    "pagingInfo": {
        "totalItems": 139
    },
    "status": "Success"
}

Consulta e resposta para semelhantes

Veja a aparência da solicitação "Pessoas também" construída usando a API semelhante:

GET <serving-endpoint>/Reco/V1.0/Similar/FamilyWithKids?

A resposta "As pessoas também gostam" retorna uma lista de 200 ItemIds (para tags), incluindo, Age30To40Female na primeira posição e FamilyWithKids na segunda posição.


{
    "id": "Similar",
    "name": "Similar",
    "version": "v1.0",
    "items": [
        {
            "id": "Age30To40Female",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "FamilyWithKids",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "SportsParent",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "651",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "123",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "People also like",
    "longTitle": "People also like",
    "titleId": 6,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}

Para saber mais sobre nosso serviço e os modelos compatíveis, confira nosso Guia de modelagem.

Confira também

Guia de início rápido: criar uma conta de IR
Perguntas e respostas sobre modelagem
Guia do Contrato de Dados
Exemplos de solicitações de API