Identificação de metadados e criação de registo de utilizadores
O Intelligent Recommendations pode ser utilizado para melhorar a personalização relevante para utilizadores finais, mesmo quando são anónimos. Os clientes podem integrar uma experiência de identificação de metadados personalizados para as respetivas montras. Esta experiência é alcançada através da utilização da capacidade de identificar etiquetas de metadados para conteúdo (como artigos escritos, podcasts, vídeos, produtos de retalho, etc.) e etiquetas ou conteúdo semelhantes recomendados com base na gosto/preferência desse utilizador. Os metadados de utilizador podem ser poderosos para recomendar conteúdo relevante para todos os utilizadores, incluindo:
- Clientes novos ou pouco frequentes (também conhecidos como "utilizadores inativos").
- Ligar utilizadores a outros utilizadores com base em identificação de metadados exclusiva.
- Ligar utilizadores a conteúdo relevante e de prazo de curta duração.
Quando a identificação de Metadados está ativada, os utilizadores podem criar novos cenários de recomendações, tais como:
- Categorias de Metadados escolhidas para si
- Outras Pessoas também veem estas categorias
- Eventos Recentes baseados na sua atividade recente
- Produtos/conteúdos semelhantes com base nas respetivas etiquetas de metadados atribuídas
- Seleções para si baseadas em registos de comportamentos de utilizador
O que é uma etiqueta?
Etiquetas são um descritor para algo de interesse nos itens/conteúdo, para os quais os utilizadores gravitam e têm de ser específicas da atividade do utilizador final. Por ex., no mundo do filmes, o género, os membros do elenco, tom, etc., podem ser considerados etiquetas para um filme, bem como algo pelo quais os utilizadores finais tenham uma afeição/aversão especial. As etiquetas podem até incluir jogadores famosos/utilizadores, títulos de Artigos, género, Categorias de Produto, eventos, outra terminologia de conteúdo. O objetivo é assegurar que os utilizadores finais são conteúdo relevante recomendado que se adequa aos respetivos interesses/gosto/preferência com base em metadados disponíveis.
Descrição geral da arquitetura
Para configurar a identificação de metadados conforme mostrado no diagrama da arquitetura, seguem-se os pré-requisitos:
- Armazenamento autoritário para conteúdo com etiquetas de metadados formatados — Catálogo.
- Comportamento de interação do utilizador (clica em conteúdo/Utilização). Também poderão estar disponíveis informações de perfil do utilizador final para utilização.
- Uma Conta do Intelligent Recommendations e da instância de modelagem separadas para compreender os interesses de utilizador apresentadas como etiquetas.
- Um componente para classificar conteúdo com base em etiquetas personalizadas com uma consulta à API em tempo real.
Quando ativado, o serviço produz um modelo de "etiquetas" personalizadas para os utilizadores, com base em:
- Interações Históricas do Utilizador
- Conteúdo rico em metadados com "etiquetas"
- Aqui assume-se que as etiquetas estão limpas (sem erros ortográficos e as etiquetas são um conjunto pré-determinado e racionalizado de especialista e não criados ou anexados aleatoriamente).
Configuração do Contrato de Dados
Para configurar um contrato de Dados para suportar a identificação de metadados, faça o seguinte: tome nota das alterações entre o ItemId
, o TagId
e o InteractionGroupingId
.
Na secção Aplicações, pode ver exemplos de como a introdução de uma TagID
ou BucketId
altera a configuração do Contrato de Dados. Sugerimos que tenha uma conta do Intelligent Recommendations e instância de modelação separadas quando testar a identificação de metadados.
Nome da Capacidade de IR | CATÁLOGO Entidade de Dados |
CATÁLOGO Campos de Entidades de Dados |
INTERAÇÕES Entidade de Dados |
INTERAÇÕES Campos de Entidades de Dados |
---|---|---|---|---|
(Obrigatório para todas as respostas) | Reco_ItemsAndVariants |
ItemId como o TagId Title |
||
Capacidade de filtragem (Aplica-se a todas as listas) |
Reco_ItemCategories | ItemCategories: ItemId (ou TagId ), Categoria |
||
As pessoas também veem | Reco_Interactions |
InteractionGroupingId como o UserId ItemId como o TagId UserId InteractionType: Compra == visto Carimbo de Data/Hora |
||
Seleções para si | Reco_Interactions | (O mesmo que o anterior) |
Aplicações e exemplos
As secções seguintes guiam-no por dois casos de utilização comum que beneficiam da identificação de metadados e fornecem alguns exemplos com dados de demonstração para cada um.
- Para obter "itens mais populares para si" para utilizadores inativos. Para ver um exemplo, consulte a secção chamada "Obter os Itens Mais Populares para si para Utilizadores Frios".
- Para criar um mapa aprendido por um computador dos valores de metadados dos Utilizadores. Para ver um exemplo, consulte a secção com o título "Criar um mapa ML dos valores de metadados dos utilizadores".
Aplicação 1: Obter "itens mais populares para si" para utilizadores inativos
Um problema comum no mundo do IA-ML É como fornecer recomendações relevantes a utilizadores que são clientes novos ou pouco frequentes (também conhecidos como "Utilizadores inativos"). Como mencionado anteriormente, o objetivo aqui é criar alguns registos distintos com base em categorias significativas e informações demográficas disponíveis (ou seja, Idade e Género). Em seguida, utilize todas as Interações para ligar todos os utilizadores aos registos demográficos correspondentes, o que permite que os registos sejam ligados a itens durante a fase de preparação do modelo. Durante a fase de servir, é possível atribuir o registo demográfico de Utilizador Inativo e, em seguida, utilizar para recomendar itens, por exemplo, "itens mais populares por registo de utilizador".
Os passos são os seguintes:
- Prepare um registo de Utilizadores com as respetivas informações de metadados.
- Crie as ligações para o modelo no ficheiro de armazenamento de dados "Reco_Interactions.csv".
- Consulte o modelo para obter a API "itens mais populares por registo de utilizadores".
Passo 1: Prepare um registo dos Utilizadores com as respetivas informações de metadados
Seguem-se algumas melhores práticas para a criação de registos:
- Os Metadados de Utilizador podem ser representados como registos de intervalo. Considere utilizar os metadados que fazem sentido para o domínio da empresa e utilize um caso. Por exemplo, se pretender criar um registo para dados de idade, poderá utilizar estes valores: Age5To11, Age30To40, etc.
- Alguns metadados de Utilizador podem até ser combinados em registos em conjunto. Considere utilizar os metadados e as combinações que fazem sentido para o domínio da empresa e utilize um caso. Por exemplo, pode combinar dados de Idade e de Género para registos como este: Age20To30Male, Age20To30Female, Age30To40Male, Age30To40Female, etc.
- Após a criação de registos, é necessário atribuir a cada registo um
BucketId
exclusivo.
Passo 2: Crie as ligações para o modelo no ficheiro de armazenamento de dados "Reco_Interactions.csv"
Dependendo do número de registos que estão acima ou abaixo de 1000, a forma como os dados são configurados no Contrato de Dados pode divergir.
Se houver MENOS de 1000 registos
Por cada Linha de Interação, define ChannelId
para o BucketId
, o que corresponde a (ou melhor se adequa) ao utilizador. A linha CSV de Interação é alterada para: InteractionGroupingID
, ItemId
, UserId
e BucketId
como o ChannelId
. Segue-se um exemplo do CSV Interações:
CSV de Amostra para MENOS de 1000 registos
Os Cabeçalhos do CSV de Interações aparecem apenas para comodidade 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 1000 registos
Se houver mais de 1000 registos de dados, pode criar mais linhas de interação utilizando o BucketId
.
Transforme cada linha de interação original entre um Utilizador e um Item em duas linhas novas e distintas com um InteractionGroupingId
exclusivo, que é exclusivo apenas destas duas linhas. O exemplo mostra:
- A linha de interação original que utiliza
UserId
, oItemId
e oInteractionGroupingId
comoUNIQUE_ID
. - A linha de interação adicional com o
BucketId
comoItemId
.
CSV de Amostra para MAIS de 1000 registos:
Os Cabeçalhos do CSV de Interações aparecem apenas para comodidade 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 |
Passo 3: Consulte o modelo para obter a API "itens mais populares por registo de utilizadores"
Considere o contorno de construção do modelo mencionado anteriormente. Depois de um Utilizador Inativo e o respetivo registo demográfico ter sido determinado, consulte o Ponto Final de Servir utilizando o tipo de lista "Melhor Ação Seguinte" (anteriormente, CART) com o BucketId
focado em demografia para recomendar os Itens mais populares para esse registo.
Quando houver MENOS de 1000 registos
Uma ligação de Consulta de API de amostra onde o parâmetro para ChannelId
é substituído pelo valor BucketId
, que tem este aspeto:
<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
Exemplo 1: Menos de 1000 registos
Suponha que um Utilizador com UserId
=100, com um BucketId
=Age30To40 personalizado atribuído, comprou recentemente um item com ItemId
=98005.
Este exemplo cria uma linha no ficheiro “Reco_Interactions.csv”, que utiliza um BucketId
(no campo ChannelId
do esquema IR) que melhor corresponde ao Utilizador (representado pelo UserId
no esquema IR):
- As informações da Interação Original são:
InteractionGroupingId
=1,UserId
=100,ItemId
=98005 - Repare no exemplo de CSV, que o
ChannelId
relevante, que melhor corresponde aoUserId
está anexado. No exemplo, oUserId
foi correspondido aoBucketId
= Age30To40, pelo que a linha Interação modificada é:
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Carimbo de Data/Hora | Atributo Futuro | Atributo Futuro | Canal | Catálogo | Ponto Forte | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
5 | 98005 | 100 | Age30To40 |
- A Consulta e Resposta da API devolvem uma lista de ItemIds, incluindo
ItemId
=43218 na terceira posição, que é um item popular para os utilizadores 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 houver MAIS de 1000 registos
Uma ligação de Consulta de API de amostra onde o ItemId
é substituído pelo BucketId
para um utilizador inativo teria este aspeto:
<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
Exemplo 2: Mais de 1000 registos
Suponha que um Utilizador com UserId
=100, com um BucketId
=Age30To40Female personalizado atribuído, comprou recentemente um item com ItemId
=98005.
Agora, já é possível utilizar os dados da interação original e criar linhas no ficheiro “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 ficheiro “Reco_Interactions.csv” que é lido pelo serviço Intelligent Recommendations:
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Carimbo de Data/Hora | Atributo Futuro | Atributo Futuro | Canal | Catálogo | Força | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UNIQUE_ID |
98005 |
100 |
|||||||||
UNIQUE_ID |
Age30To40Female |
100 |
- A Consulta e Resposta da API devolvem uma lista de ItemIds, incluindo
ItemId
=43218 na terceira posição, que é um produto popular para os utilizadores nesta 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 ML dos valores de metadados dos utilizadores
A modelação de metadados de utilizadores "Etiqueta" em vez de interações diretas com os utilizadores pode ser uma modificação poderosa quando o objetivo é produzir um resultado, o que mostra o modo como os utilizadores estão ligados a essas etiquetas e que etiquetas são verdadeiramente semelhantes por comportamento. Atribua a cada etiqueta significativa e disponível (por ex.: dados demográficos, tal como Idade e Género ou outros metadados) um identificador exclusivo, a que o serviço se refere como o TagId
. Durante a fase de preparação do Modelo, todos os dados de interações são utilizados para criar uma ligação entre UserIds e TagIds.
Durante a fase de entrega, o sistema pode fornecer uma lista personalizada de Etiquetas ao chamar "Seleções para si" com UserId
e etiquetas semelhantes ao chamar "As pessoas também gostam" com TagId
.
Como utilizar TagIds para recomendações:
- Prepare uma lista de valores de metadados de utilizador (etiquetas) e atribua a cada um deles um
TagId
exclusivo. - Crie as ligações para o modelo no ficheiro de armazenamento de dados Reco_Interactions.CSV.
- Consulte o modelo para obter a API "etiquetas personalizadas por utilizador" ou "etiquetas semelhantes".
Passo 1: Prepare uma lista de valores de metadados de utilizador (etiquetas) e atribua a cada um deles um TagId exclusivo
Ao construir valores para dados de Idade, os registos continuam a ser uma boa abordagem: Age5To11, Age12To18, etc.
Para outros valores de metadados, crie um TagId separado para cada. Por exemplo, se pretendêssemos uma categoria para o Estado Familiar: Single, Couple, CoupleWithKids, etc.
Passo 2: Crie as ligações para o modelo no ficheiro de armazenamento de dados Reco_Interactions.CSV
Utilize cada Interação original entre um Utilizador e Item, para construir uma linha de dados da Interação com o TagId
.
[!Nota:]
Alguns lembretes importantes com esta abordagem:
- Apenas os dados recém-construídos serão utilizados na entidade de dados de Interações para o modelo.
- A criação de uma linha de Interação que liga Utilizadores a TagIds não tem necessariamente de ser baseada numa interação. Este é um exemplo para ilustrar como pode criar uma Interação para ligar Utilizadores a Etiquetas no modelo.
- Para o
InteractionGroupingId
poderá fazer sentido reutilizar a Interação original, se estiver disponível. Caso contrário, tente agrupar porUserId
. Durante a fase de preparação do Modelo, todos os dados de interações são utilizados para criar uma ligação entre os diferentes TagIds e entres UserIDs e TagIds. A tentativa de agrupar diferentes formas de agrupar e, em seguida, de ver quais os resultados mais relevantes é a nossa sugestão, pois diferentes cenários e padrões de utilização podem ser diferentes.
- Linha de Interação original: com
UserId
,ItemId
,InteractionGroupingId
. Ao contrário do exemplo acima comBucketId
, NÃO INCLUA esta linha no conjunto de dados.- NOVA linha de Interação: com
UserId
,TagId
como oItemId
,UserId
como oInteractionGroupingId
.
Um Contrato de Dados de exemplo teria este aspeto:
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Carimbo de Data/Hora | Atributo Futuro | Atributo Futuro | Canal | Catálogo | Ponto Forte | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UserId |
TagId |
UserId |
Passo 3: Consulte o modelo para obter etiquetas personalizadas por utilizador ou etiquetas semelhantes
Com a construção de modelos cuidadosa, consultar o Ponto final de Servir utilizando os tipos de lista "Escolhidos para si" e "Pessoas também gostam" apresentam os resultados pretendidos.
Uma Consulta à API "Seleções para si", que devolve as TagIds recomendadas para um determinado UserId
teria este aspeto:
<serving-endpoint>Reco/v1.0/picks?userId=<UserId>
Uma Consulta à API "As pessoas também gostam" onde o parâmetro de item de propagação é substituído pelo TagId
correspondente:
<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
Saída de resposta de amostra
{
"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 para tagIds com dados de demonstração
Assuma que um Utilizador com UserId
=100 indicou que está alinhado com as seguintes etiquetas: 123 (o que representa "Adepto de futebol"), Age30To40Female e FamilyWithKids.
Pode utilizar a linha de interação original para construir as seguintes linhas no ficheiro “Reco_Interactions.csv”: o Novas 3 linhas de informações de Interação, uma para cada Etiqueta para esse Utilizador, que deverá estar no ficheiro “Reco_Interactions.csv” que é lido pelo serviço Intelligent Recommendations:
![Nota]
Neste exemplo, optámos por agrupar por
UserId
e definimos oInteractionGroupingId
igual aoUserId
. Note também que oItemId
está a representar oTagId
.
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 | FamilyWithKids | 100 |
Consulta e respostas para seleções
Eis o aspeto do pedido "Seleções para si" construído:
GET <serving-endpoint>/reco/v1.0/picks?UserId=100
A Resposta de Seleções devolve uma Lista de 200 ItemIds (para etiquetas), 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
Eis o aspeto do pedido "As pessoas também" construído utilizando a API Semelhantes:
GET <serving-endpoint>/Reco/V1.0/Similar/FamilyWithKids?
A Resposta "Pessoas também gostam" devolve uma Lista de 200 ItemIds (para etiquetas), 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 obter mais informações sobre o nosso serviço e os modelos que suportamos, consulte o nosso Guia de Modelação.
Consulte também
Guia de Início Rápido: Criar uma Conta de IR
Perguntas e Respostas sobre Modelação
Guia do Contrato de Dados
Pedidos de API de Amostra