Desarrollo de una librería en Python de sistemas de recomendación
Resumen
Este trabajo presenta el desarrollo de una librería en Python diseñada para implementar, comparar y evaluar sistemas de recomendación de forma modular y extensible. Su diseño permite integrar fácilmente distintos modelos y realizar experimentos de forma sistemática, manteniendo una estructura clara y coherente en todas las fases del proceso.
En términos de algoritmos, se han implementado desde enfoques clásicos como el recomendador por popularidad, métodos basados en vecinos próximos (K-Nearest Neighbors, tanto user-based como item-based) y técnicas de factorización de matrices (Matrix Factorization y BPRMF), hasta modelos más avanzados basados en redes neuronales, como el Multi-Layer Perceptron (MLP) y Graph Neural Networks (GNN). Todos ellos comparten una misma interfaz, lo que simplifica su uso y permite una evaluación uniforme.
La librería ha sido validada sobre dos conjuntos de datos ampliamente utilizados en la literatura: MovieLens 100K (con valoraciones explícitas de películas) y Foursquare New York (con interacciones implícitas en puntos de interés). Para cada uno, se han evaluado métricas de relevancia (precisión, recall, NDCG), así como de novedad (Expected Popularity Complement) y diversidad (índice de Gini y Aggregate Diversity), ofreciendo así una visión más completa del rendimiento de los modelos.
Gracias a su estructura flexible, la librería es fácilmente ampliable con nuevos modelos, métricas o datasets, y puede utilizarse tanto en contextos educativos como en proyectos de investigación. This work presents the development of a Python library designed to implement, compare, and evaluate recommender systems in a modular and extensible way. Its design allows for the easy integration of different models and the systematic execution of experiments, maintaining a clear and coherent structure throughout all stages of the process.
In terms of algorithms, the library includes both classical approaches—such as popularity-based recommendation, nearest neighbors methods (K-Nearest Neighbors, both user-based and item-based), and matrix factorization techniques (Matrix Factorization and BPRMF)—and more advanced models based on neural networks, such as Multi-Layer Perceptron (MLP) and Graph Neural Networks (GNN). All of them share a common interface, which simplifies their use and enables consistent evaluation.
The library has been validated on two datasets widely used in the literature: MovieLens 100K (with explicit movie ratings) and Foursquare New York (with implicit check-in interactions at points of interest). For each dataset, performance has been assessed using relevance metrics (precision, recall, NDCG), as well as novelty (Expected Popularity Complement) and diversity (Gini index and Aggregate Diversity), offering a more comprehensive view of model behavior.
Thanks to its flexible structure, the library can be easily extended with new models, metrics, or datasets, making it suitable for both educational settings and research projects.
Trabajo Fin de Grado
Desarrollo de una librería en Python de sistemas de recomendaciónTitulación / Programa
Grado en Ingeniería Matemática e Inteligencia ArtificialMaterias/ categorías / ODS
KMIPalabras Clave
Sistemas de Recomendación, Python, Librería, Evaluación, Filtrado ColaborativoRecommender Systems, Python, Library, Evaluation, Collaborative Filtering