Supongo que estás construyendo para aprender, ya que también estás buscando un problema interesante para resolver.
GroupLens proporciona los conjuntos de datos clásicos, en mi opinión, para jugar con los recomendadores (http://grouplens.org/node/12). Todos los conjuntos de datos son pequeños (100K-10M puntos de datos). Son inusualmente limpios y densos. Su tema, clasificaciones de películas, son fáciles de entender y evaluar intuitivamente.
Para la experimentación, los siguientes también son interesantes y de una escala que aún es apropiada para la experimentación en una máquina:
- ¿Cuál es la diferencia entre la deserción y la normalización de lotes?
- ¿Aprendizaje automático en una caja negra / prueba de conocimiento cero?
- ¿Cuál es la maldición de la dimensionalidad?
- ¿Cómo se calculan los intervalos de confianza en un conjunto de características?
- Cómo construir un conjunto de datos para el aprendizaje automático
- BookCrossing (http: //www.informatik.uni-freibu…)
- Jester (http://goldberg.berkeley.edu/jes…)
- Libimseti (http://www.occamslab.com/petrice…)
Para divertirnos con conjuntos de datos mucho más grandes, sugeriría que StackOverflow y los volcados de datos públicos de Wikipedia sean fantásticos y lleguen a fuentes de datos más “reales”: grandes, un poco ruidosos, escasos.
Soy el autor principal de la implementación de recomendaciones de Apache Mahout (http://mahout.apache.org/). Contiene una implementación distribuida basada en Hadoop y una implementación Java pura no distribuida simple de muchos algoritmos de recomendación (métodos de vecindad basados en el usuario y basados en elementos, para enfoques de factorización matricial). Creo que Mahout es quizás el marco de recomendación de código abierto más popular que existe, y creo que no te equivocarías al comenzar allí. El libro Mahout in Action lo explica en detalle.
No me importa señalar que estoy construyendo mi propia versión de un sistema de recomendación de próxima generación como el proyecto Myrrix (http://myrrix.com). Uno de sus objetivos es ser aún más fácil de configurar y ejecutar. También es de código abierto y una forma bastante simple de crear un prototipo de un sistema de recomendación.
También bastante fuerte en mi opinión son …
- Duine (http://www.duineframework.org/)
- easyrec (http://easyrec.org/)
Para evaluar las recomendaciones, realmente , debe ejecutar pruebas empíricas. Haga recomendaciones a los usuarios en vivo, verifique la tasa de clics / conversiones que resulta de un enfoque versus otro.
Fuera de línea, en el laboratorio, un enfoque común para evaluar un recomendante es ver qué tan bien puede predecir las calificaciones. Algunos datos se retienen como prueba, luego las estimaciones del recomendante se comparan con los valores reales. El error absoluto promedio o el error cuadrático medio son medidas populares de cuán precisas fueron las estimaciones.
Esto solo funciona si su entrada de recomendación es algo así como calificaciones, o si el recomendación funciona prediciendo calificaciones. No todos lo hacen. En ese caso, debe recurrir a pruebas simples de precisión / recuperación y derivados como F1 / ganancia acumulada con descuento normalizada.
Estas son pruebas problemáticas para los recomendadores, pero son mejores que nada. Por qué eso es suficiente para completar otra pregunta y respuesta.