Project: Implement a Recommender system using a bipartite network projection
¿Qué es un sistema de recomendación?
Un sistema de recomendación es una técnica de inteligencia artificial diseñada para sugerir productos, servicios o contenidos a los usuarios basándose en sus intereses, comportamientos pasados o similitudes con otros usuarios. Estos sistemas son esenciales en plataformas como Amazon, Netflix y Spotify para personalizar la experiencia del usuario y aumentar el compromiso.
Existen varios enfoques para construir sistemas de recomendación, entre ellos:
Filtrado colaborativo: basado en las acciones de usuarios similares.
Filtrado basado en contenido: basado en las características del ítem y del usuario.
Métodos basados en grafos: modelando relaciones de recomendación como redes.
En este proyecto se utilizará un enfoque basado en redes de grafos.
¿Qué es una Red Bipartita?
Una red bipartita es un tipo especial de grafo donde los nodos pueden dividirse en dos conjuntos disjuntos, y donde las conexiones (aristas) solo existen entre nodos de diferentes conjuntos, no dentro del mismo conjunto.
En nuestro caso:
Un conjunto corresponde a usuarios.
El otro conjunto corresponde a productos.
Las aristas representan que un usuario realizó una reseña de un producto.
Formalmente:
𝑈 = conjunto de usuarios
𝑉 = conjunto de productos
Cada arista (𝑢 , 𝑣) - conecta un usuario 𝑢 con un producto 𝑣
¿Qué es una Proyección de Red Bipartita?
¿Qué es una Proyección de Red Bipartita? Una proyección de red bipartita consiste en transformar una red bipartita en una red normal (unipartita) donde:
Los nodos pertenecen a un solo conjunto (por ejemplo, productos).
Se conectan entre sí si comparten vecinos comunes (usuarios que calificaron ambos productos).
En nuestro proyecto:
Productos están conectados si fueron reseñados por los mismos usuarios.
El peso de la conexión representa cuántos usuarios compartidos existen entre dos productos.
Esto nos permite construir una red de productos similar a: "Estos dos productos suelen ser evaluados por los mismos usuarios, probablemente sean similares o relevantes uno para el otro."
Objetivo del Proyecto
El objetivo principal es crear un sistema de recomendación de productos a partir de las reseñas de usuarios en Amazon, utilizando:
Redes bipartitas para modelar interacciones.
Proyección para construir una red de productos.
Técnicas de análisis de redes para recomendar productos relevantes basados en sus conexiones más fuertes.
Sistema de Recomendación Basado en Proyecciones de Redes Bipartitas
Este proyecto implementa un sistema de recomendación de productos utilizando técnicas de teoría de grafos. Se parte de un dataset de reseñas de Amazon (Electrónica), en donde usuarios valoran productos. A partir de estos datos se construye una red bipartita (usuarios ↔ productos), se proyecta sobre los productos, y se utiliza dicha red para encontrar productos similares mediante vecinos más cercanos en el grafo.
Run to view results
Carga y Exploración Inicial del Dataset
En esta sección se carga el dataset de reseñas de Amazon y se realiza una limpieza inicial de los datos. Primero, se utilizan funciones de pandas para leer el archivo que contiene los identificadores de usuarios (userId), productos (productId) y las calificaciones (rating) otorgadas. Posteriormente, se realiza un filtrado para quedarnos únicamente con las reseñas de 5 estrellas, ya que estas representan las interacciones más positivas y sólidas entre usuarios y productos. Finalmente, se seleccionan únicamente las columnas relevantes, de manera que los datos estén preparados para construir el grafo bipartito de usuarios y productos. Esta limpieza ayuda a reducir la complejidad de la red, mejora el rendimiento del sistema de recomendación y se enfoca en relaciones de alta calidad.
Run to view results
Filtrado de Reseñas Relevantes
Para enfocar el sistema de recomendación en interacciones altamente positivas, se realiza un filtrado del dataset original, conservando únicamente las reseñas en las que los usuarios otorgaron una calificación de 5 estrellas. Esta estrategia permite trabajar sobre un subconjunto de datos que refleja productos bien valorados y usuarios satisfechos, lo cual es esencial para fortalecer la calidad de las recomendaciones. Además, al reducir la cantidad de registros, se optimiza el rendimiento de las operaciones posteriores, como la construcción de la red bipartita y la proyección. En esta etapa, se observa que el número de registros seleccionados representa una porción significativa del dataset inicial, concentrándose en las mejores experiencias de usuario.
Run to view results
Construcción del Grafo Bipartito
Construcción del Grafo Bipartito
En esta etapa del proyecto se procede a modelar las relaciones entre usuarios y productos utilizando un grafo bipartito. Un grafo bipartito es una estructura donde los nodos se dividen en dos conjuntos disjuntos: en este caso, el conjunto de usuarios (U) y el conjunto de productos (V). Las conexiones o aristas solo se establecen entre nodos de diferentes conjuntos, es decir, un usuario se conecta a un producto si ha realizado una reseña de 5 estrellas sobre él.
El proceso comienza creando un grafo vacío utilizando la librería NetworkX. Posteriormente, se agregan los nodos del conjunto de usuarios, asignándoles un atributo bipartite=0 para diferenciarlos dentro del grafo, y los nodos del conjunto de productos, asignándoles bipartite=1. Esta diferenciación es crucial para mantener la integridad de la estructura bipartita y para facilitar la proyección que se realizará posteriormente.
Una vez incorporados los nodos, se crean las aristas. Cada arista conecta un usuario con un producto específico, representando la interacción de haber calificado ese producto con la máxima puntuación. Se construye una lista de pares (usuario, producto) a partir del DataFrame filtrado, y estos pares se añaden como aristas en el grafo.
Al finalizar, se imprime información básica de la red para verificar su correcta construcción: el número total de nodos, que corresponde a la suma de usuarios únicos más productos únicos, y el número total de aristas, que debe coincidir con el número de reseñas de 5 estrellas filtradas. Esta validación inicial es importante para asegurar que los datos han sido correctamente representados en la estructura de grafo bipartito, sirviendo como base sólida para la proyección de productos que permitirá construir el sistema de recomendación.
Run to view results
Proyección del Grafo sobre Productos
Después de construir el grafo bipartito entre usuarios y productos, se realiza la proyección de esta red sobre el conjunto de productos. La idea central de la proyección es transformar la red bipartita original en una red unipartita donde los nodos sean exclusivamente productos, conectados entre sí si han sido calificados por los mismos usuarios. Este tipo de proyección permite capturar relaciones indirectas entre productos basadas en el comportamiento de los usuarios, incluso sin necesidad de utilizar características explícitas de los productos.
Para ello, primero se extrae del grafo bipartito el subconjunto de nodos correspondiente a los productos, diferenciándolos a través del atributo tipo que se asignó previamente. Luego, se utiliza la función weighted_projected_graph de la librería networkx, que automáticamente genera la red proyectada y asigna pesos a las aristas. El peso entre dos productos representa la cantidad de usuarios que han calificado ambos productos, es decir, cuanto mayor es el peso, mayor es la afinidad observada entre esos productos en base al comportamiento de los usuarios.
Finalmente, se imprime información básica de la nueva red proyectada: el número total de nodos, que corresponde al número de productos considerados, y el número total de aristas, que refleja la cantidad de conexiones basadas en usuarios compartidos. Esta red de productos conectados por comportamiento de usuario es la base sobre la cual se construirá el sistema de recomendación, permitiendo identificar productos similares y sugerir alternativas relevantes a los usuarios.
Run to view results
Algoritmo de Recomendación
En esta sección se implementa la función principal que permite realizar recomendaciones de productos a partir de la red proyectada. El objetivo de este algoritmo es, dado un producto seleccionado, identificar los n productos más similares, basándose en la cantidad de usuarios que calificaron ambos productos en común. Esta cantidad de usuarios compartidos está representada en el grafo proyectado como el peso de la arista que conecta dos productos.
La función recomendar_vecinos primero verifica si el producto seleccionado existe dentro del grafo proyectado. En caso de que no esté presente, devuelve un mensaje de error amigable y un resultado vacío. Si el producto sí se encuentra en la red, se procede a recuperar todos sus vecinos, es decir, los productos con los cuales está conectado, junto con el peso de cada conexión.
Posteriormente, se ordenan los vecinos de acuerdo al peso de sus conexiones en orden descendente, de manera que los productos más fuertemente relacionados (es decir, aquellos que comparten más usuarios en común) aparezcan en los primeros lugares. Se seleccionan los n vecinos más cercanos, conformando así las recomendaciones finales.
Finalmente, la función imprime de manera detallada las recomendaciones: mostrando para cada producto recomendado su identificador y el peso de la conexión, que refleja la fortaleza de la relación basada en las interacciones de usuarios. De esta manera, el sistema de recomendación sugiere productos que históricamente han sido evaluados por los mismos usuarios, garantizando una alta relevancia en las sugerencias realizadas.zW
Run to view results
Visualización Tipo Estrella
Esta sección se enfoca en construir una visualización gráfica que facilite la interpretación de las recomendaciones generadas para un producto específico. Se utiliza el modelo de red en forma de estrella, donde el nodo central corresponde al producto seleccionado, y sus vecinos representan los productos recomendados basados en la proyección realizada previamente. Cada conexión entre el nodo central y sus vecinos indica una relación de recomendación fundamentada en usuarios en común.
La función graficar_estrella toma como entrada el identificador del producto central y la lista de vecinos recomendados. Inicialmente, se valida que existan vecinos; en caso contrario, se muestra un mensaje informativo para evitar errores. Luego, se construye un nuevo grafo en el que se añade el nodo del producto principal y los nodos de los productos recomendados, estableciendo aristas que representan las conexiones basadas en la cantidad de usuarios compartidos. Cada arista lleva asociado un peso que es utilizado para definir el grosor de las líneas en el grafo, proporcionando una indicación visual de la intensidad de la relación.
Para la disposición espacial del grafo se emplea el algoritmo de diseño spring_layout, que simula fuerzas físicas para posicionar los nodos de manera estética y clara. Además, las conexiones directas desde el producto central se resaltan en color rojo, mientras que otras conexiones se presentan en color gris, facilitando la distinción visual inmediata. Se incluyen etiquetas tanto para los nodos como para los pesos de las aristas, permitiendo una mejor interpretación del grafo.
Esta representación tipo estrella resulta extremadamente útil para visualizar de manera intuitiva el conjunto de productos más relacionados con uno seleccionado, destacando no solo quiénes son los vecinos más relevantes, sino también la fuerza de su relación a través del grosor de las conexiones.
Run to view results
Utilidad adicional: Productos con mayor conectividad
En esta sección se realiza un análisis adicional sobre la red proyectada de productos para identificar aquellos nodos que presentan mayor conectividad. En el contexto de este proyecto, un producto con alta conectividad es aquel que comparte usuarios con una gran cantidad de otros productos, lo cual puede indicar que es un producto popular, transversal a diferentes intereses, o comúnmente evaluado en combinación con otros.
Para llevar a cabo este análisis, se calcula el grado de cada nodo dentro de la red proyectada, donde el grado representa la cantidad de conexiones directas que un producto mantiene con otros productos. Se ordenan los productos en orden descendente según su grado, y se imprime el listado de los 10 productos con mayor número de conexiones. Este ranking permite identificar productos que, debido a su alta centralidad, son excelentes candidatos para ser utilizados en las visualizaciones tipo estrella o como puntos de partida en sistemas de recomendación.
Run to view results
Posteriormente, se selecciona uno de estos productos altamente conectados para ejemplificar el funcionamiento del sistema de recomendación y su representación gráfica. Se aplica la función de recomendación para obtener los n vecinos más cercanos basados en el número de usuarios compartidos, y se utiliza la función de visualización tipo estrella para representar gráficamente estas recomendaciones. El grafo resultante muestra al producto central rodeado por sus vecinos recomendados, con las conexiones en rojo y el grosor de las líneas indicando la fortaleza de la relación.
Esta estrategia de trabajar con productos de alta conectividad garantiza redes de recomendación más ricas, donde se pueden obtener múltiples alternativas relevantes para el usuario, mejorando así la diversidad y la calidad de las sugerencias ofrecidas.
Run to view results
Interactividad
En esta sección se implementa interactividad para mejorar la exploración dinámica del sistema de recomendación. Utilizando la librería ipywidgets, se crean controles interactivos que permiten al usuario seleccionar un producto desde un menú desplegable y definir el número de recomendaciones que desea visualizar a través de un deslizador. Esta funcionalidad facilita el análisis flexible de diferentes productos y sugiere alternativas de manera personalizada.
Run to view results
En la imagen podemos demostrar un grafo en forma de estrella generado a partir del sistema de recomendación. El nodo central corresponde al producto con identificador 0594451647, que ha sido seleccionado para recibir recomendaciones basadas en la similitud de usuarios que calificaron productos en común. A su alrededor se conectan tres nodos, cada uno representando un producto recomendado.
Las conexiones entre el producto central y sus vecinos son visualizadas mediante líneas de color rojo, las cuales destacan claramente la relación de recomendación directa. Además, sobre cada línea se muestra un número que indica el peso de la conexión, es decir, el número de usuarios que han calificado ambos productos. En este caso, cada conexión presenta un peso de 1, lo que significa que un único usuario ha evaluado ambos productos en cada par de conexión.
El grosor de las líneas es proporcional al peso de la conexión, aunque en este ejemplo, al tener todas las relaciones el mismo valor de peso, el grosor de las aristas se mantiene uniforme. Los nodos tienen un color azul claro (skyblue), lo que permite diferenciarlos visualmente del fondo y facilita la lectura del grafo.
Esta representación gráfica ayuda a entender de manera inmediata cuáles son los productos más relacionados con el producto seleccionado, resaltando no solo quiénes son, sino también la intensidad de la relación medida a través de usuarios compartidos.
Análisis de Red
En esta sección se realiza un análisis global de las propiedades estructurales de la red proyectada de productos, con el objetivo de entender mejor su comportamiento y características. Se calculan varias métricas importantes que describen aspectos fundamentales de la conectividad y la organización de la red.
Primero, se determina el número total de nodos, que corresponde al número de productos representados en la red, y el número de conexiones o aristas, que refleja las relaciones basadas en usuarios compartidos entre productos. Estas cifras brindan una idea de la escala de la red proyectada.
Run to view results
A continuación, se calcula el grado promedio de los nodos, que indica cuántos productos, en promedio, están conectados a un producto cualquiera. Un grado promedio relativamente alto sugiere que muchos productos comparten usuarios con otros productos, lo que favorece la generación de recomendaciones diversificadas.
Run to view results
También se identifica el producto con el mayor grado, es decir, el producto que presenta el mayor número de conexiones directas con otros productos. Este tipo de productos altamente conectados pueden actuar como hubs o nodos centrales dentro del ecosistema de recomendaciones.
Run to view results
Posteriormente, se calcula la densidad de la red, que mide la proporción de conexiones existentes en relación con el número máximo de conexiones posibles. Una densidad baja es típica en redes reales a gran escala, indicando que la mayoría de los productos no están directamente conectados entre sí, lo cual es esperable en este tipo de sistemas.
Run to view results
Además, se analiza el número de componentes conectados. Cada componente es un subconjunto de productos donde todos los productos están, directa o indirectamente, conectados entre sí. Un número bajo de componentes indica que gran parte de la red es alcanzable a través de caminos de recomendación.
Run to view results
Finalmente, se calcula el clustering promedio o coeficiente de agrupamiento, que mide la tendencia de los productos a formar pequeños grupos donde varios productos comparten usuarios comunes entre ellos. Un clustering promedio relativamente alto puede indicar la existencia de comunidades de productos que son frecuentemente evaluados en conjunto por los mismos usuarios.
Estos análisis permiten comprender no solo la escala de la red, sino también su cohesión interna, su estructura comunitaria y su potencial para ofrecer recomendaciones efectivas basadas en las interacciones de los usuarios.
Run to view results
Visualización Global de Productos
Con el objetivo de visualizar de forma más clara la estructura general de la red de productos, en esta sección se realiza un recorte de la red original, conservando únicamente aquellos productos que presentan un grado mayor o igual a un umbral determinado. En este caso, se seleccionan los productos que tienen al menos 25 conexiones directas con otros productos. Este filtrado permite enfocarse en los nodos más relevantes o centrales, eliminando la complejidad y dispersión generada por nodos periféricos con muy pocas conexiones.
Para realizar este recorte, se identifican todos los nodos cuyo grado es mayor o igual al umbral definido, y se crea un subgrafo inducido a partir de ellos. Posteriormente, se utiliza el algoritmo de disposición spring_layout para distribuir los nodos de forma que las conexiones se representen de manera clara y visualmente comprensible.
El grafo resultante muestra de manera concentrada los productos más conectados entre sí dentro de la red, utilizando un mapa de colores (cmap) basado en el peso de las aristas para diferenciar visualmente la intensidad de las conexiones. Cuanto más oscuro es el color de la arista, mayor es la cantidad de usuarios que han evaluado ambos productos en común.
Gracias a esta visualización, es posible identificar de un vistazo regiones densamente conectadas que podrían representar grupos o comunidades de productos altamente relacionados. Además, facilita la comprensión de la estructura interna de la red sin la saturación visual que generaría mostrar todos los nodos y conexiones disponibles en el grafo original.
Run to view results
Visualización Global de Productos (Peso mínimo de arista)
En esta sección se presenta una estrategia alternativa de recorte de la red, enfocada en filtrar las conexiones en función del peso mínimo de las aristas. Mientras que anteriormente el recorte se realizaba basándose en el grado de los nodos, aquí se prioriza la intensidad de las relaciones entre productos, es decir, el número de usuarios en común que han evaluado cada par de productos.
Se define un umbral de peso mínimo (en este caso, 5), y se seleccionan únicamente aquellas conexiones cuyo peso es mayor o igual a este valor. Esto garantiza que la red resultante esté compuesta solo por relaciones fuertes y relevantes, descartando conexiones débiles que podrían introducir ruido en el análisis visual. Además, al conservar los atributos originales de las aristas, se mantiene intacta la información sobre la cantidad exacta de usuarios compartidos en cada relación.
Posteriormente, se crea un nuevo grafo utilizando únicamente las aristas filtradas, y se genera una visualización de esta red recortada utilizando el algoritmo spring_layout para posicionar los nodos de manera ordenada. Los colores de las conexiones se codifican según el peso de las aristas, utilizando un mapa de colores (OrRd) donde tonos más intensos representan mayores pesos, resaltando visualmente las relaciones más fuertes.
Run to view results
Gracias a esta visualización, es posible observar de manera concentrada los núcleos más robustos de la red, donde las conexiones son respaldadas por múltiples interacciones de usuarios, proporcionando una visión clara de los productos más estrechamente vinculados en términos de comportamiento de los usuarios.
Visualizaciones adicionales
Análisis del Histograma de Grado de Productos
La gráfica muestra la distribución de los grados de los nodos en la red proyectada de productos. Cada barra del histograma representa la cantidad de productos que tienen un cierto número de conexiones directas con otros productos basadas en usuarios compartidos. Se observa que la mayoría de los productos tienen un número bajo de conexiones, con grados que se concentran mayoritariamente en valores cercanos a cero. Esto refleja una propiedad típica de muchas redes reales: la presencia de una distribución altamente sesgada, donde pocos nodos actúan como hubs muy conectados, mientras que la gran mayoría de los nodos tienen baja conectividad.
La presencia de unos pocos productos con grados muy altos (hubs) sugiere que existen productos populares o ampliamente evaluados que se conectan con muchos otros productos a través de usuarios comunes. Por otro lado, la gran cantidad de productos con grados bajos podría corresponder a ítems más especializados o menos populares en el catálogo. Esta estructura heterogénea de la red es importante para la estrategia de recomendación, ya que permite construir sistemas que combinan productos de alta visibilidad con productos de nicho, ofreciendo una experiencia de recomendación equilibrada.
Run to view results
Distribución de los pesos de las aristas
La gráfica muestra la distribución de los pesos de las aristas en la red proyectada de productos. Cada barra del histograma representa la cantidad de conexiones (aristas) que existen entre productos en función del número de usuarios en común que los evaluaron. Se observa que la mayoría de las conexiones tienen pesos muy bajos, concentrándose principalmente en valores de 1 o 2 usuarios compartidos. Esta distribución altamente sesgada es una característica común en redes reales construidas a partir de interacciones humanas, donde la mayoría de las relaciones son débiles y solo unas pocas conexiones son realmente fuertes.
La presencia de unas pocas aristas con pesos elevados indica la existencia de relaciones muy sólidas entre ciertos productos, altamente correlacionados en las preferencias de los usuarios. Estas conexiones fuertes representan pares de productos que tienden a ser evaluados en conjunto por múltiples usuarios, lo que las convierte en candidatos prioritarios para recomendaciones de alta calidad. En contraste, la mayoría de las conexiones de bajo peso reflejan coincidencias más aisladas o esporádicas en el comportamiento de los usuarios. Esta estructura de la red sugiere que una estrategia de recomendación efectiva debe aprovechar tanto las relaciones fuertes para sugerencias confiables, como las relaciones más débiles para explorar nuevas alternativas que amplíen el rango de productos recomendados.
Run to view results
Subgrafo pequeño aleatorio
La gráfica muestra un subgrafo inducido por una selección aleatoria de 30 productos de la red completa. En esta visualización se observa que la gran mayoría de los nodos se encuentran aislados, es decir, no presentan conexiones directas entre sí. Solo unos pocos nodos forman pequeñas agrupaciones locales, donde dos o tres productos están conectados mediante usuarios en común. Esta dispersión extrema es coherente con la estructura general de la red proyectada, donde la mayoría de los productos tienen grados bajos y comparten usuarios con muy pocos otros productos.
El predominio de nodos aislados resalta la importancia de aplicar filtros basados en el grado o en el peso de las aristas al momento de construir redes de recomendación. Al seleccionar productos aleatoriamente, existe una alta probabilidad de obtener productos poco relacionados, lo que dificulta generar recomendaciones relevantes. No obstante, la aparición de pequeños grupos conectados confirma que existen comunidades locales de productos que comparten patrones de evaluación entre los usuarios, las cuales podrían ser aprovechadas para construir recomendaciones más específicas y contextuales.
Esta visualización refuerza la conclusión de que la red modelada captura de manera realista la dinámica dispersa del comportamiento de los usuarios, y que las estrategias de filtrado y selección inteligente son esenciales para explotar adecuadamente el potencial del sistema de recomendación.
Run to view results
Conclusiones
En este proyecto se implementó un sistema de recomendación de productos utilizando técnicas de análisis de redes complejas, partiendo de un modelo de red bipartita basado en las interacciones de usuarios y productos. A través de la proyección ponderada de esta red, se construyó un grafo de productos donde las conexiones reflejan el número de usuarios en común que evaluaron ambos productos.
El análisis estructural de la red reveló propiedades típicas de redes reales, como distribuciones altamente sesgadas tanto en el grado de los nodos como en el peso de las aristas. La mayoría de los productos presentan un bajo número de conexiones, mientras que unos pocos actúan como hubs altamente conectados, evidenciando una estructura de tipo "larga cola". De manera similar, la mayoría de las conexiones entre productos son débiles (con pocos usuarios en común), siendo escasas las relaciones realmente fuertes. Estas características refuerzan la validez y realismo del modelo implementado.
Las decisiones de programación, como el filtrado de reseñas de 5 estrellas, la construcción cuidadosa del grafo bipartito y el uso de proyección ponderada, permitieron preservar fielmente las dinámicas naturales de las interacciones de los usuarios. Además, la inclusión de filtros posteriores basados en grado mínimo o peso mínimo demostró ser fundamental para mejorar la calidad y relevancia de las recomendaciones generadas.
Mediante visualizaciones globales y subgrafos locales, se evidenció la dispersión natural de la red y la existencia de pequeñas comunidades de productos relacionados, ofreciendo oportunidades para estrategias de recomendación tanto generales como especializadas. La implementación de controles interactivos en el sistema facilitó la exploración dinámica de recomendaciones personalizadas, mejorando la experiencia de análisis.
En conclusión, el sistema de recomendación basado en redes bipartitas proyectadas ofrece una aproximación sólida, realista y extensible para el diseño de motores de recomendación. Se comprobó la importancia de respetar la estructura inherente de los datos, aplicar técnicas de filtrado estratégico y analizar la red a distintos niveles de granularidad para optimizar la relevancia de las sugerencias ofrecidas a los usuarios.
Recomendaciones
Para proyectos a gran escala, se recomienda aplicar técnicas de reducción de dimensionalidad o muestreo estratificado para mejorar el rendimiento computacional sin comprometer la calidad de las recomendaciones.
Se puede complementar este enfoque estructural con algoritmos de aprendizaje automático como Collaborative Filtering, Matrix Factorization o modelos basados en embeddings para mejorar la precisión y personalización de las sugerencias.
Para enriquecer la experiencia del usuario final, se recomienda integrar este sistema con interfaces web interactivas utilizando frameworks como Dash, Streamlit o Flask, facilitando el acceso a las recomendaciones desde aplicaciones reales.
Finalmente, incorporar retroalimentación del usuario sobre la calidad de las recomendaciones puede permitir un sistema de mejora continua que refuerce productos acertados y reevalúe productos menos útiles.