¿Cuáles son los mejores algoritmos para construir sistemas de recomendación?

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

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.

Mi equipo ha preparado una descripción general de los principales algoritmos de sistemas de recomendación . Compartiré aquí uno de ellos solo para dar la idea de si nuestra publicación podría ser útil.

Uno de los motores de recomendación más utilizados es el filtrado colaborativo (CF) y sus modificaciones.

Filtración colaborativa

Cuando queremos recomendar algo a un usuario, lo más lógico es encontrar personas con intereses similares, analizar su comportamiento y recomendar a nuestro usuario los mismos elementos. O podemos ver los artículos similares a los que el usuario compró anteriormente y recomendar productos similares.

Estos son dos enfoques básicos en la FQ: el filtrado colaborativo basado en el usuario y el filtrado colaborativo basado en elementos, respectivamente.

En ambos casos, este motor de recomendación tiene dos pasos:

  1. Descubra cuántos usuarios / elementos en la base de datos son similares al usuario / elemento dado.
  2. Evalúe a otros usuarios / artículos para predecir qué calificación le daría al usuario de este producto, dado el peso total de los usuarios / artículos que son más similares a este.

¿Qué significa “más similar” en este algoritmo?

Todo lo que tenemos es un vector de preferencias para cada usuario (fila de la matriz R) y el vector de clasificaciones de usuario para cada producto (columnas de la matriz R).

En primer lugar, dejemos solo los elementos para los que conocemos los valores en ambos vectores.

Por ejemplo, si queremos comparar a Bill y Jane, podemos mencionar que Bill no ha visto Titanic y Jane no ha visto a Batman hasta este momento, por lo que podemos medir su similitud solo con Star Wars. ¿Cómo podría alguien no ver Star Wars, verdad? 🙂

Las técnicas más populares para medir la similitud son la similitud de coseno o las correlaciones entre vectores de usuarios / elementos. El último paso es tomar la media aritmética ponderada de acuerdo con el grado de similitud para llenar celdas vacías en la tabla.

La publicación original del blog: Algoritmos del sistema de recomendación: estadísticas y bots

Según IBM, hay muchos enfoques algorítmicos disponibles para motores de recomendación. Los resultados pueden diferir según el problema que el algoritmo está diseñado para resolver o las relaciones que están presentes en los datos. Muchos de los algoritmos provienen del campo del aprendizaje automático, un subcampo de inteligencia artificial que produce algoritmos para el aprendizaje, la predicción y la toma de decisiones.

Algunos de ellos son como …

  1. Correlación de Pearson: la similitud entre dos usuarios (y sus atributos, como los artículos leídos de una colección de blogs) se puede calcular con precisión con la correlación de Pearson. Este algoritmo mide la dependencia lineal entre dos variables (o usuarios) en función de sus atributos. Pero no calcula esta medida sobre toda la población de usuarios. En cambio, la población debe filtrarse a barrios según una métrica de similitud de nivel superior, como leer blogs similares. La correlación de Pearson, que se usa ampliamente en la investigación, es un algoritmo popular para el filtrado colaborativo.
  2. Algoritmos de agrupamiento: los algoritmos de agrupamiento son una forma de aprendizaje no supervisado que puede encontrar estructura en un conjunto de datos aparentemente aleatorios (o sin etiquetar). En general, trabajan identificando similitudes entre elementos, como lectores de blogs, calculando su distancia de otros elementos en un espacio de características. (Las características en un espacio de características podrían representar la cantidad de artículos leídos en un conjunto de blogs). La cantidad de características independientes define la dimensionalidad del espacio. Si los elementos están “juntos”, se pueden unir en un clúster.
  3. Otros algoritmos : existen muchos algoritmos, y un conjunto aún mayor de variaciones de esos algoritmos, para los motores de recomendación. Algunos que se han utilizado con éxito incluyen:
    • Redes de creencias bayesianas , que se pueden visualizar como un gráfico acíclico dirigido, con arcos que representan las probabilidades asociadas entre las variables.
    • Cadenas de Markov , que adoptan un enfoque similar a las redes de creencias bayesianas, pero tratan el problema de la recomendación como una optimización secuencial en lugar de una simple predicción.
    • Clasificación de Rocchio (desarrollada con el Modelo de espacio vectorial), que aprovecha la retroalimentación de la relevancia del elemento para mejorar la precisión de la recomendación.

    Comience con el estándar: Filtrado colaborativo.
    Luego puede investigar sobre algunos sistemas basados ​​en contenido.

    Luego modelos latentes como SVD, SVD ++, NMF.

    También puede investigar sobre RBM (Máquinas de Boltzmann restringidas) que también se pueden usar para asignar elementos a un espacio de conceptos.

    Debe hacer algo con el problema de arranque en frío, por lo que probablemente sea una buena idea echar un vistazo a Multi Armed Bandits (MAB)

    Y si desea que su sistema de recomendaciones sea diverso, necesita algo de heurística para el problema de la cobertura del conjunto.

    Finalmente, puede investigar sobre redes sociales, confiar en redes sociales, recomendaciones sociales, etc. para incluir el factor social en su sistema.

    ¡Los sistemas de recomendación pueden volverse muy complejos!

    En primer lugar, debe saber que el sistema de recomendación es un tipo de aplicación, por lo que no significa nada a menos que se combine con un contexto concreto.
    Y, basado en saber qué objetivo desea tocar, usted y empujarse al mar de datos, limpiarlo, investigarlo, transformarlo, solo para esos algoritmos estándar.
    Es mejor que primero intente basado en elementos y luego en usuarios, que son filtros de colaboración básicos. Luego le sugiero que pruebe algunos algoritmos de factor latente, por ejemplo, svd, svd ++, fm, etc. Debido a la popularidad del Premio Netflix hace unos años, esos algoritmos están diseñados para la retroalimentación explícita como cinco estrellas, pero lo que encontraremos más que eso es retroalimentación implícita, clic, comprar, ver, etc., entonces, ¿cómo podemos rediseñar esos algoritmos para la implícita? La retroalimentación es la principal cosa difícil.
    Además de eso, la recomendación basada en contenido involucra muchos algoritmos sobre PNL, por ejemplo, LSA, Modelo de tema, etc. Debes conocer todos estos algoritmos.

    Por último, me gustaría decir una vez más: el sistema de recomendación es estrictamente relativo al producto, por lo que deberíamos preocuparnos por el contexto de uso de nuestros algoritmos.

    No hay un “mejor” absoluto. Como han dicho otros, depende del contexto. Específicamente en dos partes cruciales:

    • ¿Qué datos podemos recopilar?
    • ¿Cuál es el objetivo final de la recomendación? (es decir, más allá de proporcionar una lista de elementos clasificados)

    Si podemos contar con lotes en las interacciones del usuario (implícitas o explícitas), es decir, la matriz de elementos de usuario está razonablemente poblada, entonces el enfoque estándar es utilizar el Filtro Colaborativo, principalmente porque es bastante sencillo, ya sea modelos de vecindario (antiguos pero robustos) o matriz Variantes de factorización. Si tenemos una gran cantidad de metadatos de elementos, podemos probar basados ​​en contenido. Si tenemos un gráfico social, tal vez un recomendador social. Si no podemos construir perfiles de usuario, entonces podemos probar las reglas de asociación. Etc.

    Las decisiones anteriores se ven influenciadas por el contexto y el objetivo. El objetivo general es mejorar la satisfacción del usuario con el servicio, pero eso tiene muchos sabores a corto plazo. ¿Queremos mejorar las ventas, aumentar la participación del usuario, evitar la rotación, hacer un mejor uso de nuestro catálogo de respaldo (cola larga)?

    E incluso para el mismo servicio es posible que a medida que los servicios (y los usuarios) evolucionen, podamos encontrar razonable cambiar el algoritmo (o modificarlo).

    Depende de para qué es el sistema de recomendación, esta es una lista de los sistemas de recomendación que he encontrado, pero de ninguna manera exhaustiva. [1]

    “Mejor” no es realmente una palabra objetiva.

    Notas al pie

    [1] grahamjenson / list_of_recommender_systems

    Hay diferentes tipos de sistemas de recomendación que implementan la minería de reglas de asociación. Es decir, en base a transacciones anteriores, estos algoritmos (Apriori, Eclat, FP-growth) encuentran patrones frecuentes que se utilizan para recomendarle comprar bienes adicionales cuando realiza un pago en Amazon. Eche un vistazo a esta API gratuita para la minería de reglas de asociación rkmndr.tech

    More Interesting

    ¿Es posible una batalla de humanos contra máquinas en el futuro previsible?

    ¿Por qué el aprendizaje profundo solo funciona bien en datos no estructurados?

    ¿Por qué alguien usaría un modelo de regresión basado en un árbol de decisión?

    ¿Es posible comenzar a aprender y trabajar en el aprendizaje por refuerzo y el aprendizaje profundo sin un conocimiento previo sólido de otras clases de ML?

    ¿Qué es la estimación de máxima verosimilitud?

    ¿Cuál es el lenguaje más cercano al lenguaje de máquina?

    Cómo mejorar mi escritura para pasante de aprendizaje automático

    Cómo saber si una startup tecnológica que ofrece soluciones empresariales que utilizan el aprendizaje exclusivo en profundidad está tratando de estafar a mi empresa

    ¿Cómo funciona la regresión lineal múltiple en variables categóricas?

    ¿Qué opinas del TensorFlow Eager en comparación con Pytorch?

    ¿Cuáles son las ventajas y desventajas de utilizar PMML como formato de intercambio para modelos de análisis predictivo?

    ¿Cuál es mejor, el modelo de regresión o ecuación estructural, y por qué?

    ¿Qué pasos de procesamiento previo recomendaría para un aprendizaje automático exitoso en un conjunto de datos MNIST?

    ¿Cuáles son las sinergias entre los estudios en Operaciones y Gestión de la Información y Ciencias de la Computación?

    ¿Cuáles son algunos problemas o preguntas de la vida real que el aprendizaje automático ha resuelto y que no se pueden resolver adecuadamente por otros medios?