¿Qué algoritmos se usan en los sistemas de recomendación?

Aquí está mi desglose personal de algoritmos para recomendación. Pienso en tres familias amplias de enfoques que son variaciones sobre un tema.

Basado en el vecindario

  • Basado en la similitud de usuario o elemento
  • Varía según la elección de la métrica de similitud
  • Varía según la elección del tamaño del vecindario.
  • Posiblemente construido sobre agrupaciones de usuarios / elementos
  • Para mí, también incluí una recomendación “basada en contenido”: cálculo de similitud basado en atributos

Modelos de factor latente

  • Principalmente factorización de matriz de bajo rango a través de ALS, SVD
  • … y que a su vez varían según la elección de cómo calcular (SGD, Lanczos, etc.)
  • También modelos gráficos (máquinas de Boltzmann restringidas)

Basado en clasificador

  • “Todo lo demás”: gran parte del resto son intentos de encajar el problema en un modelo clasificador en el que se predice una categoría de “me gusta”. Entonces, regresión logística, etc.

ACTUALIZACIÓN 16/09/2015 – Estoy feliz de ver esta tendencia como una respuesta principal en la sección de sistemas de recomendación, por lo que agregué un par de descripciones de algoritmos más y puntos sobre la optimización de algoritmos. ¡Por favor vota y comparte para motivarme a seguir agregando más información!

Lanzamos una plataforma de aprendizaje automático predictivo de código abierto llamada Seldon (bajo la Licencia Apache 2.0), que incluye los siguientes algoritmos que se pueden usar para construir un sistema de recomendación altamente escalable.

Seldon está disponible en Github: SeldonIO / seldon-server
Documentación técnica: http://docs.seldon.io

Grupos de usuarios
Mejore la relevancia de las recomendaciones en los servicios de medios de alta rotación.

  • Clúster de usuarios en función de la actividad histórica.
  • taxonomía configurable (categoría, rango de precios, marca, referencia de visita, ..)
  • sin supervisión (medios K difusos)
  • Apache Spark para manejar grandes tamaños de datos históricos.
  • Cargue grupos de usuarios en servidores front-end periódicamente y cuente las visitas de contenido para los usuarios en el mismo grupo
  • La decadencia cuenta para proporcionar dinámicas de actividad a medida que se publica nuevo contenido.
  • Recomiende combinando los recuentos para el contenido en función de la pertenencia al clúster del usuario.
  • Procesamiento de flujo en tiempo real para agregar dinámicas a corto plazo a las recomendaciones.
  • Afinidad de etiqueta
    Combina metadatos con artículos de tendencia

    • El modelo asocia a los usuarios con pesos a etiquetas del contenido.
    • En tiempo de ejecución, encuentre artículos de tendencias con etiquetas asociadas con el usuario.
    • Combina resultados para recomendaciones.
    • Se puede utilizar para encontrar grupos de usuarios de nicho.

    Correlación de actividad del artículo
    Creado para inventario estático que cambia lentamente

    • Similar a “las personas que compraron esto de Amazon también compraron …”
    • Use la actividad histórica del usuario para buscar elementos que compartan una actividad similar del usuario.
    • Implementación fuera de línea escalable de Apache Spark.
    • Cargue para cada elemento: top-N artículos similares.
    • Para cada usuario: recomendaciones de artículos basadas en su actividad histórica.

    Modelos de tema
    Creado para sitios que necesitan una recomendación de cola larga

    • Suponga que la actividad está asociada con un conjunto de temas.
    • Los gustos de los usuarios individuales están cubiertos por un subconjunto de temas.
    • Describa a los usuarios por el conjunto de palabras clave para los elementos con los que han interactuado.
    • Construido con la implementación de Apache Spark y Vowpal Wabbit de la asignación de Dirichlet latente.
    • La capa de servicio en línea puntúa la asociación de usuarios con elementos en tiempo real.

    Modelos de factor latente
    Lo mejor para los sitios de comercio electrónico sitios de baja rotación

    • Solución ganadora del Premio Netflix.
    • Utilice la factorización matricial para reducir la matriz de actividad a dos matrices de factor de elemento y usuario de baja dimensión.
    • Cargue factores en servidores API y califique usuarios y elementos en tiempo real.
    • Agregue nuevos usuarios y elementos hasta la próxima actualización por lotes del modelo.
    • Utilice Apache Spark mllib y módulos de transmisión.

    Similitud de contenido
    Creado para servicios con metadatos enriquecidos y alta dispersión

    • Requisito: técnica rápida basada en contenido para hacer coincidir el historial del usuario con contenido similar basado en texto / etiquetas de contenido.
    • Utiliza la técnica de vectores aleatorios. A cada palabra / etiqueta se le asigna un vector aleatorio de alta dimensión.
    • Implementación de vectores semánticos de código abierto.
    • Periódicamente procese contenido reciente en vectores y actualice servidores.
    • Los servidores cargan vectores en la memoria.
    • Recomendación sobre la actividad reciente del usuario para encontrar contenido similar en tiempo real.

    Reglas de asociación
    Sugirió el siguiente mejor artículo dado el conjunto actual de artículos

    • Una forma de análisis de la cesta que es útil en el comercio electrónico para proporcionar recomendaciones sobre qué artículos se pueden agregar a una cesta dado un conjunto actual de artículos.
    • Hay dos trabajos de Spark que deben ejecutarse consecutivamente:
      1. Análisis de la cesta: divida el flujo de eventos de acciones y procese los eventos de agregar a la cesta y eliminar de la cesta y cree un conjunto de cestas de sesión.
      2. Reglas de asociación: Esto procesará las canastas, encontrará conjuntos de artículos frecuentes utilizando el algoritmo de crecimiento Spark MLib FP y creará reglas de asociación.

    Optimización de Algoritmo

    • Múltiples algoritmos en cascada para cubrir diferentes usuarios.
    • Los resultados del algoritmo combinado de diferentes maneras, por ejemplo, puntajes ponderados, combinación de rango.
    • Ejecute pruebas A / B y multivariadas sin redistribución
    • Seleccionar estrategias de algoritmo a través de etiquetas API:
      – para manejar grupos de usuarios: usuarios móviles, computadoras de escritorio, tabletas
      – para proporcionar múltiples recomendaciones de contenido por página, en todo el sitio, insection.
    • Cambie toda la configuración en tiempo real sin redistribución.
    • Optimización dinámica con bandidos multi-armados.

    Para obtener documentos técnicos detallados que explican cómo puede comenzar rápidamente con los algoritmos de recomendación anteriores y ponerlos en producción, consulte http://docs.seldon.io

    Lo siguiente está tomado de mi blog aquí: Coursera-Introducción a los sistemas de recomendación: una revisión. Los 3 algoritmos básicos utilizados en los sistemas de recomendación son los siguientes:
    1. Recomendaciones no personalizadas
    No están personalizados en el sentido de que se les da a todos la misma recomendación (en la mayoría de los casos, un resumen estadístico). Dependen de datos externos de la comunidad (como clasificaciones de películas, clasificaciones de libros, etc.) y generan recomendaciones como ‘best seller’, ‘más populares’, ‘tendencias populares’, etc. También pueden mostrar un resumen de clasificaciones de la comunidad en forma de ‘Me gusta más’. Por ejemplo: clasificaciones de restaurantes de zagat, clasificaciones de cartelera de música, clasificaciones de hotel de Trip Advisor
    Otro algoritmo no personalizado muy común es el recomendador de asociación de productos que ofrece recomendaciones en algún contexto, como el emparejamiento de elementos que van bien juntos. Entonces, por ejemplo, es posible que esté comprando un microondas, entonces el recomendante de la asociación de productos le recomendará comprar un recipiente para microondas.

    2. Recomendaciones basadas en contenido
    En este tipo de algoritmos, los elementos se representan primero por sus atributos (los atributos de los libros pueden ser título, género, autor, etc.). A continuación, se crea un perfil de usuario tomando calificaciones de usuario sobre estos atributos (qué género o autor le gusta más al usuario). Las clasificaciones se pueden tomar de la acción implícita del usuario, como leer, comprar, hacer clic o explícitamente, pidiéndole al usuario que califique los elementos. Este modelo de calificaciones de los usuarios en los atributos del artículo (los perfiles de usuario) se aplica a cualquier artículo nuevo a través de sus atributos para generar recomendaciones. Por ejemplo: noticias personalizadas como Facebook, música de artistas o géneros en pandora, etc.
    Una variación particular de esto es el filtrado de contenido basado en casos en el que ciertos casos se crean alrededor de los atributos del elemento en los que se toma la entrada del usuario y luego se genera la recomendación. Es una recomendación de corta duración y específica para la tarea en cuestión. Por ejemplo, para un usuario que busca comprar una computadora portátil, un recomendante puede pedirle información al usuario en casos como ‘cuánto espacio en el disco duro está buscando’, ‘cuánto ram necesita’, ‘de qué color quiere’, qué tamaño de pantalla necesita require ‘, etc. y luego proporcione una lista de las computadoras portátiles recomendadas.
    La ventaja de los recomendadores basados ​​en contenido es que funcionan bien incluso sin un gran conjunto de usuarios, solo necesitan datos de elementos.

    3. Filtrado colaborativo
    El filtrado colaborativo se basa en dos supuestos básicos: 1. Los gustos de los usuarios son estables individualmente o se sincronizan entre sí a lo largo del tiempo y 2. El sistema está dentro de un dominio de acuerdo (los usuarios similares generalmente están de acuerdo en la cohesión en películas o política, etc. )
    Hay dos tipos principales de filtrado colaborativo como se muestra a continuación:

    • Usuario-usuario

    La idea básica de un recomendador de filtrado colaborativo usuario-usuario es seleccionar un vecindario de usuarios que sean similares a usted y que representen mejor su gusto (la similitud se calcula a través de la correlación) y luego puntuar varios elementos por ese vecindario de usuarios para generar una recomendación para tú. Una variación del primer paso es seleccionar personas cuyo gusto conozca y confíe. Por ejemplo: Amazon crea su perfil de usuario a través de las calificaciones y compras que ha realizado y luego lo utiliza para calcular la similitud con otros usuarios y, dependiendo de las calificaciones que estos usuarios hayan otorgado en otros artículos, le envía recomendaciones en un correo electrónico de artículos que puede me gusta.

    • Ítem-ítem

    Aquí la similitud se calcula entre los elementos a través de sus clasificaciones. Cuando un usuario califica un artículo en particular, se generan recomendaciones basadas en las recomendaciones de similitud anteriores. Por ejemplo: cuando califica altamente un elemento, Amazon muestra otros elementos que también fueron altamente calificados en ese dominio (películas, libros, etc.).

    Pasé 4 horas hablando de esto en una conferencia para la Escuela de Verano de Machine Learning en CMU el año pasado. Aquí puede acceder a las diapositivas y al video: Introducción a los sistemas de recomendación: una conferencia de 4 horas.

    Sin embargo, creo que será útil reproducir al menos parte de la tabla de contenido de esa charla, ya que resume los algoritmos más importantes utilizados en los sistemas de recomendación:

    A. Métodos “tradicionales”

    1. Filtrado colaborativo

    • Vecinos más cercanos
    • Factorización matricial
    • Máquinas de Boltzmann restringidas
    • Agrupación y LSH
    • Reglas de asociación

    2. Recomendaciones basadas en contenido

    • TF-IDF
    • Clasificadores (por ejemplo, ANN o Naive Bayes)

    B. Métodos “novedosos”

    1. Aprender a clasificar

    • LambdaMart …

    2. Recomendaciones conscientes del contexto

    • Factorización de tensor
    • Máquinas de factorización

    3. Aprendizaje profundo
    4. Recomendaciones basadas en similitudes
    5. Recomendaciones sociales y de confianza

    C. Enfoques híbridos

    También puede leer más sobre esto en mi capítulo sobre Métodos de minería de datos para sistemas de recomendación.

    Los sistemas de recomendación más populares según el API de recomendación de Abracadabra :

    Filtrado basado en contenido.

    El filtrado basado en contenido (también conocido como cognitivo o basado en elementos ) es una técnica que recomienda temas (como, por ejemplo, películas , artículos ) comparando el contenido con un perfil de usuario. Por ejemplo, a un usuario le puede gustar o calificar una película en Netflix. La película tiene ciertas características ( genre . release year ) que luego se vinculan al perfil del usuario. Otras películas que tienen características similares se muestran al usuario.

    Filtración colaborativa

    El filtrado colaborativo (también conocido como social ) filtra la información utilizando las recomendaciones de otros usuarios que son las más similares. Se basa en el supuesto de que las personas a las que les gustan ciertos temas en el pasado probablemente volverán a estar de acuerdo en el futuro. El mejor ejemplo de este concepto es pedirle a un amigo (que tiene un gusto similar al tuyo) que te recomiende una película que aún no has visto. Además, se basa en el supuesto de que las recomendaciones de algunos amigos que tienen intereses similares son más confiables que las recomendaciones de otros.

    Filtrado híbrido

    El tercer método combina el poder del filtrado colaborativo como el basado en contenido. Esta es también la configuración predeterminada. Básicamente, lo que sucede es que el motor construye una puntuación que es función tanto del perfil del usuario como de la similitud con otros usuarios. Es decir, el motor escucha las recomendaciones de sus amigos u otros usuarios, pero también tiene en cuenta su propio perfil de usuario.

    La mayoría de los algoritmos de recomendación operan en la matriz de interacciones usuario-elemento (métodos de filtrado colaborativo):

    • basado en el barrio (por ejemplo, KNN)
    • basado en factorización (p. ej. ALS, SVD)
    • basado en reglas (asociaciones extraídas de interacciones)
    • basado en modelos (puede entrenar modelos predictivos, generalmente conjuntos) para reducir la dimensionalidad, predecir la clasificación, …

    Cuando tales interacciones no están disponibles, puede recomendar en función de los atributos de los elementos o usuarios (métodos basados ​​en contenido).

    Para usuarios de arranque en frío o elementos sin interacciones, se requieren métodos basados ​​en contenido, de lo contrario, el filtrado colaborativo suele ser más eficiente.

    Los sistemas de recomendación más avanzados en producción usan conjuntos de los algoritmos anteriores. Además, su tiempo de respuesta debe ser de decenas de milisegundos y deben poder reaccionar inmediatamente a las acciones del usuario (modelo de actualización).

    Aquí está mi publicación de blog con una descripción más detallada de los algoritmos seleccionados.

    Mi equipo ha preparado una descripción general de los principales algoritmos del sistema de recomendación . Compartiré aquí uno de los enfoques 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

    Como señalan las otras respuestas, hay muchos algoritmos utilizados en los sistemas de recomendación. Una forma rápida de obtener una visión general muy general sobre algunos de los más comunes es echar un vistazo a los algoritmos implementados en algunos de los marcos de recomendación de código abierto, por ejemplo, Lenskit y MyMediaLite.

    Código fuente de Lenskit: kit de lentes / kit de lentes (específicamente, kit de lentes / kit de lentes, kit de lentes / kit de lentes y kit de lentes / kit de lentes – los enlaces de notas se ven iguales pero conducen a diferentes ubicaciones)

    Código fuente MyMediaLite: zenogantner / MyMediaLite (específicamente algoritmos de recomendación de elementos zenogantner / MyMediaLite y algoritmos de predicción de calificación zenogantner / MyMediaLite)

    Le recomendaría que lea esta publicación: diseñe un sistema de recomendación que tenga un excelente resumen de estos temas. Sin embargo, hablaré brevemente sobre esto aquí.

    En mi humilde opinión, el sistema de recomendación en general significa proporcionar contenido recomendado a los usuarios. Y debe ser libre de usar el algoritmo que desee y se trata de calidad de recomendación. Algunas personas pueden pensar que el sistema de recomendación es igual a CF (Filtrado Colaborativo), lo cual no estoy de acuerdo. Aunque CF es el algoritmo más popular utilizado, siempre debe encontrar el mejor algoritmo que funcione bien para su sistema en particular.

    Por ejemplo, para muchos sistemas simples, un algoritmo más simple puede superar fácilmente a la FQ. A veces, solo necesita recomendar los artículos más populares o los que les gustan a las conexiones de los usuarios, lo cual es bastante común en las aplicaciones de redes sociales. Entonces, el punto aquí es que comprender la naturaleza del sistema es mucho más importante.

    Por supuesto, la FQ funciona muy bien para muchos tipos de productos. Hulu está utilizando CF para recomendar videos y Amazon está utilizando una técnica similar para recomendar productos. También vale la pena mencionar que la ingeniería de características es igualmente importante al construir un sistema de recomendación. Si tiene una comprensión clara de qué características son importantes y la correlación entre las características, le será mucho más fácil mejorar la calidad.

    Bueno, hay varios enfoques en los sistemas de recomendación, piense en el caso más básico: recomienda los artículos más populares. Esta es una técnica útil cuando no sabes nada sobre tus usuarios, pero cuando ya tienes información sobre sus gustos puedes usar:

    • Filtrado colaborativo: que encuentra usuarios similares de acuerdo con las calificaciones que han otorgado o elementos similares de acuerdo con las calificaciones que han recibido.
    • Basado en contenido: que clasifica los elementos según las características que poseen, lo más común es usar las palabras clave que describen cada elemento.

    Estos dos son los enfoques básicos, pero tiene más opciones como Factorización matricial, que clasifica automáticamente los elementos que encuentran propiedades ocultas con la ayuda de Álgebra lineal.

    Finalmente, los sistemas de recomendación reales usan una mezcla de todas estas posibles soluciones creando un recomendación híbrido.

    Aquí te dejo una publicación de blog con una introducción sobre el Sistema de recomendaciones y ejemplos de implementación para los enfoques colaborativos y basados ​​en contenido.

    Fuzzy Kernel Density Estimation, junto con una distribución que disminuye el tiempo, como Weibull, funciona bien en entornos de baja y alta rotación, ya que puede controlar la tasa de disminución de la distribución de Weibull. El Weibull no se elige empíricamente: en 2011, el grupo Nielsen / Norman publicó un artículo que lo explicaba, y más tarde, los investigadores de Microsoft descubrieron que el interés de los visitantes en una página sigue una distribución de Weibull (de todos modos, aquí también hay una razón matemática , porque Weibull es una distribución de 2 parámetros, lo que básicamente significa que puede ser un montón de cosas ((-:).

    El núcleo Fuzzy puede ser algo tan simple como una distribución gaussiana en un conjunto de características pesadas (si trabaja con historiales de usuarios). La parte difícil aquí es más bien encontrar un enrejado de buen orden entre las características categóricas (si son continuas, entonces es mucho más fácil).

    El sistema de recomendación generalmente produce una lista de recomendaciones en una de dos formas:

    (a) filtrado basado en contenido

    (b) filtrado colaborativo (también conocido como ” filtrado basado en la personalidad “)

    También hay una investigación reciente que ha demostrado que un ” filtrado híbrido (que combina el filtrado basado en contenido y el filtrado colaborativo)”.

    Los algoritmos que se pueden utilizar en los sistemas de recomendación son: –

    1. Bolsa de palabras
    2. TF-IDF
    3. word2vec etc.

    Cualquier sistema de recomendación que valga la pena tendrá una variedad de algoritmos y variables disponibles para su uso.

    Como parte de una solución de personalización total, un sistema de recomendación puede usar una variedad de datos de usuario compilados a partir de seguimiento de comportamiento, estadísticas de compromiso, inteligencia de referencia, inteligencia de IP y datos CRM integrados, todo para crear una lista de intereses en constante cambio, que puede luego se utilizará junto con otros parámetros para mostrarle a su visitante exactamente lo que quiere ver, utilizando un widget de recomendación personalizable que es fácil de instalar en su sitio.

    Lo mejor de todo es que estas soluciones de personalización total ahora están más disponibles como plataformas SaaS basadas en la nube, que son escalables y accesibles para todas las formas de negocio.

    Depende del tipo de motor de recomendación que desee implementar. Dependiendo de la aplicación específica, puede basarse en popularidad (New York Times), enfoque clasificador, Filtrado colaborativo (Amazon), Factorización matricial (Netflix), etc. Durante mi investigación sobre los sistemas de recomendación, creé una guía para principiantes para enumerar estos enfoques. con cómo se usan en los sistemas de la vida real. Por favor, siéntase libre de agarrarlo desde el siguiente enlace:

    Libro electrónico de aprendizaje automático para sistemas de recomendación

    Avíseme si necesita ayuda para comprender alguna parte de ella.

    El algoritmo más utilizado en el sistema de recomendación es el filtrado colaborativo basado en el algoritmo vecino más cercano. Pero tiene serios problemas inherentes. También están surgiendo otros algoritmos, como la toma de decisiones con criterios múltiples (MCDM) y Q-Learning.