Contexto y acciones
Importante
A partir del 20 de septiembre de 2023, no podrá crear nuevos recursos de Personalizer. El servicio Personalizer se va a retirar el 1 de octubre de 2026.
Personalizer funciona aprendiendo lo que la aplicación debería mostrar a los usuarios en un contexto determinado. Estos son los dos fragmentos de información más importantes que pasa a Personalizer. El contexto representa la información que tiene sobre el usuario actual o el estado del sistema, y las acciones son las opciones entre las que elegir.
Context
La información del contexto depende de cada aplicación y caso de uso, pero habitualmente pueden incluir información como:
- Información demográfica y de perfil del usuario.
- Información extraída de los encabezados HTTP, como el agente de usuario, o derivada de la información de HTTP, como las búsquedas geográficas inversas basadas en direcciones IP.
- Información acerca de la hora actual, como el día de la semana, si es fin de semana o no, si por la mañana o por la tarde, si son vacaciones de Navidad o no, etc.
- Información extraída de aplicaciones para dispositivos móviles, como la ubicación, el movimiento o el nivel de batería.
- Elementos agregados al historial relativos al comportamiento de los usuarios (como cuáles son los géneros cinematográficos que más veces ha visto el usuario).
- Información sobre el estado del sistema.
La aplicación es responsable de cargar la información acerca del contexto de las bases de datos, los sensores y los sistemas relevantes que pueda tener. Si la información de contexto no cambia, puede agregar la lógica de la aplicación para almacenar esta información en la caché antes de enviarla a la API Rank.
Acciones
Las acciones representan una lista de opciones.
No envíe más de 50 acciones cuando clasifique por orden de prioridad las acciones. Pueden ser siempre las mismas 50 acciones o pueden cambiar cada vez. Por ejemplo, si tiene un catálogo de productos de 10 000 elementos para una aplicación de comercio electrónico, puede usar una recomendación o un motor de filtrado para determinar los 40 que más pueden gustar a un cliente y usar Personalizer para encontrar el que generará la máxima recompensa para el contexto actual.
Ejemplos de acciones
Las acciones que envíe a la API Rank dependerán de lo que intente personalizar.
Estos son algunos ejemplos:
Propósito | Acción |
---|---|
Personalizar qué artículo está resaltado en un sitio web de noticias. | Cada acción es una potencial noticia. |
Optimizar la colocación de anuncios en un sitio web. | Cada acción será un diseño o reglas para crear un diseño para los anuncios (por ejemplo, en la parte superior, a la derecha, imágenes pequeñas, imágenes grandes). |
Mostrar una clasificación personalizada de elementos recomendados en un sitio web de compras. | Cada acción es un producto concreto. |
Sugerir elementos de la interfaz de usuario, como filtros, para aplicarlos a una foto concreta. | Cada acción puede ser un filtro diferente. |
Elegir la respuesta de un bot de chat para clarificar la intención del usuario o sugerir una acción. | Cada acción es una opción de cómo interpretar la respuesta. |
Elegir lo que se va a mostrar al principio de una lista de resultados de búsqueda | Cada acción es uno de los primeros resultados de la búsqueda. |
Carga de acciones desde la aplicación cliente
Las características de las acciones normalmente pueden proceder de sistemas de administración de contenido, catálogos y sistemas de recomendación. La aplicación es responsable de cargar la información acerca de las acciones de las bases de datos y sistemas relevantes que tenga. Si las acciones no cambian o se cargan cada que hay un impacto innecesario en el rendimiento, puede agregar lógica a la aplicación para almacenar esta información en la caché.
Evitar que se clasifiquen las acciones
En algunos casos, hay acciones que no desea que se muestren a los usuarios. La mejor manera de evitar que una acción se clasifique es agregarla a la lista de Acciones excluidas o no pasarla a la solicitud de clasificación.
En algunos casos, es posible que no quiera que los eventos se entrenen de forma predeterminada. En otras palabras, solo quiere entrenar eventos cuando se cumple una condición específica. Por ejemplo, la parte personalizada de la página web está debajo del plegado (los usuarios tienen que desplazarse antes de interactuar con el contenido personalizado). En este caso, representará toda la página, pero solo querrá que se entrene un evento cuando el usuario se desplace y tenga la oportunidad de interactuar con el contenido personalizado. En estos casos, debe aplazar la activación de eventos para evitar asignar eventos de recompensa (y entrenamiento) predeterminados con los que el usuario final no tuvo la oportunidad de interactuar.
Características
Tanto el contexto como las posibles acciones se describen mediante características. Las características representan toda la información que cree que es importante para el proceso de toma de decisiones para maximizar las recompensas. Un buen punto de partida es imaginar que tiene la tarea de seleccionar la mejor acción en cada marca de tiempo y preguntarse: "¿Qué información necesito para tomar una decisión informada? ¿Qué información tengo disponible para describir el contexto y cada acción posible?" Las características pueden ser genéricas o específicas de un elemento.
Personalizer no prescribe, limita ni corrige las características que puede enviar a las acciones y el contexto:
- Con el tiempo puede agregar y quitar características acerca del contexto y de las acciones. Personalizer sigue aprendiendo de la información disponible.
- En el caso de las características de categorías, no es necesario definir previamente los valores posibles.
- En el caso de las características numéricas, no es necesario definir previamente los intervalos.
- Se omitirán los nombres de características que empiecen con un carácter de subrayado
_
. - La lista de características puede ser grande (cientos), pero se recomienda comenzar con un conjunto de características conciso y expandir según sea necesario.
- Las características de acción pueden o no tener correlación con las características de contexto.
- Las características que no estén disponibles deben omitirse de la solicitud. Si el valor de una característica específica no está disponible para una solicitud determinada, omita la característica para esta solicitud.
- Evite enviar características con un valor NULL. Un valor NULL se procesará como una cadena con un valor de "null", que no es lo ideal.
Es correcto y natural que las características cambien con el tiempo. Sin embargo, tenga en cuenta que el modelo de aprendizaje automático de Personalizer se adapta en función de las características que ve. Si envía una solicitud en el que todas las características son nuevas, el modelo de Personalizer no podrá aprovechar los eventos anteriores para seleccionar la mejor acción para el evento actual. Tener un conjunto de características "estable" (con características periódicas) ayudará al rendimiento de los algoritmos de aprendizaje automático de Personalizer.
Características de contexto
- Algunas características de contexto solo pueden estar disponibles parte del tiempo. Por ejemplo, si un usuario ha iniciado sesión en el sitio web de la tienda de alimentación en línea, el contexto contendrá características que describen el historial de compras. Estas características no estarán disponibles para un usuario invitado.
- Debe haber al menos una característica de contexto. Personalizer no admite un contexto vacío.
- Si las características de contexto son idénticas para cada solicitud, Personalizer elegirá la mejor acción global.
Características de acción
- No todas las acciones deben contener las mismas características. Por ejemplo, en el escenario de la tienda de alimentación en línea, las palomitas para microondas tendrán una característica de "tiempo de preparación", mientras que un pepino no la tendrá.
- Las características de un identificador de acción determinado puede estar disponible un día, pero dejar de estarlo más adelante.
Ejemplos:
Los siguientes son buenos ejemplos de características para acciones. Dependen mucho de cada aplicación.
- Características con las particularidades de las acciones. Por ejemplo, ¿es una película o una serie de televisión?
- Características acerca de cómo pueden haber interactuado los usuarios con esta acción en el pasado. Por ejemplo, esta película la ven mayoritariamente personas encuadradas en los grupos demográficos A o B, y normalmente no se reproduce más de una vez.
- Características sobre las particularidades de cómo el usuario ve las acciones. Por ejemplo, ¿incluye el cartel de la película que se muestra en la miniatura caras, automóviles o paisajes?
Tipos de características que se admiten
Personalizer admite características de los tipos cadena, numérico y booleano. Es muy probable que la aplicación use principalmente características de cadena, salvo algunas excepciones.
Cómo afectan los tipos de características al aprendizaje automático en Personalizer
- Cadenas: en el caso de los tipos de cadena, cada combinación de clave-valor (nombre de característica, valor de característica) se trata como una característica "One-Hot" (por ejemplo, category:"Produce" y category:"Meat" se representarían internamente como características diferentes en el modelo de aprendizaje automático).
- Numérico: use valores numéricos solo cuando el número sea una magnitud que debería afectar proporcionalmente al resultado de la personalización. Esto depende mucho del escenario. Las características que se basan en unidades numéricas, pero cuyo significado no es lineal, como la edad, la temperatura o la estatura de una persona, se codifican mejor mediante cadenas categóricas. Por ejemplo, la edad podría codificarse como "Edad":"0-5", "Edad":"6-10", etc. La altura se puede agrupar como "Altura": "<5'0", "Altura": "5'0-5'4", "Altura": "5'5-5'5'11", "Altura":"6'0-6-4", "Altura":">6'4".
- Boolean
- Matrices Solo se admiten matrices numéricas.
Ingeniería de características
- Use tipos de categoría y cadena para las características que no sean una magnitud.
- Asegúrese de que hay suficientes características para realizar la personalización. Cuanto más precisión deba aplicarse a la hora de dirigir el contenido, más características se necesitan.
- Hay características de diversas densidades. Una característica es densa si muchos elementos se agrupan en pocos cubos. Por ejemplo, miles de vídeos se pueden clasificar como "Long" (más de 5 minutos de duración) y "Short" (menos de 5 minutos de duración). Esta es una característica muy densos. Por otro lado, los mismos miles de elementos pueden tener un atributo llamado "Title", que casi nunca tendrá el mismo valor en dos elementos. Esta es una característica no muy densa o rala.
La posesión de características de alta densidad ayuda a Personalizer a extrapolar el aprendizaje de un elemento a otro. Pero si hay solo unas pocas características y estas son muy densas, Personalizer intentará dirigir el contenido con precisión y habrá pocos cubos entre los que elegir.
Problemas comunes con el diseño y el formato de características
- Envío de características con una cardinalidad alta. Características que tienen valores únicos que no es probable que se repitan en muchos eventos. Por ejemplo, Personalizer no debe usarse con DCP específica de un individuo (como el nombre, el número de teléfono, los números de tarjetas de crédito y las direcciones IP).
- Envío de identificadores de usuario. Con un gran número de usuarios, es poco probable que esta información sea relevante para el aprendizaje de Personalizer para maximizar la puntuación de recompensa media. El envío de identificadores de usuario (incluso si no son DCP) probablemente agregará más ruido al modelo y no se recomienda.
- Enviar valores únicos que rara vez se producirán más de unas pocas veces. Se recomienda crear agrupar las características en un nivel de detalle superior. Por ejemplo, tener características como
"Context.TimeStamp.Day":"Monday"
o"Context.TimeStamp.Hour":13
puede ser útil, ya que solo hay 7 y 24 valores únicos, respectivamente. Sin embargo,"Context.TimeStamp":"1985-04-12T23:20:50.52Z"
es muy preciso y tiene un gran número de valores únicos, lo que dificulta mucho que Personalizer aprenda de ello.
Mejora de los conjuntos de características
Analice el comportamiento del usuario mediante la ejecución de un Trabajo de evaluación de características. Esto permite examinar datos pasados para ver qué características contribuyen considerablemente a la hora de lograr recompensas positivas y cuáles contribuyen menos. Puede ver las características que sirven de ayuda y dependerá de usted y de la aplicación encontrar características mejores para enviarlas a Personalizer, con el fin de mejorar aún más los resultados.
Expansión de conjuntos de características con inteligencia artificial y servicios de Azure AI
Tanto la inteligencia artificial como una instancia de servicios de Azure AI lista para ejecutarse pueden ser una incorporación muy eficaz a Personalizer.
Si se procesan previamente los elementos mediante servicios de inteligencia artificial, es posible extraer automáticamente información que es probable que sea relevante para la personalización.
Por ejemplo:
- Puede ejecutar un archivo de películas a través de Video Indexer para extraer elementos de escenas, texto, opiniones y muchos otros atributos. La densidad de estos atributos pueden aumentar para reflejar las particularidades que no tenían los metadatos del elemento original.
- Las imágenes se pueden ejecutar mediante la detección de objetos, las mediante las opiniones, etc.
- La información en forma de texto se puede aumentar mediante la extracción de entidades, opiniones y la expansión de las entidades con el grafo de conocimientos de Bing.
Se pueden usar otros elementos de servicios de Azure AI, como
Uso de inserciones como características
Las inserciones de varios modelos de Machine Learning han demostrado ser características efectivas para Personalizer
- Incrustaciones de modelos de lenguaje grandes
- Inserciones de modelos de Visión de Azure AI
Espacios de nombres
Opcionalmente, las características se pueden organizar mediante espacios de nombres (relevantes para las características de contexto y acción). Los espacios de nombres se pueden usar para agrupar características por tema, origen o cualquier otra agrupación que tenga sentido en la aplicación. El usuario determina si se usan espacios de nombres y cuáles deben ser dichos espacios. Los espacios de nombres organizan características en conjuntos distintos y eliminan la ambigüedad de las características con nombres similares. Los espacios de nombres se pueden considerar como un "prefijo" que se agrega a los nombres de las características. Los espacios de nombres no deberían anidarse.
A continuación encontrará ejemplos de espacios de nombres de características usados por las aplicaciones:
- User_Profile_from_CRM
- Hora
- Mobile_Device_Info
- http_user_agent
- VideoResolution
- DeviceInfo
- Tiempo
- Product_Recommendation_Ratings
- current_time
- NewsArticle_TextAnalytics
Directrices y convenciones de nomenclatura de espacios de nombres
- Los espacios de nombres no deberían anidarse.
- Los espacios de nombres deben comenzar con caracteres ASCII únicos (se recomienda usar espacios de nombres basados en UTF-8). Actualmente, tener espacios de nombres con los mismos caracteres podría dar lugar a colisiones, por lo que se recomienda encarecidamente que los espacios de nombres empiecen por caracteres distintos entre sí.
- Los espacios de nombres distinguen mayúsculas de minúsculas. Por ejemplo,
user
yUser
se considerarán diferentes espacios de nombres. - Los nombres de características se pueden repetir entre espacios de nombres y se tratarán como características independientes
- No se pueden usar los caracteres siguientes: códigos < 32 (no imprimibles), 32 (espacio), 58 (dos puntos), 124 (canalización) y 126–140.
- Se omitirán todos los espacios de nombres que empiecen por un carácter de subrayado
_
.
Ejemplos de JSON
Acciones
Al llamar a Rank, enviará varias acciones entre las que elegir:
Los objetos JSON pueden incluir objetos JSON anidados y propiedades y valores simples. Solo se puede incluir una matriz si los elementos de la matriz son números.
{
"actions": [
{
"id": "pasta",
"features": [
{
"taste": "salty",
"spiceLevel": "medium",
"grams": [400,800]
},
{
"nutritionLevel": 5,
"cuisine": "italian"
}
]
},
{
"id": "ice cream",
"features": [
{
"taste": "sweet",
"spiceLevel": "none",
"grams": [150, 300, 450]
},
{
"nutritionalLevel": 2
}
]
},
{
"id": "juice",
"features": [
{
"taste": "sweet",
"spiceLevel": "none",
"grams": [300, 600, 900]
},
{
"nutritionLevel": 5
},
{
"drink": true
}
]
},
{
"id": "salad",
"features": [
{
"taste": "salty",
"spiceLevel": "low",
"grams": [300, 600]
},
{
"nutritionLevel": 8
}
]
}
]
}
Context
El contexto se expresa en forma de objeto JSON que se envía a la API Rank:
Los objetos JSON pueden incluir objetos JSON anidados y propiedades y valores simples. Solo se puede incluir una matriz si los elementos de la matriz son números.
{
"contextFeatures": [
{
"state": {
"timeOfDay": "noon",
"weather": "sunny"
}
},
{
"device": {
"mobile":true,
"Windows":true,
"screensize": [1680,1050]
}
}
]
}
Espacios de nombres
En el siguiente JSON, user
, environment
, device
y activity
son espacios de nombres.
Nota
Le recomendamos que use nombres para los espacios de nombres de características que se basen en el formato UTF-8 y comiencen por letras diferentes. Por ejemplo, los términos user
, environment
, device
y activity
empiezan por u
, e
, d
y a
. Actualmente, el uso de espacios de nombres con los mismos caracteres iniciales puede provocar colisiones.
{
"contextFeatures": [
{
"user": {
"profileType":"AnonymousUser",
"Location": "New York, USA"
}
},
{
"environment": {
"monthOfYear": "8",
"timeOfDay": "Afternoon",
"weather": "Sunny"
}
},
{
"device": {
"mobile":true,
"Windows":true
}
},
{
"activity" : {
"itemsInCart": "3-5",
"cartValue": "250-300",
"appliedCoupon": true
}
}
]
}