2012-05-11 13 views
5

Estoy buscando escribir un sistema de recomendación básico en Objective-C y estoy buscando un algoritmo básico para el trabajo. Desafortunadamente, los sistemas listos para usar están fuera de lugar, ya que ninguno parece ser para Objective-C.Algoritmo del motor de recomendación básica

Voy a tener una base de datos de artículos, cada uno con etiquetas (piense en películas con etiquetas como "terror", "acción", etc.). Cada artículo tendría ~ 5 o menos de estas etiquetas. Cuando un usuario utiliza por primera vez la aplicación, su perfil se cebará en función de su entrada a una serie de preguntas, asociando algunas etiquetas con su perfil.

A medida que el usuario continúa usando el sistema y valorando varios elementos (en base al odio/amor/me gusta), me gustaría ajustar la ponderación de las etiquetas recomendadas según ese comentario. También me gustaría tomar algunas otras propiedades de sus calificaciones a medida que crece su perfil, como por ejemplo "los 80" si esto se refiere a las películas. O tal vez director, apegándose al tema de la película.

Estoy optando por evitar los sistemas de recomendación normales (o al menos populares) en los que busca usuarios similares para generar recomendaciones. Esto va a tener una base de datos grande y usuarios mínimos para comenzar.

¿Alguien puede recomendar un buen punto de partida para un algoritmo como este, odiaría reinventar la rueda, y hay mucho por ahí?

+0

No tengo experiencia con esto, pero creo que esto podría hacerse sin ningún motor o marco, probablemente dándole una mayor flexibilidad y control. Para los conceptos básicos, no creo que tenga que ser mucho más que contar etiquetas y quizás años y cosas por el estilo (los 80 por ejemplo), y luego calcular lo que les gusta a los usuarios y encontrar coincidencias en eso, o calcular el puntaje de cada película. con el usuario y elige la parte superior, algo. – altschuler

+0

¿Qué tal crear una base de conocimiento y utilizar un algoritmo de encadenamiento hacia atrás? es un poco exagerado, pero supongo que eso funcionará. – doNotCheckMyBlog

+1

¿Hay alguna razón por la cual se adhiere a objetivo-c, si tiene un producto listo para usar en un idioma diferente? Lo usaría, ya sea escribiendo este idioma como el código, o para usarlo como una implementación existente y solo construir una interfaz para comunicarse entre los dos módulos. – amit

Respuesta

0

Puede utilizar la recomendación basada en el elemento que suena perfecto para sus necesidades. Luego puede comenzar a incorporar etiquetas en la ponderación, pero por ahora sugeriría considerar solo los artículos.

Puedes aprender un poco más en http://www.cs.carleton.edu/cs_comps/0607/recommend/recommender/itembased.html Hay algunas implementaciones buenas en la red.

Lo que mencionó en su publicación se denominaría filtrado colaborativo basado en el usuario.

1

podría consultar el python-recsys: https://github.com/ocelma/python-recsys, este software utiliza el algoritmo SVD, creo que es un algoritmo base pero lo suficientemente efectivo. La biblioteca requerida es numpy y scipy, que están escritas en C y envueltas por Python. Creo que es fácil de compilar y portar a objetivo-c

Cuestiones relacionadas