systems recommender recommendation popular most machine learning handbook algorithm recommendation-engine

algorithm - recommender - ¿Qué se debe considerar al construir un motor de recomendación?



recommendation system python (4)

Leí el libro Programming Collective Intelligence y lo encontré fascinante. Recientemente me enteré de un desafío que Amazon había publicado en el mundo para proponer un mejor motor de recomendación para su sistema.

El ganador aparentemente produjo el mejor algoritmo al limitar la cantidad de información que se le estaba suministrando.

Como primera regla general, supongo ... " Más información no es necesariamente mejor cuando se trata de algoritmos difusos".

Sé que es subjetivo, pero en última instancia es algo medible (clics en respuesta a las recomendaciones).

Dado que la mayoría de nosotros estamos lidiando con la web en estos días y la búsqueda puede considerarse una forma de recomendación ... Sospecho que no soy el único que apreciaría las ideas de otras personas sobre esto.

En pocas palabras, "¿Cuál es la mejor manera de elaborar una recomendación?"


De acuerdo con @Ricardo. Esta pregunta es demasiado amplia, como preguntar "¿Cuál es la mejor manera de optimizar un sistema?"

Una característica común de casi todos los motores de recomendación existentes es que hacer la recomendación final se reduce a la multiplicación de algunas matrices y vectores. Por ejemplo, multiplique una matriz que contenga ponderaciones de proximidad entre usuarios por un vector de clasificaciones de elementos.

(¡Por supuesto que tienes que estar listo para que la mayoría de tus vectores sean super dispersos!)

Mi respuesta es seguramente demasiado tarde para @Allain, pero para otros usuarios que buscan esta pregunta a través de la búsqueda, envíenme un MP y formulen una pregunta más específica y me aseguraré de responder.

(Yo diseño motores de recomendación profesionalmente).


No desea usar "popularidad general" a menos que no tenga información sobre el usuario. En su lugar, desea alinear a este usuario con usuarios similares y ponderar en consecuencia.

Esto es exactamente lo que hace la Inferencia Bayesiana . En inglés, significa ajustar la probabilidad general de que le guste algo (la calificación promedio) con las calificaciones de otras personas que generalmente también votan a su favor .

Otro consejo, pero esta vez ad hoc: descubro que hay personas donde, si les gusta algo, seguramente no me gustará. No sé si este efecto es real o imaginario, pero podría ser divertido crear una especie de "efecto negativo" en lugar de agrupar a las personas por similitud.

Finalmente, hay una compañía especializada en exactamente esto llamada SenseArray . El propietario ( Ian Clarke de la fama de Freenet ) es muy accesible. Puedes usar mi nombre si lo llamas.


@Lao Tzu, estoy de acuerdo contigo.

Según mi opinión, los motores de recomendación están formados por:

  • Contexto Entrada alimentada desde sistemas sensibles al contexto (registrando todos sus datos)
  • Razonamiento lógico para filtrar el más obvio
  • Sistemas expertos que mejoran sus datos subjetivos a lo largo del tiempo en función de las entradas de contexto, y
  • Razonamiento probabilístico para tomar decisiones cercanas a la proximidad basadas en la suma ponderada de acciones previas (creencias, deseos e intenciones).

PD: hice ese motor de recomendación.


Existe un área de investigación completa en informática dedicada a este tema. Sugeriría leer algunos artículos .