• Saltar a la navegación principal
  • Saltar al contenido principal
Logo Codificando Bits

Codificando Bits

  • Academia
    • Rutas
    • Cursos
    • Proyectos
    • Tutoriales
  • Acceder
  • Suscribirse

Sistema de recomendación de libros usando filtrado colaborativo

En este proyecto veremos cómo desarrollar un sistema capaz de generar recomendaciones de libros a usuarios de la plataforma Amazon, haciendo uso de la técnica de filtrado colaborativo basado en ítems.

Si estás suscrito a la Academia Online puedes acceder al enlace de descarga del set de datos y al código fuente de este proyecto.

Contenido

¿Qué son los sistemas de recomendación?

El problema a resolver

Tipos de sistemas de recomendación

El set de datos

Exploración y limpieza inicial de los datos

Preparación de los datos

El sistema de recomendación

Generación de recomendaciones

El código fuente de este proyecto

¿Qué son los sistemas de recomendación?

Los sistemas de recomendación son algoritmos que buscan sugerir ítems relevantes a los usuarios con base en su perfil. Estos ítems pueden ser películas o series (si hablamos de plataformas como Netflix), libros o productos (si se trata de un cliente de plataformas como Amazon) o incluso canciones o artistas (si el sistema de recomendación es por ejemplo para Spotify).

El problema a resolver

El objetivo de este proyecto es desarrollar un sistema de recomendación que permita definir un perfil de cliente a partir del historial de libros que ha leído y evaluado en Amazon y con base en este perfil le sugiera libros que no haya leído pero que probablemente le gustarán.

Tipos de sistemas de recomendación

Comencemos viendo los diferentes tipos de sistemas de recomendación que podemos implementar, lo cual nos servirá como base para este proyecto.

Filtrado basado en contenido

Es el sistema de recomendación más sencillo. En este caso se toman características propias del ítem (por ejemplo atributos como el título, el autor o el género del libro) y se le recomiendan al usuario ítems con un contenido similar.

Filtrado colaborativo

En este esquema no se tienen en cuenta las características del ítem (es decir su contenido) sino las interacciones del usuario u otros usuarios con el ítem o con ítems similares.

Este esquema tiene dos vertientes:

  • El filtrado colaborativo basado en usuarios, donde se sugieren al usuario ítems similares a los de otros usuarios con un perfil similar. Por ejemplo, se sugerirán libros similares a los del historial del usuario pero que le hayan gustado a otros usuarios en la base de datos.
  • El filtrado colaborativo basado en ítems, donde se sugieren al usuario ítems que tengan patrones de interacción similares a los ítems propios del usuario. Por ejemplo, en el caso de libros se pueden sugerir aquellos cuyas evaluaciones o comentarios hayan sido similares a los dejados por el usuario para otros libros

En este proyecto implementaremos precisamente este último tipo de sistema de recomendación (de filtrado colaborativo basado en ítems).

El set de datos

El set de datos se encuentra en el archivo book_ratings.zip (cuyo enlace de descarga se encuentra al final de este proyecto) el cual contiene registros de libros comprados por diferentes clientes de Amazon. Estos registros contienen información propia de los libros (como título, autor e ISBN, entre otros) así como identificadores de usuario y la valoración dada por cada usuario a los diferentes libros (que es un puntaje entre 0 y 10).

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Así que con todo esto ya estamos listos para la última fase de la implementación: una función que sugiera libros a un usuario en particular con base en sus preferencias y en las características de los libros.

Veamos entonces cómo implementar esta última parte.

Generación de recomendaciones

En esta última fase implementaremos la función «recomendar_libros» que tomará como entrada un ID de usuario así como la «matriz_usuario_item» obtenida anteriormente y que generará a la salida un listado con el nombre de los libros recomendados.

Como este listado puede ser extenso, limitaremos el número de libros recomendados a los top-10 (dependiendo de los «ratings» predichos).

Haremos primero la implementación de esta función y luego desglosaremos sus elementos principales:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

¡Y listo, ya hemos implementado nuestro sistema de recomendación!

Ahora sí podemos ponerlo a prueba. Tomemos por ejemplo el usuario con ID 114 y generemos un listado de recomendaciones:

recomendar_libros(114, matriz_usuario_item)

Tras ejecutar esta línea de código obtenemos el siguiente listado:

["Vinegar Hill (Oprah's Book Club (Paperback))",
 'Nickel and Dimed: On (Not) Getting By in America',
 'The Bean Trees',
 'While I Was Gone',
 "Songs in Ordinary Time (Oprah's Book Club (Paperback))",
 'Rising Sun',
 'Bridget Jones: The Edge of Reason',
 'Stupid White Men ...and Other Sorry Excuses for the State of the Nation!',
 "The Pilot's Wife : A Novel",
 'The Cider House Rules']

Que contiene precisamente el listado de los 10 libros que más le podrían interesar al usuario con base en su perfil.

¡Muy bien, y con esto ya tenemos totalmente implementado nuestro sistema de recomendación!

El esquema implementado en este proyecto se conoce como filtrado colaborativo basado en ítems, puesto que hemos sugerido al usuario libros (ítems) cuyas evaluaciones (o «ratings» predichos) son similares a las evaluaciones asignadas previamente por el usuario a libros que ya ha leído.

El código fuente y el set de datos de este proyecto

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Y recuerda que si eres suscriptor y tienes alguna duda sobre este proyecto me puedes contactar directamente a través del formulario que encontrarás en la Intranet.

Volver al índice de Proyectos

© Codificando Bits, LLC | Blog | Contacto | Servicios | Acerca de | Políticas

¿Has olvidado la contraseña?
¿Has perdido tu contraseña? Por favor, introduce tu nombre de usuario o dirección de correo electrónico. Recibirás por correo electrónico un enlace para crear una nueva contraseña.
body::-webkit-scrollbar { width: 7px; } body::-webkit-scrollbar-track { border-radius: 10px; background: #f0f0f0; } body::-webkit-scrollbar-thumb { border-radius: 50px; background: #dfdbdb }