Etiquetado de metadatos y agrupación de usuarios
Intelligent Recommendations se pueden utilizar para mejorar la personalización relevante para los usuarios finales, incluso cuando son anónimos. Los clientes pueden integrar una experiencia personalizada de etiquetado de metadatos para su escaparate. Esta experiencia se logra utilizando la capacidad de identificar etiquetas de metadatos para contenido (como artículos escritos, podcasts, videos, productos minoristas, etc.) y recomendar etiquetas o contenido similares según el gusto/preferencia de ese usuario. Los metadatos del usuario pueden ser útiles para recomendar contenido relevante a todos los usuarios, incluidos:
- Clientes nuevos o poco frecuentes (también conocidos como "usuarios en frío").
- Conexión de usuarios con otros usuarios en función del etiquetado de metadatos únicos.
- Conectar a los usuarios con contenido relevante y de corto plazo.
Cuando el etiquetado de metadatos está habilitado, los usuarios pueden crear nuevos escenarios de recomendaciones como:
- Categorías de metadatos que elegimos para usted
- Otras personas también miran estas categorías
- Eventos recientes basados en su actividad reciente
- Productos/contenido similares en función de sus etiquetas de metadatos atribuidas
- Selecciones para usted basadas en segmentos de comportamiento del usuario
¿Que es una etiqueta?
Las etiquetas son una descripción de algo de interés dentro de los elementos/contenido, que atraen a los usuarios, y deben ser específicos para la actividad del usuario final. Por ejemplo, en el mundo de las películas, el género, los miembros del elenco, el estado de ánimo, etc. pueden considerarse etiquetas para una película, así como algo por lo que los usuarios finales tienen un cariño/desagrado especial. Las etiquetas pueden incluso incluir jugadores/usuarios famosos, títulos de artículos, género, categorías de productos, eventos y otra terminología de contenido. El objetivo es garantizar que a los usuarios finales se les recomiende contenido relevante que se ajuste a sus intereses/gustos/preferencias en función de los metadatos disponibles.
Información general de arquitectura
Para configurar el etiquetado de metadatos como se muestra en el diagrama de arquitectura, los requisitos previos son los siguientes:
- Almacenamiento autorizado para contenido con etiquetas de metadatos enriquecidos: catálogo.
- Comportamiento de interacción del usuario (clics en contenido/Uso). La información del perfil del usuario final también puede estar disponible para su uso.
- Una cuenta de Intelligent Recommendations separada y una instancia de modelado para comprender los intereses de los usuarios presentados como etiquetas.
- Un componente para clasificar contenido basado en etiquetas personalizadas con una consulta API en tiempo real.
Cuando está habilitado, el servicio produce un modelo de "etiquetas" personalizadas para los usuarios, basado en:
- Interacciones históricas del usuario
- Contenido rico en metadatos con "etiquetas"
- La suposición aquí es que las etiquetas se limpian (sin errores ortográficos y las etiquetas son un conjunto predeterminado y racionalizado de expertos y no se crean ni adjuntan al azar).
Configuración de contrato de datos
Para configurar un contrato de datos para admitir el etiquetado de metadatos, haga lo siguiente: tome nota de los cambios entre ItemId
, TagId
y InteractionGroupingId
.
En la sección Aplicaciones, verá ejemplos de cómo la introducción de TagID
o BucketId
cambia la configuración del contrato de datos. Sugerimos tener una cuenta de Intelligent Recommendations separada y una instancia de modelado al probar el etiquetado de metadatos.
Nombre de la capacidad de IR | CATÁLOGO Entidad de datos |
CATÁLOGO Campos de entidad de datos |
INTERACCIONES Entidad de datos |
INTERACCIONES Campos de entidad de datos |
---|---|---|---|---|
(Es necesario para todas las respuestas) | Reco_ItemsAndVariants |
ItemId como TagId Title |
||
Capacidad de filtrado (Se aplica a todas las listas) |
Reco_ItemCategories | ItemCategories: ItemId (o TagId ), Categoría |
||
La gente también ve | Reco_Interactions |
InteractionGroupingId como UserId ItemId como TagId UserId InteractionType: Compra == visto Marca de tiempo |
||
Picking para usted | Reco_Interactions | (Como la anterior) |
Aplicaciones y ejemplos
Las siguientes secciones recorren dos casos de uso comunes que se benefician del etiquetado de metadatos y brindan algunos ejemplos con datos de demostración para cada uno.
- Para obtener los "artículos más populares para usted" para usuarios en frío. Para ver un ejemplo, consulte la sección titulada "Obtenga los artículos más populares para usted para usuarios fríos".
- Para crear un mapa de aprendizaje automático de los valores de metadatos de los usuarios. Para ver un ejemplo, consulte la sección titulada "Crear un mapa ML de los valores de metadatos de los usuarios".
Aplicación 1: Obtenga los "artículos más populares para usted" para usuarios en frío
Un problema común en el mundo de AI-ML es cómo proporcionar recomendaciones relevantes a los usuarios que son clientes nuevos o poco frecuentes (también conocidos como "usuarios en frío"). Como se mencionó anteriormente, el objetivo aquí es crear algunos cubos distintos basados en categorías significativas e información demográfica disponible (es decir, edad y sexo). Luego, use todas las interacciones para conectar a todos los usuarios con sus grupos demográficos correspondientes, lo que a su vez permite que los grupos se conecten a los elementos durante la fase de entrenamiento del modelo. Durante la fase de servicio, se puede asignar un segmento demográfico de Cold User y luego usarlo para recomendar artículos, por ejemplo, "artículos más populares por segmento de usuario".
Los pasos son los siguientes:
- Prepare un depósito de usuarios con su información de metadatos.
- Cree las conexiones para el modelo en el archivo de almacenamiento de datos "Reco_Interactions.csv".
- Consulte el modelo para obtener la API de "elementos más populares por segmento de usuario".
Paso 1: Prepare un depósito de los usuarios con su información de metadatos
Algunas de las mejores prácticas al crear sus cubos son las siguientes:
- Los metadatos de usuario se pueden representar como cubos de rango. Considere usar los metadatos que tengan sentido para su dominio comercial y caso de uso. Por ejemplo, si quisiera crear un depósito para datos de edad, podría usar estos valores: Age5To11, Age30To40, etc.
- Algunos metadatos de usuario pueden incluso combinarse en grupos. Considere usar los metadatos y combinaciones que tengan sentido para su dominio comercial y caso de uso. Por ejemplo, podría combinar los datos de edad y sexo para crear grupos como este: Age20To30Male, Age20To30Female, Age30To40Male, Age30To40Female, etc.
- Una vez que se crean los depósitos, debe asignar a cada depósito un único
BucketId
.
Paso 2: Cree las conexiones para el modelo en el archivo de almacenamiento de datos "Reco_Interactions.csv"
Dependiendo de la cantidad de depósitos por encima o por debajo de 1000, la forma en que se configuran los datos en el contrato de datos puede cambiar.
Si hay MENOS de 1000 cubos
Para cada Fila de interacción, establezca el ChannelId
en el BucketId
, que corresponde (o se adapta mejor) al usuario. La fila del CSV de interacción se cambia a: InteractionGroupingID
, ItemId
, UserId
y BucketId
como ChannelId
. Un ejemplo de CSV de interacciones es el siguiente:
CSV de muestra para MENOS de 1000 cubos
Los encabezados del CSV de interacciones aparecen solo por conveniencia y no deben ser parte de los datos reales.
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Marca de tiempo | Atributo futuro | Atributo futuro | Canal | Catálogo | Punto fuerte | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
InteractionGroupingID |
ItemId |
UserId |
BucketId |
Si hay MÁS de 1000 cubos
Si hay más de 1000 depósitos de datos, crea más filas de interacción con BucketId
.
Convierta cada fila de interacción original entre un usuario y un elemento en dos nuevas filas distintas con un único InteractionGroupingId
que solo es exclusivo para estas dos filas. El ejemplo muestra:
- La fila de interacción original usando
UserId
,ItemId
yInteractionGroupingId
comoUNIQUE_ID
. - La fila de interacción adicional con
BucketId
comoItemId
.
CSV de muestra para MÁS de 1000 cubos:
Los encabezados del CSV de interacciones aparecen solo por conveniencia y no deben ser parte de los datos reales.
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Marca de tiempo | Atributo futuro | Atributo futuro | Canal | Catálogo | Punto fuerte | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UNIQUE_ID |
ItemId |
UserId |
|||||||||
UNIQUE_ID |
BucketId |
UserId |
Paso 3: Consulte el modelo para obtener la API de "elementos más populares por segmento de usuario"
Tenga en cuenta el esquema de construcción del modelo discutido anteriormente. Una vez que se haya determinado un usuario frío y su segmento demográfico, consulte el servicio punto de conexión utilizando el tipo de lista "Next Best Action" (anteriormente CART) con el BucketId
centrado en la demografía para recomendar los artículos más populares para ese segmento.
Cuando hay MENOS de 1000 cubos
Un enlace de consulta API de muestra donde el parámetro para ChannelId
se reemplaza con el valor BucketId
, que se vería así:
<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
Ejemplo 1: Menos de 1000 cubos
Supongamos un usuario con UserId
=100, con una asignación personalizada BucketId
=Age30To40, que recientemente compró un artículo con ItemId
=98005.
Este ejemplo crea una fila en el archivo "Reco_Interactions.csv", que usa un BucketId
(en el campo ChannelId
del esquema IR) que mejor coincide con el usuario (representado por UserId
en el esquema IR):
- La información de la interacción original es:
InteractionGroupingId
=1,UserId
=100,ItemId
=98005 - Observe en el ejemplo CSV, que se adjunta el
ChannelId
relevante, que mejor coincide con elUserId
. En el ejemplo, elUserId
fue emparejado con elBucketId
= Age30To40, por lo que la fila de interacción modificada es:
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Marca de tiempo | Atributo futuro | Atributo futuro | Canal | Catálogo | Punto fuerte | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 98005 | 100 | Age30To40 |
- La consulta y la respuesta de la API devuelven una lista de ItemIds, incluidos
ItemId
=43218 en la tercera posición, que es un elemento popular para los usuarios de esta categoría.
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"
}
Cuando hay MÁS de 1000 cubos
Un enlace de consulta API de muestra donde ItemId
se reemplaza con el valor BucketId
para un usuario en frío, que se vería así:
<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
Ejemplo 2: Más de 1000 cubos
Supongamos un usuario con UserId
=100, con una asignación personalizada BucketId
=Age30To40Female, que recientemente compró un artículo con ItemId
=98005.
Ahora puede usar los datos de interacción originales y construir filas en el archivo "Reco_Interactions.csv":
- La información de la interacción original es:
InteractionGroupingId
= NEW_UNIQUE_ID,UserId
=100,ItemId
=98005 - Las dos filas de información de interacción construida que debe estar en el archivo "Reco_Interactions.csv" que lee el servicio de Intelligent Recommendations:
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Marca de tiempo | Atributo futuro | Atributo futuro | Canal | Catálogo | Punto fuerte | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UNIQUE_ID |
98005 |
100 |
|||||||||
UNIQUE_ID |
Age30To40Female |
100 |
- La consulta y la respuesta de la API devuelven una lista de ItemIds, incluidos
ItemId
=43218 en la tercera posición, que es un producto popular para los usuarios en esta categoría.
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"
}
Aplicación 2: Cree un mapa ML de los valores de metadatos de los usuarios
El modelado de "etiquetas" de metadatos de usuario en lugar de interacciones directas con el usuario puede ser una modificación importante cuando el objetivo es producir un resultado que muestre qué tan conectados están los usuarios con esas etiquetas y qué etiquetas son realmente similares en cuanto a comportamiento. Asigne a cada etiqueta significativa y disponible (por ejemplo, datos demográficos como edad y sexo u otros metadatos) un identificador único, al que el servicio se refiere como TagId
. Durante la fase de entrenamiento del modelo, todos los datos de las interacciones se utilizan para crear una conexión entre los ID de usuario y los ID de etiqueta.
Durante la fase de publicación, el sistema puede proporcionar una lista personalizada de etiquetas llamando a "Selecciones para usted" con UserId
, y etiquetas similares llamando a "A la gente también le gusta" con TagId
.
Cómo usar TagIds para recomendaciones:
- Prepare una lista de valores de metadatos de usuario (etiquetas) y asigne a cada uno de ellos un
TagId
único. - Cree las conexiones para el modelo en el archivo de almacenamiento de datos Reco_Interactions.CSV.
- Consulte el modelo para obtener la API de "etiquetas personalizadas por usuario" o "etiquetas similares".
Paso 1: Prepare una lista de valores de metadatos de usuario (etiquetas) y asigne a cada uno de ellos un TagId único
Cuando se construyen valores para los datos de Edad, la segmentación sigue siendo un buen enfoque: Age5To11, Age12To18, etc.
Para otros valores de metadatos, cree un TagId separado para cada uno. Por ejemplo, si quisiéramos una categoría para Estado familiar: Single, Couple, CoupleWithKids, etc.
Paso 2: Cree las conexiones para el modelo en el archivo de almacenamiento de datos Reco_Interactions.CSV
Utilice cada interacción original entre un usuario y un elemento para construir una fila de datos de interacción con TagId
.
[!Nota:]
Algunos recordatorios importantes con este enfoque:
- Solo los datos recién construidos se utilizarán en la entidad de datos Interacciones para el modelo.
- La creación de una fila de Interacción que conecta a los Usuarios con TagIds no necesariamente tiene que estar basada en una interacción. Este es un ejemplo para ilustrar cómo se puede crear una interacción para conectar usuarios a etiquetas en el modelo.
- Para
InteractionGroupingId
podría tener sentido reutilizar la interacción original, si está disponible. De lo contrario, intente agrupar porUserId
. Durante la fase de entrenamiento del modelo, todos los datos de las interacciones se utilizan para crear una conexión entre los distintos TagIds y entre UserIDs y TagIds. Probar con diferentes formas de agrupar y luego ver cuál produce los mejores resultados relevantes es nuestra sugerencia, ya que los diferentes escenarios y patrones de uso pueden diferir.
- Fila de interacción original: con
UserId
,ItemId
,InteractionGroupingId
. A diferencia del ejemplo anterior conBucketId
, NO INCLUYA esta fila en la entrada conjunto de datos.- Nueva fila de ineracción: con
UserId
,TagId
comoItemId
,UserId
comoInteractionGroupingId
.
Un ejemplo de contrato de datos sería similar a este:
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Marca de tiempo | Atributo futuro | Atributo futuro | Canal | Catálogo | Punto fuerte | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UserId |
TagId |
UserId |
Paso 3: Consulte el modelo para obtener la API de etiquetas personalizadas por usuario o etiquetas similares
Con una construcción cuidadosa del modelo, consultar el servicio punto de conexión utilizando los tipos de lista "Selecciones para usted" y "A la gente también le gusta" produce los resultados deseados.
Una consulta API "Selecciones para usted", que devuelve los TagId recomendados para un UserId
determinado, se vería así:
<serving-endpoint>Reco/v1.0/picks?userId=<UserId>
Una consulta API "A la gente también le gusta" en la que el parámetro del elemento semilla se reemplaza por el TagId
correspondiente:
<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
Salida de respuesta de ejemplo
{
"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"
}
Ejemplo 3: consulta de identificadores de etiquetas con datos de demostración
Supongamos que un usuario con UserId
=100 ha indicado que está alineado con las siguientes etiquetas: 123 (que representa “ fanático del fútbol”), Age30To40Female, y FamilyWithKids.
Puede usar la fila de interacción original para construir las siguientes filas en el archivo "Reco_Interactions.csv": o Nuevas 3 filas de información de interacción, una para cada etiqueta para ese usuario, que debe estar en el archivo "Reco_Interactions.csv" que es leído por el servicio de Intelligent Recommendations:
![Nota]
En este ejemplo, hemos elegido agrupar por
UserId
y hemos establecidoInteractionGroupingId
igual aUserId
. También tenga en cuenta queItemId
representa aTagId
.
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | Marca de tiempo | Atributo futuro | Atributo futuro | Canal | Catálogo | Punto fuerte | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
100 | 123 | 100 | |||||||||
100 | Age30To40Female | 100 | |||||||||
100 | FamilyWithKids | 100 |
Consulta y respuestas para selecciones
Así es como se ve la solicitud construida "Selecciones para usted":
GET <serving-endpoint>/reco/v1.0/picks?UserId=100
La respuesta de selecciones devuelve una lista de 200 ItemIds (para etiquetas) que incluye, TagID
=FamilyWithKids en primera posición.
{
"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 y respuesta para similares
Así es como se ve la solicitud "Personas también" construida usando la API similar:
GET <serving-endpoint>/Reco/V1.0/Similar/FamilyWithKids?
La respuesta "A la gente también le gusta" devuelve una lista de 200 ItemIds (para etiquetas) que incluye, Age30To40Female en primera posición y FamilyWithKids en la segunda posición.
{
"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 obtener más información sobre nuestro servicio y los modelos que admitimos, consulte nuestra Guía de modelado.
Consulte también
Guía de inicio rápido: crear una cuenta IR
Preguntas y respuestas de modelado
Guía de contratos de datos
Solicitudes de API de muestra