Un SR es un software program que sugiere productos, servicios, o contenidos a los distintos usuarios basándose en una variedad de factores como lo pueden ser sus preferencias, historial de interacción, comportamientos de compra y datos demográficos o calificaciones que realicen a diferentes productos. Además, Estos sistemas son utilizados ampliamente en plataformas de comercio electrónico, servicios de streaming, redes sociales y muchas otras aplicaciones para mejorar la experiencia del usuario y de esta manera aumentar retención de los clientes en sus respectivos aplicativos generando mayores beneficios económicos.
Por lo cual, durante el módulo de sistemas de recomendación realizado en IEBS se abordó un ejemplo básico desde cero y mediante diferentes dash se fue incluyendo mejores para dicho sistema hasta el punto closing de incorporar el algoritmo KNN. De tal manera, que fue un proceso iterativo donde se pudo evidenciar el avance del sistema de recomendación que se trabajó durante el modulo. A continuación, explicare en cada uno de los módulos los puntos principales que se abordaron y finalmente complementare un ejercicio que se trabajó en el último modulo mediante la librería shock.
Para comenzar en el primer dash nos sumergimos en la parte teórica de un sistema de recomendación, conociendo los diferentes tipos de arquitecturas, además, los niveles de personalización que podríamos llegar a tener. A su vez, conocer los diferentes tipos de implementaciones que podríamos desarrollar en estos casos.
En la parte práctica del módulo se exploró trabajando con un dataset de películas y scores donde el enfoque period sencillo al momento de recomendar las películas, teniendo en cuenta la frecuencia de votos, calificaciones promedio y diferentes aspectos. Incluso se agregó una profundidad mayor aplicando filtros para mejor nuestro SR excluyendo recomendaciones a películas que ya fueron vistas por los usuarios.
Por lo cual, en el 2 dash nos enfocamos en los filtrados colaborativos donde en primera instancia nos sumergimos en la teoría entendiendo algunos conceptos principales como lo puede ser saber que los podemos implementar basándonos en modelos o memoria para su uso. Dejo algunos conceptos claves:
Filtrado colaborativo: Se basa en la recopilación y el análisis de información sobre el comportamiento de los usuarios para identificar similitudes entre usuarios y productos.
· Basado en usuarios: Recomendaciones basadas en usuarios con comportamientos y preferencias similares.
· Basado en ítems: Recomendaciones basadas en ítems similares que han sido evaluados de manera comparable por los usuarios.
Filtrado basado en contenido: Utiliza las características del ítem (descripciones, etiquetas, categorías) para recomendar productos similares a los que el usuario ha mostrado interés.
Modelos híbridos: Combinan múltiples enfoques, como filtrado colaborativo y basado en contenido, para mejorar la precisión de las recomendaciones.
Posteriormente, se usó como base la última versión de nuestro SR anterior para comenzar a mejorarlo en base a lo visto. En primer lugar, se comenzó a calcular la similitud entre usuarios para implementar dicha lógica en lo que estamos desarrollando y obtener recomendaciones personalizadas. Se usó la distancia Euclidea para identificaras los usuarios más próximos implementado diferentes funciones.
Entre ellas la “distancia_entre_todos” la cual se basaba en el cálculo de la distancia entre un usuario de referencia y los otros usuarios. También “distancia_entre_usuarios” donde se compara las calificaciones de dos usuarios para encontrar una medida de distancia entre ellos, siempre y cuando hayan calificado al menos un número mínimo de ítems en común. Si no hay suficientes ítems en común, se considera que los usuarios son muy diferentes.
En el último dash, se abarco la parte diferentes técnicas un poco más complejas para los sistemas de recomendación, como lo puede ser usando Deep studying. En la parte práctica se trabajó con la última versión que generamos anteriormente, el objetivo como tal period poder generalizar el cálculo de los usuarios con el uso de funciones. Donde por ejemplo se redefinió la distancia de todos, considerando un número de usuarios a analizar y para el caso de “distancia_entre_usuarios” se actualizo para no considerar valores de usuarios muy dispersos.
Por lo cual, se implementó la función de sugerencias que recomienda películas al usuario de referencia basándose en el usuario más cercano. Donde se obtienen las notas del usuario de referencia, A su vez, con las notas del usuario comparable excluyendo las películas que el usuario de referencia ya haya evaluado.
Después, las películas recomendadas se ordenan por su calificación. Luego, se mejoró la funcionalidad de las recomendaciones considerando varios usuarios cercanos en lugar de solo uno, también, se modificó para obtener los okay usuarios más cercanos y basar las recomendaciones en sus evaluaciones. Finalmente añadiendo una función para agregar un nuevo usuario al sistema y generar recomendaciones personalizadas para él.
Por ende, se nos dejó un proyecto closing donde el objetivo period desarrollar un pequeño algoritmo de sistema de recomendación usando la librería de Suprirse. Donde pudimos usar algunos algoritmos como knnbasic y knnwithmeans como principales diferencias se destaca lo siguiente:
Se definen dos instancias de modelos con sus respectivos hiperparametros. El primer modelo, KNN (Okay-Nearest Neighbors), usa la clase KNNBasic de Shock. Los hiperparametros son: okay=50, que especifica el uso de los 50 vecinos más cercanos para realizar predicciones, y sim_options, un diccionario con identify: ‘pearson’ para utilizar el coeficiente de correlación de Pearson para medir la similitud entre usuarios, y user_based: True, que indica que el algoritmo se basa en usuarios, generando recomendaciones a partir de las calificaciones de usuarios similares al objetivo.
El segundo modelo es una variante del algoritmo Okay-Nearest Neighbors que utiliza la media de las calificaciones, implementado con la clase KNNWithMeans de Shock. Sus hiperparámetros son: okay=50, que usa los 50 vecinos más cercanos para realizar predicciones, y sim_options, un diccionario con identify: ‘cosine’ para medir la similitud del coseno entre ítems, y user_based: False, indicando que el algoritmo se basa en ítems, generando recomendaciones a partir de las calificaciones de ítems similares al ítem objetivo.
A su vez, entre estos dos algoritmos el que tuvo rmse más bajo fue el del KNNWithMeans con un 0.90 el KNN básico llego a 0.96, además para complementar el proyecto implemente dos modelos más avanzados que consisten en la factorización de matrices use SVD y obtuve un rmse del 0.88, también con SVD++ alcance el 0.87 siendo el modelo más completo de todos.
– SVD: Un método de factorización de matrices que descompone la matriz de calificaciones en características latentes de usuarios e ítems.
– SVD++: Una extensión de SVD que incorpora información implícita de interacciones adicionales para mejorar la precisión de las predicciones.