Filtrado colaborativo: basado en usuarios y en elementos
Similitud entre usuarios, similitud entre elementos, métodos de vecindad y similitud coseno para valoraciones.
Filtrado colaborativo: basado en usuarios y en elementos es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 1 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.
¿Qué es el filtrado colaborativo?
El filtrado colaborativo (CF) recomienda elementos aprendiendo del comportamiento de muchos usuarios. La idea central es que las personas que coincidieron en el pasado tienden a coincidir en el futuro. No necesita descripciones de los elementos, sino únicamente el historial de interacciones.
La matriz usuario-elemento
El CF parte de una matriz usuario-elemento cuyas filas son usuarios, cuyas columnas son elementos y cada una de cuyas celdas contiene una valoración (o está vacía si no se ha valorado el elemento). Esta matriz suele ser muy dispersa, ya que cada usuario valora pocos elementos.
import pandas as pd
matrix = ratings.pivot_table(
index="user_id", columns="item_id", values="rating"
)Dos variantes del CF
- Basado en usuarios: busca usuarios similares a usted y recomienda lo que les gustó.
- Basado en elementos: busca elementos similares a los que le gustaron y recomienda esos elementos.
Ambos enfoques se basan en una medida de similitud entre filas (usuarios) o columnas (elementos).
Similitud coseno
La similitud coseno mide el ángulo entre dos vectores de valoraciones, sin tener en cuenta su magnitud. Los valores cercanos a 1 indican gustos muy similares, mientras que los cercanos a 0 indican que no están relacionados.
from sklearn.metrics.pairwise import cosine_similarity
filled = matrix.fillna(0)
user_sim = cosine_similarity(filled) # user x userPredicción basada en usuarios
Para predecir su valoración de un elemento, calcule una media ponderada de las valoraciones que usuarios similares le han asignado, utilizando la similitud como peso. Los vecinos más similares tienen mayor influencia.
Fórmula de predicción
Valoración predicha = suma de (similitud * valoración del vecino) / suma de las similitudes, considerando los vecinos que han valorado el elemento. Restar primero la media de cada usuario (centrado en la media) corrige las diferencias entre usuarios que suelen valorar alto o bajo.
import numpy as np
def predict(sims, ratings_for_item):
mask = ~np.isnan(ratings_for_item)
if sims[mask].sum() == 0:
return np.nan
return np.dot(sims[mask], ratings_for_item[mask]) / sims[mask].sum()Selección de vecinos (k)
En lugar de utilizar todos los usuarios, conserve únicamente los k vecinos más similares. Esto reduce el ruido de los usuarios poco similares y acelera la predicción. k es un hiperparámetro ajustable.
Similitud basada en elementos
El CF basado en elementos calcula la similitud entre las columnas de elementos en lugar de entre las filas de usuarios. Recomienda los elementos más similares a aquellos que ya le han gustado al usuario.
item_sim = cosine_similarity(filled.T) # item x itemPor qué el enfoque basado en elementos es más estable
Las relaciones entre elementos cambian lentamente: la similitud entre dos películas permanece aproximadamente constante. Los gustos de los usuarios y la base de usuarios cambian más rápido. Por eso, las similitudes entre elementos se pueden precalcular y reutilizar, lo que proporciona recomendaciones más estables y escalables; por este motivo Amazon lo favoreció de manera célebre.
El problema del arranque en frío
El CF tiene dificultades con los usuarios o elementos nuevos que aún no tienen valoraciones; no hay nada con lo que compararlos. Entre las soluciones habituales se incluyen pedir a los usuarios nuevos algunas valoraciones o recurrir a métodos basados en el contenido (que se explican más adelante).
Generación de recomendaciones
Asigne una puntuación a cada elemento que el usuario no haya valorado, ordénelos de forma descendente y devuelva los N primeros como recomendaciones.
scores = {item: predict_for(user, item)
for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]Comprobación rápida
Compruebe sus conocimientos sobre el filtrado colaborativo.
Resumen
Construyó un CF sobre una matriz usuario-elemento, calculó la similitud coseno, predijo valoraciones como una media ponderada por similitud de los vecinos y comprobó por qué el CF basado en elementos es más estable que el basado en usuarios. Siguiente tema: factorización matricial con SVD.
Preguntas frecuentes
¿La lección «Filtrado colaborativo: basado en usuarios y en elementos» es gratis?
Sí — el texto completo de «Filtrado colaborativo: basado en usuarios y en elementos» 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 «Filtrado colaborativo: basado en usuarios y en elementos»?
Similitud entre usuarios, similitud entre elementos, métodos de vecindad y similitud coseno para valoraciones. 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 1 de 4.
¿Cuánto tiempo toma la lección «Filtrado colaborativo: basado en usuarios y en elementos»?
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