Los sistemas de recomendación (SR) son herramientas que han revolucionado el mercado de la period digital y que son utilizadas por todas las grandes plataformas que ofrecen servicios, facilitando la personalización de experiencias de usuario en diversas plataformas como servicios de streaming, comercio electrónico y redes sociales.
Dentro del contexto de Python, una de las librerías más destacadas para la creación de sistemas de recomendación es Shock, desarrollada por Nicolas Hug. Este artículo explora esta librería, sus usos, aplicaciones y proporciona un resumen de los principales tópicos relacionados con su implementación y funcionalidad.
¿Qué es la Librería Shock?
Shock es una biblioteca de Python creada para desarrollar y analizar sistemas de recomendación. Esta herramienta ofrece recursos que permiten evaluar el rendimiento y ajustar los parámetros de manera eficiente. Shock simplifica la implementación de varios tipos de algoritmos de recomendación, como los basados en filtrado colaborativo.
Filtrado Colaborativo
Shock es especialmente útil para implementar algoritmos de filtrado colaborativo, una de las técnicas más utilizadas en la construcción de sistemas de recomendación. Estos algoritmos se basan en la concept de que los usuarios que han coincidido en sus preferencias en el pasado continuarán teniendo opiniones similares en el futuro.
Shock ofrece varios algoritmos de filtrado colaborativo, tales como:
- Okay-Nearest Neighbors (KNN): Este método identifica los vecinos más cercanos (usuarios o ítems similares) y hace recomendaciones basadas en sus preferencias.
- Matrix Factorization (SVD): La Descomposición en Valores Singulares (SVD) es una técnica que descompone la matriz de usuarios e ítems, capturando las características subyacentes de los datos de recomendación.
Hiperparámetros y Optimización
Ajustar los hiperparámetros es un paso essential en la elaboración de modelos de recomendación eficaces. Shock incorpora métodos para la búsqueda de hiperparámetros óptimos utilizando GridSearchCV, que permite definir un espacio de búsqueda y encontrar la mejor combinación de parámetros mediante la validación cruzada.
Evaluación de Modelos
Evaluar la eficacia de los algoritmos de recomendación es esencial para garantizar su rendimiento óptimo. Shock proporciona herramientas integradas para la evaluación utilizando métricas comunes como el Error Medio Absoluto (MAE) y el Error Cuadrático Medio (RMSE). Estas métricas permiten comparar diferentes algoritmos y elegir el que mejor se adapte a los datos.
Dataset y Construcción de DataFrames
Shock facilita la carga y manipulación de conjuntos de datos. La librería se centra en el manejo de datasets que contienen información sobre usuarios, ítems y sus calificaciones. Entre los métodos disponibles para la gestión de datos, se incluyen:
- Dataset.load_builtin(): Carga datasets predefinidos, como el conjunto de datos MovieLens.
- Dataset.load_from_df(): Permite cargar datos desde un DataFrame de pandas.
Cross-Validation y Evaluación
Shock también facilita la evaluación del rendimiento de los modelos mediante la validación cruzada. El método cross_validate divide el conjunto de datos en partes para entrenar y evaluar el modelo, proporcionando una visión más completa y robusta de su rendimiento.
Predicción y Recomiendación
La capacidad de predecir calificaciones y ofrecer recomendaciones personalizadas es esencial en cualquier sistema de recomendación. Shock ofrece métodos para hacer predicciones individuales y crear listas de recomendaciones específicas para cada usuario.
Desafios
- Datos disponibles: Si nuestro dataset contiene pocos datos los resultados pueden no ser tan precisos.
- Ajuste de hiperparámetros: Para que una técnica funcione como es debido y obtener buenas métricas de predicción hay que asegurarse de que los parámetros del modelos están bien ajustados.
Ejemplo práctico Kaggle
En el siguiente enlace se proporciona el acceso a un pocket book donde se utiliza esta librería a tavés de la optimización con GridSearch de su modelo SVD:
https://www.kaggle.com/code/kanruwang/recommender-system-surprise-svd
Bibliografía y referencias
https://surprise.readthedocs.io/en/stable/getting_started.html#use-a-custom-dataset