Para empezar, se puede utilizar un entorno virtual como
Google Colaboratory o un editor de Python local, asegurando
que Python 3.x esté instalado. Es necesario importar
librerías esenciales como Pandas,
NumPy, y de Scikit-learn: TfidfVectorizer y
NearestNeighbors.
!python -V print('------') !pip show Pandas | grep 'Name\\|Version' print('------') !pip show Matplotlib | grep 'Name\\|Version'
Se cargan los archivos CSV (`movies` y `ratings`) en DataFrames de Pandas. El preprocesamiento incluye:
content (a
partir de géneros) y genre_set (un conjunto
de géneros).
Una vez limpios los datos, se realiza un análisis
exploratorio para entender su estructura y distribución.
Esto incluye la inspección de atributos con métodos como
info() y describe(), y la
creación de visualizaciones (histogramas, boxplots) para
validar la calidad de los datos antes de pasar al modelado.
A continuación, se muestran algunas de las visualizaciones generadas durante el Análisis Exploratorio de Datos:
Distribución de géneros.
Para crear un ranking justo de películas populares, se utiliza un promedio ponderado bayesiano. Esta técnica evita que películas con pocas calificaciones altas superen a aquellas con muchas calificaciones consistentemente buenas. La fórmula es:
$$ WR = \left( \frac{v}{v+m} \right) R + \left( \frac{m}{v+m} \right) C $$
Se implementan dos estrategias basadas en el contenido de las películas:
$$ J(A, B) = \large \frac{|A \cap B|}{|A \cup B|} $$
Similitud de Coseno con TF-IDF:$$\text{Similitud del coseno} = \cos(\theta) = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|}$$
content de las películas usando
TfidfVectorizer. Esto convierte el texto
en vectores numéricos que representan la importancia
de cada palabra.
cosine_sim) a partir de la matriz
TF-IDF para encontrar la similitud entre todas las
películas.
movieId, encuentra las películas más similares basándose en esta matriz.# Ejemplo con Similitud de Coseno tfidf_matrix = tfidf_vectorizer.fit_transform(df_movies['content']) cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
Se utiliza el algoritmo K-Nearest Neighbors (KNN) para encontrar usuarios con gustos similares.
Al igual que en TF-IDF, la métrica que el modelo NearestNeighbors utiliza, en este caso minimiza y se calcula como:
$$ \text{Distancia} = 1 - \text{Similitud} $$
Una menor distancia implica una mayor similitud. En este contexto, los vectores $\mathbf{A}$ y $\mathbf{B}$ son las filas de la matriz de calificaciones, representando los gustos de cada usuario.
NearestNeighbors con la
métrica de similitud del coseno.