<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alberto Martinez</title>
    <description>The latest articles on DEV Community by Alberto Martinez (@albertomartnz).</description>
    <link>https://dev.to/albertomartnz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3942894%2Ff41a0090-0de7-499d-880f-b0d41936779a.jpeg</url>
      <title>DEV Community: Alberto Martinez</title>
      <link>https://dev.to/albertomartnz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/albertomartnz"/>
    <language>en</language>
    <item>
      <title>Construyendo un recomendador de películas en Python: de los datos al modelo</title>
      <dc:creator>Alberto Martinez</dc:creator>
      <pubDate>Mon, 25 May 2026 18:22:03 +0000</pubDate>
      <link>https://dev.to/evolve-space/construyendo-un-recomendador-de-peliculas-en-python-de-los-datos-al-modelo-3m16</link>
      <guid>https://dev.to/evolve-space/construyendo-un-recomendador-de-peliculas-en-python-de-los-datos-al-modelo-3m16</guid>
      <description>&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Los sistemas de recomendación están presentes en muchas plataformas digitales: streaming, e-commerce, música, formación online o personalización de contenidos. Su objetivo es ayudar al usuario a descubrir elementos relevantes dentro de catálogos cada vez más grandes.&lt;/p&gt;

&lt;p&gt;En este proyecto he desarrollado &lt;strong&gt;CineMatch AI&lt;/strong&gt;, un sistema de recomendación de películas basado en filtrado colaborativo por ítems. La idea principal es sencilla: dada una película de referencia, el sistema recomienda otras películas similares a partir de los patrones históricos de valoración de los usuarios.&lt;/p&gt;

&lt;p&gt;El objetivo no era construir una solución empresarial completa, sino un prototipo funcional, reproducible y bien estructurado que permitiera trabajar un flujo completo de Data Science: análisis de datos, preprocesamiento, construcción del sistema de recomendación, evaluación exploratoria y presentación mediante una interfaz sencilla.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dataset utilizado
&lt;/h2&gt;

&lt;p&gt;Para el proyecto he utilizado el dataset &lt;strong&gt;MovieLens&lt;/strong&gt;, una referencia habitual para trabajar con sistemas de recomendación.&lt;/p&gt;

&lt;p&gt;El conjunto de datos incluye información sobre películas, usuarios y valoraciones. En este caso, el trabajo se ha centrado principalmente en dos archivos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ratings.csv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;movies.csv&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tras el proceso de filtrado, el sistema trabaja con:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;446.702 ratings finales&lt;/li&gt;
&lt;li&gt;3.728 películas&lt;/li&gt;
&lt;li&gt;4.356 usuarios activos&lt;/li&gt;
&lt;li&gt;una matriz usuario-película con una densidad aproximada del 2,75%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Este último punto es importante, porque en los sistemas de recomendación es habitual trabajar con matrices muy dispersas: muchos usuarios han valorado solo una pequeña parte del catálogo total.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proceso seguido
&lt;/h2&gt;

&lt;p&gt;El flujo del proyecto se divide en varias fases.&lt;/p&gt;

&lt;p&gt;Primero se realizó la carga y exploración inicial de los datos, revisando el volumen de registros, la distribución de ratings y la información disponible sobre las películas.&lt;/p&gt;

&lt;p&gt;Después se aplicaron filtros para mejorar la calidad de las recomendaciones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;películas con al menos 20 valoraciones.&lt;/li&gt;
&lt;li&gt;usuarios con al menos 10 valoraciones.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Este filtrado reduce ruido y evita que el sistema se base en películas o usuarios con muy poca información histórica.&lt;/p&gt;

&lt;p&gt;A continuación se construyó una matriz usuario-película, donde cada fila representa un usuario, cada columna una película y cada valor corresponde a la puntuación asignada. A partir de esta matriz, el sistema compara películas entre sí usando &lt;strong&gt;similitud del coseno&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La lógica es la siguiente: si dos películas han sido valoradas de forma parecida por muchos usuarios, el sistema interpreta que existe cierta similitud entre ellas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sistema de recomendación
&lt;/h2&gt;

&lt;p&gt;El recomendador está basado en &lt;strong&gt;filtrado colaborativo por ítems&lt;/strong&gt;. En lugar de comparar usuarios entre sí, compara películas a partir de los patrones de valoración.&lt;/p&gt;

&lt;p&gt;Este enfoque tiene varias ventajas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;es fácil de explicar.&lt;/li&gt;
&lt;li&gt;funciona bien cuando existen suficientes valoraciones.&lt;/li&gt;
&lt;li&gt;permite generar recomendaciones interpretables.&lt;/li&gt;
&lt;li&gt;puede adaptarse a otros dominios como productos, canciones, cursos o contenidos digitales.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Además del análisis en notebook, el proyecto incluye una pequeña aplicación con &lt;strong&gt;Streamlit&lt;/strong&gt;, pensada para probar el sistema de forma visual. Desde la interfaz se puede buscar una película, seleccionar una coincidencia del catálogo y obtener un top 5 o top 10 de recomendaciones con su score de similitud.&lt;/p&gt;

&lt;p&gt;También se incluye una API básica con &lt;strong&gt;FastAPI&lt;/strong&gt; como demostración complementaria de cómo podría exponerse la lógica del recomendador.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resultados
&lt;/h2&gt;

&lt;p&gt;El sistema genera recomendaciones coherentes, especialmente para películas con suficientes valoraciones históricas.&lt;/p&gt;

&lt;p&gt;Algunos resultados principales del análisis fueron:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;matriz usuario-película de 4.356 usuarios por 3.728 películas.&lt;/li&gt;
&lt;li&gt;446.702 ratings utilizados tras el filtrado.&lt;/li&gt;
&lt;li&gt;similitud media top-N de 0,5662.&lt;/li&gt;
&lt;li&gt;consistencia media de géneros del 81,5%.&lt;/li&gt;
&lt;li&gt;94 de 100 películas evaluadas con una consistencia de géneros superior al 50%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por ejemplo, para una película como &lt;code&gt;Scarface (1983)&lt;/code&gt;, el sistema recomienda títulos relacionados con géneros como crimen, drama, thriller o acción, lo que muestra una cierta coherencia temática en las recomendaciones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitaciones
&lt;/h2&gt;

&lt;p&gt;Como ocurre en muchos sistemas de recomendación, el proyecto también tiene limitaciones.&lt;/p&gt;

&lt;p&gt;La más importante es el problema de &lt;strong&gt;cold start&lt;/strong&gt;: si una película o usuario no tiene valoraciones suficientes, el sistema no dispone de información histórica para generar recomendaciones fiables.&lt;/p&gt;

&lt;p&gt;Además, el filtrado por popularidad mejora la calidad de las recomendaciones, pero reduce la cobertura total del catálogo. También hay que tener en cuenta que el sistema recomienda a partir de patrones históricos de valoración, no por una comprensión semántica profunda del contenido de las películas.&lt;/p&gt;

&lt;p&gt;Por último, la evaluación realizada es exploratoria. No debe interpretarse como una evaluación supervisada definitiva, ya que no se ha aplicado una separación train/test ni métricas de ranking como Precision@K, Recall@K o NDCG, habituales en la evaluación de sistemas de recomendación.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aprendizajes
&lt;/h2&gt;

&lt;p&gt;Este proyecto me ha servido para entender mejor cómo se estructura un sistema de recomendación desde una perspectiva práctica.&lt;/p&gt;

&lt;p&gt;Más allá de la técnica de similitud, una parte importante del trabajo ha estado en preparar los datos, tomar decisiones de filtrado, construir una estructura reproducible y presentar los resultados de forma clara.&lt;/p&gt;

&lt;p&gt;También me ha parecido especialmente interesante comprobar cómo una técnica relativamente sencilla, como la similitud del coseno, puede generar recomendaciones razonables cuando los datos están bien tratados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Próximos pasos
&lt;/h2&gt;

&lt;p&gt;Algunas mejoras naturales para futuras versiones serían:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;combinar ratings y géneros en un sistema híbrido.&lt;/li&gt;
&lt;li&gt;incorporar técnicas de factorización matricial como SVD o NMF.&lt;/li&gt;
&lt;li&gt;mejorar la evaluación offline con métricas de ranking.&lt;/li&gt;
&lt;li&gt;guardar la matriz de similitud precomputada para acelerar la demo.&lt;/li&gt;
&lt;li&gt;desplegar la aplicación para facilitar su uso externo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Repositorio
&lt;/h2&gt;

&lt;p&gt;El código completo del proyecto está disponible en GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/evolve-space/Proyecto-Master-DataScience-Evolve-AlbertoMartinez" rel="noopener noreferrer"&gt;https://github.com/evolve-space/Proyecto-Master-DataScience-Evolve-AlbertoMartinez&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podeis contactarme en mi LinkedIn:&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/albertomartinezsanchez" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/albertomartinezsanchez&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Proyecto desarrollado durante el Máster en Data Science &amp;amp; Desarrollo de IA de Evolve.&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>machinelearning</category>
      <category>streamlit</category>
    </item>
  </channel>
</rss>
