TL; DR: La conclusión principal es que debe adoptar un enfoque pragmático. Específicamente, comience por considerar la disponibilidad de datos esperada para los próximos seis meses, por ejemplo, y luego cree un recomendador en consecuencia. Su elección de algoritmos debe ajustarse a sus restricciones de datos y, por supuesto, también debe ser adecuada para su propósito. En primer lugar, debe crear un sistema de recomendación rudimentario que le permita salir a la carretera y proporcionarle un punto de referencia efectivo y efectivo. Los algoritmos elementales que aprovechan los datos de contenido son TF-IDF, Word2Vec y LDA (Asignación de Dirichlet Latente). Los sistemas de recomendación más conocidos basados en el usuario se crean utilizando algoritmos de filtro colaborativos. Si tiene datos de interacción disponibles, puede mirar a los bandidos con múltiples brazos o, de manera más general, aprender a clasificar los enfoques. En tales casos, deberá implementar algunas medidas que reduzcan el sesgo.
Como los otros respondedores ya han aludido, no existe un algoritmo universalmente ‘mejor’ para construir sistemas de recomendación. Debe restringir la pregunta y pensar en lo que es mejor dado un conjunto particular de circunstancias. Describiré lo que es pragmáticamente bueno, me da miedo decir la mejor opción dada la disponibilidad de datos.
Restricciones de datos
- ¿Para qué se puede utilizar el análisis de la marcha?
- ¿Cuáles son los primeros usos de la regresión logística?
- ¿Somos mejores que las máquinas que creamos?
- Cómo implementar el análisis de sentimientos en proyectos de retroalimentación de clientes
- Cómo implementar el muestreo ponderado de yacimientos
Hay varias limitaciones en las que debe pensar antes de poder responder esta pregunta. El más importante es la disponibilidad anticipada de datos. ¿Cuál es la naturaleza de los datos que espera que estén disponibles? ¿Qué datos tienes ya? ¿Cuáles son sus características? ¿Qué características puedes extraer de esos datos? ¿Es puramente información de contenido o también tiene información de usuario?
Hay tres especies de datos que son relevantes para el sistema de recomendación de construcción:
Datos de contenido
Voy a aprovechar mi experiencia en Bibblio para inspirarme y proporcionar ejemplos concretos. En Bibblio nos asociamos con nuestros clientes para proporcionar recomendaciones superiores para documentos ingeridos. Como tal, nos hemos centrado en crear un sistema de recomendación de contenido. En el caso de un documento, el contenido principal es, por supuesto, el ‘texto’. Puede haber metadatos que también puede aprovechar. A menudo, las cargas de documentos incluyen metadatos que siguen ciertos estándares (por ejemplo, Home – schema.org). Por lo tanto, la carga útil puede proporcionar datos como la fecha de publicación, el autor y las áreas temáticas. Esto se puede incorporar como parte del contenido o se puede utilizar para aumentar las funciones utilizadas para entrenar a su recomendante.
Algoritmos para cuando tienes datos de contenido
Tomemos el ejemplo de Bibblio para hacer esto concreto. Al principio, solo teníamos datos de contenido puro disponibles en forma de contenido textual (principalmente artículos y blogs / artículos breves). No imaginamos que recibiríamos datos de los usuarios durante un buen número de meses. Por lo tanto, no tenía sentido crear un recomendador que aprovechara los datos del usuario.
Así que tomamos la decisión de construir un sistema de recomendación de documentos basado en contenido. Y mi consejo es que, en lugar de pensar en el mejor algoritmo incondicional, piense en el que le dará la victoria más fácil. En otras palabras, seleccione un algoritmo que sea mejor “bajo las circunstancias”. Especialmente cuando trabajas para una nueva empresa y tienes que generar resultados lo más rápido posible. Primero, intente algo elemental. Incluso si no funciona tan bien, será un gran punto de referencia. Si en una futura iteración de mejora del algoritmo, el algoritmo no supera ese punto de referencia, entonces sabe que puede deshacerse de él.
Un ejemplo de un algoritmo elemental, que en Bibblio probamos y promocionamos a la producción, fue un enfoque que utiliza la vectorización TF-IDF para asignar una firma a cada documento. Utiliza esto para asignar cada documento a un espacio matemático multidimensional o vector. Sobre la base de esos vectores, recomendamos eventos seleccionando los k vecinos más cercanos a un documento fuente. Existen numerosas variaciones y mejoras que se pueden aplicar a este enfoque preferido, como la incorporación de metadatos si están disponibles.
También hay enfoques que utilizan redes neuronales como Word2Vec. En nuestros experimentos, Word2Vec se desempeñó respetablemente pero resultó no ser el mejor. Otro enfoque interesante es considerar algoritmos basados en el modelado de temas y la construcción de un modelo de lenguaje probabilístico como la asignación de Dirichlet latente (LDA).
Datos del usuario
¿Tienes información sobre los propios usuarios? ¿Hay alguna manera de identificar usuarios únicos de una sesión a la siguiente? Esto normalmente requiere una identificación de usuario. Hay desafíos asociados con la obtención de eso. Si no es un B2C, pero es un B2B como Bibblio, su cliente debe proporcionarle esos datos de usuario. Podría explorar la posibilidad de ‘colocar una cookie’ en los sitios web del cliente, pero muchos lo encontrarán intrusivo y, por lo tanto, objetable. Si el cliente tiene los datos disponibles y está preparado para compartirlos, eso, por supuesto, le brinda una gran ventaja. Sin duda, necesitará datos de usuario de alguna forma para construir un sistema de recomendación personalizado.
Algoritmos para cuando tienes ID de usuario
Los sistemas de recomendación basados en el usuario son bien conocidos y han recibido considerable atención. Los otros respondedores ya han mencionado algoritmos de filtrado colaborativo. Lo que posiblemente contribuyó a su fama fue la competencia del Premio Netflix, y ahora estos algoritmos han alcanzado una madurez considerable y están disponibles desde el primer momento. Los métodos de factorización matricial se aprovechan para evitar la escasez de datos. Además, en Spark está disponible una implementación distribuida de un filtro colaborativo de factorización matricial que ayuda a aliviar el problema de escala.
Datos de interacción
El ejemplo más popular de esto son los datos de clickstream. ¿Tiene datos sobre el contenido que especifique con qué frecuencia se hizo clic? Estos datos pueden ser independientes del usuario o relativos a un individuo en particular. En relación con ese usuario, también puede tener datos sobre su historial. Supongamos que tiene una funcionalidad de búsqueda en su sitio, y los usuarios envían consultas, entonces puede usar estos datos para mejorar las recomendaciones.
Algoritmos para cuando tienes datos de interacción
Bandidos de múltiples brazos. Cuando tenga datos sobre los clics, puede explorar estrategias algorítmicas alternativas diseñadas para optimizar la tasa de clics. Los algoritmos de bandidos de varios brazos han sido una opción popular para optimizar las tasas de clics. Dichos algoritmos equilibran la explotación y la exploración para reducir el arrepentimiento esperado por no seleccionar la estrategia óptima. Podría hacerlo peor que comenzar con la investigación del llamado algoritmo de límite de confianza superior (UCB). Después de eso, recomendaría pasar a enfoques más sofisticados que se basen en ideas bayesianas. (Se pueden encontrar más detalles en las respuestas a esta pregunta de Quora).
Un desafío que encontrarás con algoritmos de este tipo es el sesgo. Un ejemplo es el sesgo que surge de la forma en que expone su lista a los usuarios finales. Debes dar la misma oportunidad a cada elemento del grupo. El problema con esto es que el usuario puede recibir recomendaciones irrelevantes mientras explora. El período de aprendizaje daría como resultado una experiencia de usuario degradada que podría antagonizar al usuario. Afortunadamente, durante un período de tiempo esto mejora, y hay varias maneras de reducir el sesgo. Una forma, por ejemplo, es comenzar con la salida de un sistema de recomendación que ya tenga. Esto también lo ayuda con su problema de arranque en frío. En nuestro caso, utilizamos la salida de nuestro sistema de recomendación basado en contenido para usar como una hipótesis inicial de lo que le gustará al usuario. Puede comenzar presentando aleatoriamente un subconjunto de las 100 mejores recomendaciones más relevantes el 90% del tiempo. El otro 10% del tiempo presentará recomendaciones de fuera de ese grupo.
Aprender a clasificar . Pasando de eso, ingresa al espacio de algoritmos diseñados para optimizar la clasificación relativa de los elementos que se presentan al usuario final. Estos algoritmos también sufren el problema de sesgo. Supongamos que tiene un motor de búsqueda que recupera 100 elementos y los clasifica según un cierto orden. Los usuarios no suelen mirar más allá del décimo resultado. Entonces, incluso si el vigésimo resultado es objetivamente más relevante que el quinto, este último obtendrá una tasa de clics más alta. Un excelente lugar para comenzar si desea obtener más información sobre el aprendizaje de algoritmos de clasificación es el documento seminal de Thorsten Joachim sobre la optimización de motores de búsqueda utilizando datos de clics.
En resumen, entonces, su elección del mejor algoritmo de recomendación debe guiarse por preocupaciones pragmáticas, sobre todo por la disponibilidad de datos. Hay al menos tres tipos de datos, a saber, contenido, datos de usuario e interacción, y diferentes algoritmos son adecuados para cada uno.