imagenes etiqueta descripcion algorithm machine-learning recommendation-engine

algorithm - etiqueta - meta title seo



Recomendación basada en etiquetas/palabras clave (5)

Me pregunto qué algoritmo sería inteligente usar para un entorno de comercio electrónico orientado a etiquetas:

  • Cada elemento tiene varias etiquetas. ES DECIR:

    Nombre del elemento: "Metallica - Black Album CD", Etiquetas: "metallica", "black-album", "rock", "music"

  • Cada usuario tiene varias etiquetas y amigos (otros usuarios) vinculados a ellos. ES DECIR:

    Nombre de usuario: "testguy", Intereses: "python", "rock", "metal", "ciencia informática" Amigos: "testguy2", "testguy3"

Necesito generar recomendaciones para dichos usuarios al revisar sus etiquetas de interés y generar recomendaciones de una manera sofisticada.

Ideas:

  • Se puede usar un algoritmo de recomendación híbrido ya que cada usuario tiene amigos (combinación de recomendaciones basadas en el contexto de colaboración).
  • Tal vez al usar etiquetas de usuario, usuarios similares (pares) se pueden encontrar para generar recomendaciones.

  • Tal vez directamente las etiquetas coincidentes entre los usuarios y los elementos a través de etiquetas.

Cualquier sugerencia es bienvenida. Cualquier biblioteca basada en Python también es bienvenida, ya que haré este motor experimental en lenguaje Python.


Si puede, busque una copia de la Inteligencia Colectiva de Programación de O''Reilly, por Toby Segaran. Hay una solución modelo para exactamente este problema (con un montón de otras cosas muy, muy buenas).


Su problema es similar a los motores de recomendación de productos, como el sitio bien publicitado de Amazon. Estos usan un algoritmo de aprendizaje llamado reglas de asociación , que básicamente construyen una probabilidad condicional de que el usuario X compre el producto Y en base a las características comunes Z entre el usuario y el producto. Muchos kits de herramientas de código abierto implementan reglas de asociación, como Orange y Weka .


Puede usar el módulo semántico de Python para Drools para especificar sus reglas en el lenguaje de scripts python. Puedes lograr esto fácilmente usando Drools. Es un excelente motor de reglas que usamos para resolver varios motores de recomendación.


1) Peso tus etiquetas.

Las etiquetas caen en varios grupos de interés:

  • Mis etiquetas que ninguno de mis amigos comparte
  • Etiquetas que comparten mis amigos, pero yo no
  • Mis etiquetas que son compartidas por varios de mis amigos.

(a veces es posible que desee considerar las etiquetas de amigo de un amigo también, pero en mi experiencia el esfuerzo no ha valido la pena. YMMV.)

Identifique todas las etiquetas que la persona y / o los amigos de la persona tienen en interés, y agregue un peso a las etiquetas para esta persona. Una fórmula posible simple para el peso de la etiqueta es

(tag_is_in_my_list) * 2 + (friends_with_tag)/(number_of_friends)

Tenga en cuenta el número mágico 2, que hace que su propia opinión valga el doble que la de todos sus amigos juntos. Siéntase libre de modificar :-)

2) Pésese sus artículos

Para cada elemento que tenga alguna de las etiquetas en su lista, solo agregue todos los valores ponderados de las etiquetas. Un valor más alto = más interés.

3) Aplicar un umbral.

La forma más simple es mostrar al usuario los primeros n resultados.

Los sistemas más sofisticados también aplican anti-etiquetas (es decir, temas sin interés) y hacen muchas otras cosas, pero he encontrado que esta fórmula simple es efectiva y rápida.


Usaría una Máquina Restringida de Boltzmann. Obtiene el problema de etiquetas similares pero no idénticas bastante bien.