Factorización matricial con SVD
Matriz usuario-elemento, descomposición SVD, factores latentes e implementación con la biblioteca Surprise.
Factorización matricial con SVD es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Por qué usar factorización matricial?
La matriz usuario-elemento es enorme y está prácticamente vacía. La factorización matricial la comprime en dos matrices más pequeñas de factores latentes, una para los usuarios y otra para los elementos, cuyo producto reconstruye (y completa) las valoraciones. Esto gestiona la dispersión mucho mejor que los métodos basados en vecinos.
Intuición sobre los factores latentes
Cada usuario y cada elemento se describen mediante un vector corto de características ocultas (por ejemplo, el grado de acción o de comedia de las películas). Una valoración predicha es el producto escalar de un vector de usuario y un vector de elemento, aprendidos únicamente a partir de los datos.
SVD en sistemas de recomendación
Los modelos de tipo SVD aprenden estos factores minimizando el error de predicción en las valoraciones conocidas y aplicando regularización. La biblioteca surprise proporciona un SVD listo para usar y optimizado para recomendaciones, que ganó popularidad gracias al Premio Netflix.
La biblioteca Surprise
Importe los componentes que necesite: el algoritmo, el contenedor del conjunto de datos y el lector que describe el formato de sus datos.
from surprise import SVD, Dataset, Reader
from surprise.model_selection import cross_validateReader y rating_scale
Reader indica a Surprise el intervalo válido de valoraciones mediante rating_scale. Adáptelo a sus datos (por ejemplo, de 1 a 5 estrellas); de lo contrario, las predicciones quedarán mal calibradas.
reader = Reader(rating_scale=(1, 5))Carga de un DataFrame
Cargue un DataFrame con exactamente tres columnas y en este orden: usuario, elemento, valoración.
data = Dataset.load_from_df(
df[["user_id", "item_id", "rating"]],
reader
)Validación cruzada
cross_validate evalúa el modelo en varias particiones y proporciona métricas de error para que pueda juzgar la precisión de forma objetiva con datos reservados.
results = cross_validate(
SVD(), data,
measures=["RMSE", "MAE"],
cv=5,
verbose=True
)RMSE y MAE
- RMSE (raíz del error cuadrático medio) penaliza considerablemente los errores grandes.
- MAE (error absoluto medio) es el promedio del error absoluto, por lo que resulta más fácil de interpretar.
En ambos casos, un valor menor es mejor; RMSE es la métrica principal estándar para la predicción de valoraciones.
Entrenamiento con el conjunto completo
Después de la validación, entrene el modelo con el conjunto de datos completo antes de ponerlo al servicio para realizar predicciones.
trainset = data.build_full_trainset()
algo = SVD()
algo.fit(trainset)Realización de predicciones
algo.predict(uid, iid) devuelve un objeto de predicción cuyo campo .est contiene la valoración estimada para ese par de usuario y elemento.
pred = algo.predict(uid="user_42", iid="item_99")
print(pred.est) # estimated ratingAjuste de hiperparámetros
Los parámetros principales de SVD son n_factors (dimensión latente), n_epochs, lr_all (tasa de aprendizaje) y reg_all (regularización). Utilice GridSearchCV para encontrar la mejor combinación según RMSE.
from surprise.model_selection import GridSearchCV
grid = {"n_factors": [50, 100], "reg_all": [0.02, 0.1]}
gs = GridSearchCV(SVD, grid, measures=["rmse"], cv=3)
gs.fit(data)
print(gs.best_params["rmse"])Comprobación rápida
Compruebe sus conocimientos sobre la factorización matricial.
Resumen
Aprendió la factorización matricial mediante SVD: vectores latentes de usuarios y elementos cuyo producto escalar predice las valoraciones. Con surprise, estableció rating_scale, cargó los datos, ejecutó cross_validate con RMSE/MAE, entrenó el modelo y llamó a algo.predict(uid, iid). Siguiente tema: filtrado basado en contenido.
Preguntas frecuentes
¿La lección «Factorización matricial con SVD» es gratis?
Sí — el texto completo de «Factorización matricial con SVD» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Factorización matricial con SVD»?
Matriz usuario-elemento, descomposición SVD, factores latentes e implementación con la biblioteca Surprise. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Factorización matricial con SVD»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Filtrado colaborativo: basado en usuarios y en elementos
- Factorización matricial con SVD
- Filtrado basado en contenido
- Sistemas híbridos y métricas de evaluación