🧮 Computational Mathematics

Inicio · Parte 05 — Álgebra lineal I: vectores y matrices

120 — Capstone: resolver un sistema de recomendación lineal

intermedio clase 20 de 20 4 horas demostración capstone_linear_recommender

Un recomendador por filtrado colaborativo es producto punto normalizado y media ponderada; nada más.

Fórmulas

similitud(u,v) = u·v / (‖u‖‖v‖)
puntuación(i) = Σ sim(u,w)·rᵥᵢ / Σ |sim(u,w)|

Desarrollo

El capstone construye un sistema de recomendación por filtrado colaborativo basado en usuarios, y su interés está en lo que no usa: ninguna biblioteca de machine learning, ningún modelo entrenado, ninguna red neuronal. Es producto punto, norma y media ponderada.

El algoritmo tiene tres pasos. Calcular la similitud coseno entre el usuario objetivo y todos los demás; usar esas similitudes como pesos para promediar las valoraciones de los demás sobre los ítems que el objetivo no ha visto; recomendar el ítem con mayor puntuación estimada. Los pesos se normalizan dividiendo por la suma de similitudes absolutas para que la escala se conserve.

Las limitaciones son reales y conviene declararlas. El arranque en frío: un usuario nuevo no tiene vector, así que no hay similitud que calcular. La dispersión: en un catálogo real, cada usuario ha valorado una fracción minúscula de los ítems, y los vectores son casi todo ceros. Y el coste: comparar con todos los usuarios es O(n·d) por consulta, inviable con millones de usuarios sin índices aproximados.

Los sistemas industriales resuelven esas limitaciones con factorización matricial —que es la parte 06— y con embeddings aprendidos, pero la métrica de comparación sigue siendo la de esta clase. Entender el caso simple es lo que permite entender por qué las soluciones complejas hacen lo que hacen.

Ejemplo trabajado

Recomendar a «ana» entre cuatro usuarios.

valoraciones (0 = no visto):
  ana    [5, 3, 0, 1]
  beto   [4, 0, 0, 1]
  cata   [1, 1, 0, 5]
  dario  [0, 0, 5, 4]

similitud coseno con ana:
  beto  0.9783    ← el más parecido
  cata  0.4707
  dario 0.0900

ítems no vistos por ana: índice 2

puntuación estimada del ítem 2:
  (0.9783·0 + 0.4707·0 + 0.0900·5) / (0.9783+0.4707+0.0900) = 0.29

recomendación: ítem 2 (el único no visto)

Qué calcula el laboratorio

Capstone: recomendación lineal por similitud coseno entre usuarios.

python classes/part-05-algebra-lineal-i-vectores-y-matrices/120-capstone-resolver-un-sistema-de-recomendacion-lineal/lab.py
compmath run 120

Salidas del laboratorio (8)

Muestra de la ejecución real

{
  "usuarios": {
    "ana": [
      5.0,
      3.0,
      0.0,
      1.0
    ],
    "beto": [
      4.0,
      0.0,
      0.0,
      1.0
    ],
    "cata": [
      1.0,
      1.0,
      0.0,
      5.0
    ],
    "dario": [
      0.0,
      0.0,
      5.0,
      4.0
    ]
  },
  "objetivo": "ana",
  "similitudes": {
    "beto": 0.860916,
    "cata": 0.42289,
    "dario": 0.105593
  },
  "vecino_mas_parecido": "beto",
  "puntajes_estimados": [
    2.782897,
    0.304369,
    0.379995,
    2.445473
  ],
  "items_no_vistos": [
    2
  ]
}

Errores comunes

Dónde se usa

Sistemas de recomendación, búsqueda por similitud, agrupación de usuarios y motores de contenido relacionado. El mismo cálculo, con embeddings en lugar de valoraciones, es la base de la recuperación semántica.

Idea rectora de la parte

El determinante mide cuánto escala el volumen una transformación.

Error a evitar

Confundir dimensión del espacio con número de vectores.

Conexión con IA

Cada capa densa es un producto matriz-vector. Los embeddings viven en subespacios y la similitud entre ellos es producto punto normalizado.

Bibliografía de la clase

Archivos de la clase