[en] Recommender systems are used in many applications due to the fact that they have potential to help people by selecting items according to their needs or tastes. In the current era of communications, they are especially useful on the Internet, which is the most important application used by users to exchange information. In addition, programs that work with this amount of data, need to provide the results in the shortest time possible, using a large number of structures and algorithms to operate efficiently . This Bachelor's Thesis is a study and investigation on these recommendation systems, with particular emphasis on neighbourhood-based collaborative filtering ones. We have developed a system that is capable of running some similarity measures used in the field, such as cosine similarity or the Pearson correlation (with some variations), allowing different known data structures being plugged in the process. On the other hand, a study of the various parameters is included to configure both algorithms and structures in order to achieve the most beneficial combination. Besides, a new algorithm in the field of recommendation has been implemented, the longest common subsequence algorithm, to test it against the other measures previously discussed. To check the performance of these algorithms with different configurations, some test with real data have been done, particularly with Movielens (100,000 ratings). The results have been obtained by making comparisons using error metrics (RMSE and MAE, focused on checking the difference between the actual and predicted scores) and using ranking metrics (precision, recall, NDCG, and MRR, oriented to identify which items are relevant to the user from a list of recommended items). As for the analysis of structures, measurements have been made in terms of time and memory used in the executions. As a summary, we have observed that the hash tables are the structures that more memory uses and they do not always spend less time, so in certain parts of the application they are worse than other simpler structures. Furthermore, we show that in some cases (ranking metrics) the algorithm proposed herein of the longest common subsequence obtains better results than other common measures of similarity, although in the case of error metrics, the Pearson correlation, however, achieves the lowest error. This thesis has resulted in a publication in a national congress where results about time and memory analysis of data structures for recommendation are reported

[es] Los sistemas de recomendación se emplean en un gran número de aplicaciones debido al potencial que tienen para ayudar a las personas a elegir artículos en función de sus necesidades o gustos. En la era actual de las comunicaciones, son especialmente útiles en Internet, ya que es el principal medio empleado por los usuarios para intercambiar información. Además, los programas que trabajan con esta cantidad de datos, necesitan proporcionar los resultados en el menor tiempo posible, haciendo uso de un gran número de estructuras y algoritmos para operar de manera eficiente. Este Trabajo de Fin de Grado consiste en un estudio y una investigación sobre dichos sistemas de recomendación, haciendo especial énfasis en los de filtrado colaborativo basados en vecinos. Se ha llevado a cabo la implementación de un sistema que permite ejecutar algunas medidas de similitud utilizadas en el campo, como la similitud coseno o la correlación de Pearson (con algunas variantes) y que además permite realizar ejecuciones con distintas estructuras de datos conocidas. Por otro lado, se incluye un estudio sobre los distintos parámetros a configurar tanto en los algoritmos como en las estructuras, para evaluar qué combinación es la más beneficiosa. También, se ha llevado a cabo la adaptación e implementación al campo de la recomendación del algoritmo de la subcadena común más larga, para así comprobar su funcionamiento frente a las medidas de similitud anteriormente comentadas. Para comprobar el rendimiento de estos algoritmos con distintas configuraciones, se han efectuado pruebas con un conjunto de datos real, en concreto con Movielens (100.000 puntuaciones). Los resultados han sido obtenidos efectuando comparaciones mediante métricas de error (RMSE o MAE, centradas en comprobar la diferencia entre las puntuaciones reales y las predichas) y mediante métricas de ranking (precision, recall, NDCG y MRR, orientadas a identificar qué artículos son relevantes a partir de una lista de recomendados). En cuanto al análisis de las estructuras, se han realizado mediciones tanto de tiempo como de memoria consumidos en las ejecuciones. Como resumen, hemos observado que las tablas hash son las estructuras que más memoria utilizan y no siempre son las que menos tiempo emplean, por lo que en ciertas partes de la aplicación son peores que otras estructuras más sencillas. Asimismo, se ha mostrado que en algunos casos (métricas de ranking) el algoritmo que se propone en este trabajo de la subcadena común más larga obtiene mejores resultados que el resto de medidas de similitud, aunque en el caso de las métricas de error, la correlación de Pearson logra un error menor. Este trabajo ha resultado en una publicación en un congreso nacional donde se reportan los resultados sobre el análisis de tiempo y memoria de las estructuras para recomendación.