2009-12-04 20 views
19

Estoy buscando un algoritmo de sugerencia simple para implementar en mi aplicación web. Al igual que Netflix, Amazon, etc ... Pero más simple. No necesito equipos de doctores trabajando para obtener una mejor métrica de sugerencias.Algoritmo de sugerencia/recomendación simple

Así que decir que tengo:

  • Usuario1 le gusta Object1.
  • Usuario2 le gusta Object1 y Object2.

Sugiero a Usuario1 que también les gusta Object2.

Obviamente puedo encontrar algo ingenuo. Estoy buscando algo vetado y fácil de implementar.

Respuesta

1

Es posible que desee mirar Association rule learning y Apriori algorithm. La idea básica detrás es que usted cree reglas como "si el usuario le gusta Object1, que el usuario le gusta Object2" y comprueba qué tan bien describen (su) realidad. En su ejemplo concreto, esta regla tendría un Soporte de 2 (como dos Usuarios como Objeto1) y una confianza del 50% a (como la regla es verdadera en 1 de 2 casos). Acabo de implementar una prueba básica de concepto (en realidad mis primeros pasos en Hadoop) y no es demasiado difícil de hacer.

O bien, puede consultar Apache Mahout - Taste. Aunque nunca lo use yo mismo.

11

prueba un algoritmo Slope One, es uno de los más utilizados para este tipo de problema.

here's una implementación de ejemplo en T-SQL

+1

+1 para el enlace al código fuente. Aquí está Slope One en 40 líneas de Python (y una explicación detallada): http://www.serpentine.com/blog/2006/12/12/collaborative-filtering-made-easy/ –

1

Me gustaría ir con K vecinos más cercanos. El wikipedia entry lo explica bien y tiene enlaces a implementaciones de referencia.

0

k-vecino más cercano algoritmo

0

he creado un algoritmo de artículos sugerido que utiliza palabras clave (en contraposición a las "compras de productos") para determinar la correlación. Se necesita una palabra clave y se ejecuta en todos los demás artículos donde aparece esa palabra clave y produce resultados en función de qué artículos tienen la mayor cantidad de palabras clave coincidentes.

Además de la necesidad obvia de almacenar en caché dicha información, ¿hay algún problema con él al usar un método similar?

Cuestiones relacionadas