Lección 19 del curso Álgebra Lineal para Ciencia de Datos y Machine Learning.
En la lección anterior vimos la aplicación que tienen los valores y vectores propios en la Ciencia de Datos y el Machine Learning. Y con esto ya tenemos todos los elementos esenciales del Álgebra Lineal que nos servirán como base para comprender el funcionamiento de diferentes técnicas y algoritmos de la Ciencia de Datos y el Machine Learning.
Así que en este proyecto final pondremos en práctica varios de los conceptos aprendidos en el curso para implementar un sencillo sistema para recomendar películas, que permitirá sugerir una película a un usuario dependiendo de sus gustos e intereses.
Para esto usaremos como punto de partida los conceptos de eigenvalores y eigenvectores vistos en lecciones anteriores y también introduciremos un nuevo concepto: la descomposición en valores singulares (o SVD por sus siglas en Inglés: Singular Value Decomposition) de una matriz.
Comencemos entonces entendiendo el problema a resolver:
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.
Muy bien, la idea del sistema de recomendación que construiremos es que para un usuario en particular introduciremos la información acerca de una película que le gustó y el sistema generará un listado de películas recomendadas que le podrían también gustar a este usuario.
Veamos entonces el set de datos que usaremos como insumo principal 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.
Para implementar este sistema de recomendación, utilizaremos un conjunto de datos que contiene las puntuaciones de 10 usuarios a 5 películas, donde 1 indica que les gustó y 0 que no. Al leer el dataset por filas, obtenemos un vector de 5 elementos que caracteriza los gustos del usuario, y al leerlo por columnas, obtenemos un vector de 10 elementos que contiene el perfil de cada película.
Teniendo claras las características de nuestro set de datos, veamos ahora el principio de funcionamiento del sistema de recomendación a construir:
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.
Nuestro sistema tendrá dos entradas: el dataset de referencia (en formato matricial) así como un string de Python que contendrá el nombre de la película que le gustó al usuario. Y como salida el sistema generará un listado con las top-2 películas que más se parecen a la película introducida por el usuario.
Y uno de los elementos centrales de este sistema será la descomposición en valores singulares (o SVD por sus siglas en Inglés: Singular Value Decomposition) junto con el uso de la similitud del coseno, una operación que nos permite cuantificar el grado de similitud entre vectores (que en este caso serán las diferentes películas).
Veamos entonces en detalle en qué consiste la descomposición en valores singulares y cómo implementarla con ayuda de NumPy:
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.
Bien, en esencia la SVD es una técnica que permite descomponer una matriz en tres matrices más simples, revelando sus componentes esenciales. Esto permite identificar y separar la información más significativa de los datos, facilitando su análisis y simplificación. En últimas la SVD es una técnica de reducción de dimensionalidad que resultará útil en nuestro proyecto.
Hablemos un poco más en detalle de esta reducción de dimensionalidad:
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.
En esencia la SVD nos permite representar la matriz original con menos datos, y esto es precisamente la reducción de dimensionalidad. En este caso, al tomar solo parte de las matrices resultantes de la descomposición, podemos comprimir la matriz original. Y los elementos de la diagonal de una de estas matrices están organizados en orden descendente, y los eigenvalores más pequeños contribuyen menos a la matriz original, permitiendo aproximarla usando matrices más pequeñas.
Veamos entonces cómo usar este principio de reducción de dimensionalidad con la SVD para usarlo en nuestro set de datos:
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.
Muy bien. Recordemos que en nuestro sistema de recomendación el objetivo es sugerir películas similares a una película de referencia, analizando el dataset por columnas. Y al realizar la descomposición SVD del set de datos obtenemos tres matrices: una contendrá únicamente información sobre los usuarios, otra sobre usuarios y películas y la tercera únicamente sobre las películas. Por lo tanto, para analizar y recomendar películas, nos enfocaremos en esta última matriz.
Además, acabamos de ver cómo implementar la función «reducir_dimensionalidad» que nos permite precisamente implementar esta descomposición.
Así que ya tenemos el elemento central de nuestro sistema. Entonces, en el último video veremos cómo implementar cada uno de los bloques restantes y cómo interconectar las diferentes funciones para lograr construir la totalidad el sistema de recomendación:
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.
¡Perfecto! Acabamos de implementar la función «recomendar» que contiene precisamente cada uno de los pasos requeridos en nuestro sistema de recomendación.
La función toma como entradas la película de referencia y el set de datos y genera a la salida el listado de las top-2 películas sugeridas. Y para ello aplica la reducción de dimensionalidad al set de datos, extrae la representación vectorial de la película de referencia, compara (a través de la similitud de coseno) dicha película de referencia con las de la base de datos y, como último paso, genera el ranking de películas.
¡Y tras poner a prueba el sistema funciona a la perfección!: basta con introducir el nombre de la película de referencia y el set de datos y el sistema efectivamente nos arroja películas «similares» a los gustos del usuario.
Así que acabamos de ver cómo combinar varios de los conceptos vistos en este curso, así como herramientas de programación haciendo uso de Python y de la librería NumPy, para implementar este sencillo sistema de recomendación de películas.
Y con esto hemos terminado este curso de Álgebra Lineal para Ciencia de Datos y Machine Learning, así que te invito a ver el video de cierre donde haré un resumen de lo aprendido en este curso:
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 ¡te felicito por haber completado este curso! y te invito a contactarme para que me compartas tus comentarios sobre el curso y tus sugerencias para seguir mejorando el contenido de la Academia.
Te envío un saludo y te invito a continuar con tu formación tomando el siguiente curso en esta serie: Cálculo para Ciencia de Datos y Machine Learning.
Todas las lecciones del curso Álgebra Lineal para Ciencia de Datos y Machine Learning
