## Page 1

# Sistemas de recomendación:
## filtro colaborativo basado en modelos

---

Gestión de la Información
Grado en Ingeniería Informática
Universidad de Burgos

&lt;img&gt;Universidad de Burgos logo&lt;/img&gt;
UNIVERSIDAD
DE BURGOS

José Ignacio Santos, José Manuel Galán
jisantos@ ubu.es, jmgalan@ ubu.es

---


## Page 2

# Contenidos

*   El problema de la recomendación
*   Clases de sistemas de recomendación
*   Introducción a los filtros colaborativos basados en modelos
*   Filtro colaborativo de modelo lineal
    *   Filtro conocidas las características
    *   Filtro conocidas las preferencias
    *   Filtro completo
*   Limitaciones de los filtros colaborativos

---


## Page 3

<header>Problema</header>

Ejemplo: Amazon: ¿Cómo aumentar las ventas?

&lt;img&gt;Screenshot of an Amazon product page displaying a list of related items with two highlighted sections: “More Items to Consider” (top) and “Related to Items You’ve Viewed” (bottom). Green arrows point to these sections, and a white box labeled “Sistema de recomendación” (Recommendation System) is placed over the entire image.&lt;/img&gt;

---


## Page 4

# Problema

Muchas empresas e-commerce disponen de un catálogo de productos inmenso.

Las empresas necesitan facilitar al cliente encontrar lo que busca. Existen diferentes estrategias (complementarias):

*   Estrategia de búsqueda: facilitar al cliente la navegación y búsqueda.
    *   Proceso lento, y puede no terminar con éxito
*   Estrategia de recomendación: proponer una muestra de los productos que más pueden interesar al cliente
    *   Cuanto más acertemos en sus intereses mayores probabilidades de compra

Un sistema de recomendación filtra\* la información y muestra aquellos datos que más pueden interesar al usuario.

En general, los algoritmos de recomendación aprenden\* de las elecciones de cada cliente para construir la lista más adecuada a sus preferencias

\* Por eso se les llama filtros
\* Aprender=estimar parámetros de un modelo en base a un conjunto de datos

---


## Page 5

# Clases de sistemas de recomendación

Sistemas de recomendación

Un sistema de recomendación filtra la información y muestra aquellos datos que potencialmente pueden interesar al usuario
Por ejemplo, muchas empresas e-commerce disponen de un catálogo de productos inmenso, y necesitan proponer aquellos productos que a priori pueden interesar al cliente
Cuanto más se acerquen a sus intereses mayores probabilidades de compra

---


## Page 6

# Clases de sistemas de recomendación

Sistemas de recomendación
*   Filtros basados en contenidos
*   Filtros colaborativos

Filtros basados en contenidos: analizan las características del contenido de los productos para encontrar patrones que permitan hacer recomendaciones de nuevos productos.
Filtros colaborativos: utilizan una matriz de utilidad, e.g. valoraciones (ratings=y<sub>ji</sub>), de los usuarios sobre un conjunto de productos para recomendar nuevos productos.

&lt;img&gt;A diagram showing a matrix with "Users" on the vertical axis and "Items" on the horizontal axis. The cell at position y<sub>j,i</sub> is highlighted in green.&lt;/img&gt;

---


## Page 7

# Clases de sistemas de recomendación

<table>
  <tr>
    <td>
      Sistemas de recomendación<br>
      → Filtros basados en contenidos<br>
      → Filtros colaborativos
    </td>
    <td>
      FC basados en modelos: utilizan los datos para ajustar modelos que después pueden ser utilizados para proponer recomendaciones (e.g. modelos de regresión)<br>
      FC basados en memoria: utilizan los datos para definir similitudes entre usuarios y productos que serán utilizados para construir las recomendaciones (e.g. Amazon)
    </td>
  </tr>
  <tr>
    <td>
      → Basados en modelos<br>
      → Basados en memoria
    </td>
    <td></td>
  </tr>
</table>

---


## Page 8

# Clases de sistemas de recomendación

<table>
  <tr>
    <td>Sistemas de recomendación</td>
    <td>FC basados en usuarios:</td>
  </tr>
  <tr>
    <td>→ Filtros basados en contenidos</td>
    <td>La estimación del rating de un usuario u al producto i se basa en los ratings al producto i de otros usuarios similares a u</td>
  </tr>
  <tr>
    <td>→ Filtros colaborativos</td>
    <td></td>
  </tr>
</table>

<table>
  <tr>
    <td></td>
    <td>FC basados en productos: (e.g. Amazon)</td>
  </tr>
  <tr>
    <td>→ Basados en modelos</td>
    <td>La estimación del rating de un usuario u al producto i se basa en los ratings del usuario u a productos similares a i</td>
  </tr>
  <tr>
    <td>→ Basados en memoria</td>
    <td></td>
  </tr>
</table>

<table>
  <tr>
    <td>→ Basados en usuarios</td>
    <td></td>
  </tr>
  <tr>
    <td>→ Basados en productos</td>
    <td></td>
  </tr>
</table>

---


## Page 9

# Introducción a los filtros colaborativos basados en modelos

Filtros colaborativos basados en modelos que utilizan los datos para ajustar (=aprender) un modelo predefinido (generalmente modelos de regresión lineal)

---


## Page 10

# Formalización del problema

Problema: predecir el rating de películas
→ Supondremos que los usuarios de una tienda de alquiler de películas pueden valorarlas (rating) de 0 a 5 las películas que han visto. Se define una matriz de utilidad (ratings)

<table>
  <thead>
    <tr>
      <th>Película</th>
      <th>Sara</th>
      <th>Raul</th>
      <th>Pedro</th>
      <th>Jorge</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Love Actually</td>
      <td>5</td>
      <td>5</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <td>Shakespeare enamorado</td>
      <td>5</td>
      <td>?</td>
      <td>?</td>
      <td>0</td>
    </tr>
    <tr>
      <td>Tienes un email</td>
      <td>?</td>
      <td>4</td>
      <td>0</td>
      <td>?</td>
    </tr>
    <tr>
      <td>Los juegos del hambre</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>4</td>
    </tr>
    <tr>
      <td>Django desencadenado</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>?</td>
    </tr>
  </tbody>
</table>

---


## Page 11

# Formalización del problema

Problema: predecir el rating de películas
→ Supondremos que los usuarios de una tienda de alquiler de películas pueden valorarlas (rating) de 0 a 5 las películas que han visto. Se define una matriz de utilidad (ratings)

<table>
  <thead>
    <tr>
      <th>Película</th>
      <th>Sara</th>
      <th>Raul</th>
      <th>Pedro</th>
      <th>Jorge</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Love Actually</td>
      <td>5</td>
      <td>5</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <td>Shakespeare enamorado</td>
      <td>5</td>
      <td>?</td>
      <td>?</td>
      <td>0</td>
    </tr>
    <tr>
      <td>Tienes un email</td>
      <td>?</td>
      <td>4</td>
      <td>0</td>
      <td>?</td>
    </tr>
    <tr>
      <td>Los juegos del hambre</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>4</td>
    </tr>
    <tr>
      <td>Django desencadenado</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>?</td>
    </tr>
  </tbody>
</table>

Problema:
¿Qué rating ponemos en las incógnitas?

Si pudiéramos estimar todos los ratings, podríamos proponer a un usuario aquellas películas con mayor rating que todavía no ha visto

---


## Page 12

# Problema de regresión: (1) datos

Centrémonos en un usuario y todas las películas que ha visto.
Supongamos que existe una característica de cada película, e.g. grado de romanticismo (X).
Es un contenido intrínseco a cada película

<table>
  <thead>
    <tr>
      <th>Películas (vistas)</th>
      <th>Usuario<br>(Y)</th>
      <th>Característica<br>(X)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>(1) Love Actually</td>
      <td>4</td>
      <td>0.9</td>
    </tr>
    <tr>
      <td>(2) Shakespeare enamorado</td>
      <td>5</td>
      <td>1.0</td>
    </tr>
    <tr>
      <td>(4) Los juegos del hambre</td>
      <td>1</td>
      <td>0.1</td>
    </tr>
    <tr>
      <td>(5) Django desencadenado</td>
      <td>2</td>
      <td>0.2</td>
    </tr>
    <tr>
      <td>...</td>
      <td>...</td>
      <td>...</td>
    </tr>
  </tbody>
</table>

m

---


## Page 13

# Problema de regresión: (1) datos

La matriz de utilidad de las películas vistas por el usuario puede representarse gráficamente (diagrama de dispersión Y~X)

&lt;img&gt;A scatter plot titled "Ratings" with the x-axis labeled "X" and the y-axis labeled "Ratings". The plot shows several blue dots representing ratings for different movies. A line is drawn through the points, indicating a trend. Several movie titles are annotated on the plot:
- "Love actually" is annotated near the top-right, with a rating around 5.
- "Shakespeare enamorado" is annotated near the middle-right, with a rating around 4.5.
- "Django" is annotated near the middle-left, with a rating around 3.
- "juegos del hambre" is annotated near the bottom-left, with a rating around 0.&lt;/img&gt;

---


## Page 14

# Problema de regresión: (2) modelo

Se propone (hipótesis) un modelo lineal que explica el rating esperado h_θ de una película i como una función lineal de su característica x^(i):

h_θ(x(i)) = Θ₀ + Θ₁x^(i)

Este modelo lineal es un conjunto infinito de “rectas” definidas por los valores particulares de los parámetros del usuario Θ₀ y Θ₁

---


## Page 15

# Problema de regresión: (2) modelo

Ratings

&lt;img&gt;A scatter plot showing data points representing ratings on the y-axis (ranging from 0 to 6) versus some variable x on the x-axis (ranging from 0 to 1). The data points are blue circles. A red line with the equation hθ = θ₀ + θ₁x is plotted, where θ₀ = 0 and θ₁ = 2.&lt;/img&gt;

hθ

θ₀ = 0
θ₁ = 2

---


## Page 16

# Problema de regresión: (2) modelo

Ratings

&lt;img&gt;A scatter plot with blue data points representing ratings on the y-axis (0 to 6) against a variable x on the x-axis (0 to 1). A red line, which is the hypothesis function \( h_\theta \), is drawn through the data points. The equation of the line is \( h_\theta = 1 + 4.5x \), where \( \theta_0 = 1 \) and \( \theta_1 = 4.5 \).&lt;/img&gt;

\( \theta_0 = 1 \)
\( \theta_1 = 4.5 \)

---


## Page 17

# Problema de regresión: (3) aprendizaje

El problema de regresión puede ser explicado como un problema de aprendizaje supervisado. Se dispone de un conjunto de datos de entrenamiento (rating de películas vista, característica de la película) que puede ser utilizado para que el modelo aprenda (ajuste los parámetros)

m: número de muestras de entrenamiento (películas)

x^(i): variable de entrada para la película i-ésima: característica de la película

y^(i): variable de salida (objetivo) para la película i-ésima: rating del usuario

---


## Page 18

# Problema de regresión: (3) aprendizaje

<mermaid>
graph TD
    A[Conjunto de entrenamiento {x^(i), y^(i)}] --> B[Modelo h_θ(x)]
    B --> C[h_θ(x) = θ^T x = θ₀ + θ₁x₁]
    C --> D[Algoritmo de aprendizaje]
    D --> E[Escoger {Θ₀, Θ₁} para que h_θ(x) esté lo más próximo posible a la variable objetivo y para todos los valores de entrenamiento {x^(i), y^(i)}]
    E --> F[Próximo: función de coste J(Θ₀, Θ₁)]
    F --> G[Escoger: Min_{Θ₀Θ₁} J(Θ₀, Θ₁)]
</mermaid>

---


## Page 19

# Problema de regresión: (3) aprendizaje

Definimos una función de coste:
J(θ) = 1/(2m) Σ<sub>i=1</sub><sup>m</sup> (h<sub>θ</sub>(x<sup>(i)</sup>) - y<sup>(i)</sup>)²

&lt;img&gt;A scatter plot titled "Ratings" with x-axis labeled "X<sup>(i)</sup>" ranging from 0 to 1 and y-axis labeled "y<sup>(i)</sup>" ranging from 0 to 6. The plot shows several blue data points representing ratings. A red line, which appears to be a linear regression line, is drawn through these points. The equation h<sub>θ</sub> is written on the graph near the line.&lt;/img&gt;

h<sub>θ</sub>(X<sup>(i)</sup>) - y<sup>(i)</sup>

---


## Page 20

# Problema de regresión: (3) aprendizaje

Algoritmo de aprendizaje: **descenso del gradiente**

Min<sub>Θ₀Θ₁</sub> J(Θ₀,Θ₁)

**Algoritmo:**
(1) Inicializar (Θ₀,Θ₁)
(2) Actualizar (Θ₀,Θ₁) tal que se produzca un descenso en J(Θ₀,Θ₁)

Θⱼ := Θⱼ - α ∂/∂Θⱼ J(Θ)

&lt;img&gt;3D surface plot showing a landscape with contour lines, a blue cross indicating a point on the surface, and red arrows indicating the gradient descent direction.&lt;/img&gt;
&lt;img&gt;2D contour plot showing a landscape with contour lines, a blue cross indicating a point on the surface, and a red dashed line indicating the gradient descent path towards a minimum.&lt;/img&gt;

parámetro de aprendizaje

---


## Page 21

# Problema de regresión: (3) aprendizaje

Algoritmo de aprendizaje: **descenso del gradiente**.
Elección del parámetro de aprendizaje

&lt;img&gt;A two-panel graph illustrating gradient descent for regression.

Left panel:
*   The x-axis is labeled θj.
*   The y-axis is labeled J(θj).
*   A red curve represents the cost function J(θj) with respect to θj.
*   A blue arrow points downward and leftward, indicating the direction of gradient descent.
*   A red circle marks the starting point on the curve.
*   A blue cross marks the final point on the curve.
*   Text near the blue arrow reads "α adecuado" (α adequate).

Right panel:
*   The x-axis is labeled θj.
*   The y-axis is labeled J(θj).
*   A red curve represents the cost function J(θj) with respect to θj.
*   A blue arrow points downward and leftward, indicating the direction of gradient descent.
*   A red circle marks the starting point on the curve.
*   A blue cross marks the final point on the curve.
*   Text near the blue arrow reads "α demasiado grande" (α too large).&lt;/img&gt;

---


## Page 22

# Problema de regresión: (3) aprendizaje

Optimización local

El descenso del gradiente no garantiza alcanzar un mínimo global

J(Θⱼ)

mínimo local

mínimo global

Θⱼ

---


## Page 23

Filtro colaborativo basado en un modelo lineal que explica las valoraciones de los usuarios como función lineal de preferencias de usuario y características de los productos

---

Filtro colaborativo basado en un modelo lineal

---


## Page 24

# Formalización del problema

*   Volviendo al problema inicial donde tenemos más de un usuario.
*   Además de la **matriz de utilidad** (ratings) que llamaremos Y, definiremos una **matriz R** de valores binarios {1,0} y que identifica las películas vistas por cada usuario
*   Utilizaremos las siguientes variables:

<table>
  <tr>
    <td>u</td>
    <td>número de usuarios</td>
  </tr>
  <tr>
    <td>m</td>
    <td>número de películas</td>
  </tr>
  <tr>
    <td>Matriz R -></td>
    <td>$r^{(i,j)}$ = 1 si el Usuario j vio la Película i</td>
  </tr>
  <tr>
    <td>Matriz Y -></td>
    <td>$y^{(i,j)}$ = rating Usuario j a la Película i (si r(i,j)=1)</td>
  </tr>
</table>

---


## Page 25

# FC conocidas las características

*   Ahora supondremos que existen dos características (n=2) de las películas: grado de romanticismo (x1) y grado de acción (x2)
*   Las características se suponen que son contenidos intrínsecos a cada película: cada película tiene un valor en cada característica

<table>
  <thead>
    <tr>
      <th rowspan="2">Película</th>
      <th colspan="4">u</th>
      <th colspan="2">n=2</th>
    </tr>
    <tr>
      <th>Sara(1)</th>
      <th>Raúl(2)</th>
      <th>Pedro(3)</th>
      <th>Jorge(4)</th>
      <th>x1</th>
      <th>x2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>(1) Love Actually</td>
      <td>5</td>
      <td>5</td>
      <td>0</td>
      <td>0</td>
      <td>0.9</td>
      <td>0</td>
    </tr>
    <tr>
      <td>(2) Shakespeare enamorado</td>
      <td>5</td>
      <td>?</td>
      <td>?</td>
      <td>0</td>
      <td>1.0</td>
      <td>0.01</td>
    </tr>
    <tr>
      <td>(3) Tienes un email</td>
      <td>?</td>
      <td>4</td>
      <td>0</td>
      <td>?</td>
      <td>0.99</td>
      <td>0</td>
    </tr>
    <tr>
      <td>(4) Los juegos del hambre</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>4</td>
      <td>0.1</td>
      <td>1.0</td>
    </tr>
    <tr>
      <td>(5) Django desencadenado</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>?</td>
      <td>0</td>
      <td>0.9</td>
    </tr>
  </tbody>
</table>

m

---


## Page 26

# FC conocidas las características

Cada película se representa por un vector de (n+1) características (teniendo en cuenta el intercepto)*, para nuestro ejemplo n=2

x^(i) = [ x_0^(i) = 1 x_1^(i) x_2^(i) ] ∈ R^(n+1)

Para hacer una predicción necesitamos estimar (aprender) para cada usuario j un vector de (n+1) parámetros (preferencias)

θ^(j) ∈ R^(n+1)

Por ejemplo, si el vector de preferencias de Sara (usuario 1) es conocido (0,5,0), entonces la predicción del rating de la película 3 (1,0.99,0) para Sara será:

ŷ^(3,1) = x^(3)(θ^(1))^T = [ 1 0.99 0 ] [ 0 5 0 ] = 0.99*5=4.95

---


## Page 27

# Función objetivo

Para estimar el vector de parámetros del usuario j se hace una regresión lineal que minimiza la siguiente función objetivo:

$min_{\theta^{(j)}} \frac{1}{2} \sum_{i:r(i,j)=1}^{u} (x^{(i)}(\theta^{(j)})^T - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{k=0}^{n} (\theta_k^{(j)})^2$

donde se introduce un término de regularización para evitar el overfitting

Para estimar los vectores de parámetros de todos los usuarios se generaliza la función objetivo:

$min_{\theta^{(1)},...,\theta^{(u)}} \frac{1}{2} \sum_{j=1}^{u} \sum_{i:r(i,j)=1}^{u} (x^{(i)}(\theta^{(j)})^T - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{j=1}^{u} \sum_{k=0}^{n} (\theta_k^{(j)})^2$

---


## Page 28

ANEXO

# Ajuste mediante descenso del gradiente

Función objetivo:

$min_{\theta^{(1)},...,\theta^{(n_w)}} \frac{1}{2} \sum_{j=1}^{n_u} \sum_{i:r(i,j)=1}^{[r]} (x^{(i)}(\theta^{(j)})^T - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{j=1}^{n_u} \sum_{k=0}^{n} (\theta_k^{(j)})^2$

Ajuste iterativo mediante descenso del gradiente (con un parámetro alfa de aprendizaje)

$\theta_k^{(j)} := \theta_k^{(j)} - \alpha \sum_{i:r(i,j)=1}^{[r]} (x^{(i)}(\theta^{(j)})^T - y^{(i,j)}) x_k^{(i)} \quad para \ k=0$

$\theta_k^{(j)} := \theta_k^{(j)} - \alpha \left( \sum_{i:r(i,j)=1}^{[r]} (x^{(i)}(\theta^{(j)})^T - y^{(i,j)}) x_k^{(i)} + \lambda \theta_k^{(j)} \right) \quad para \ k\neq 0$

---


## Page 29

# Limitaciones de esta primera aproximación

Este filtro es lo que se denomina un Filtro Basado en Contenidos (Content-Based Filtering)

El algoritmo del sistema de recomendación basado en contenidos requiere que exista un vector de características para todas las películas que describa adecuadamente los contenidos

Sin embargo, en general:

*   No se dispone de estos valores para todas las películas
*   Resulta difícil y lento encontrar a “alguien” que haga la evaluación completa de las características\* de todas las películas

\* Hablamos de muchas más de 2 características

---


## Page 30

# FC conocidas las preferencias

Suponemos que ahora se desconocen las características de cada película, pero sí se conocen los vectores de parámetros de cada usuario (sus preferencias), e.g. cuánto valora que una película sea romántica y de acción. ¿Es posible estimar las características?

θ^(1) = [ 0 5 0 ], θ^(2) = [ 0 5 0 ], θ^(3) = [ 0 0 5 ], θ^(4) = [ 0 0 5 ]

<table>
  <thead>
    <tr>
      <th>Película</th>
      <th>Sara(1)</th>
      <th>Raúl(2)</th>
      <th>Pedro(3)</th>
      <th>Jorge(4)</th>
      <th>x1</th>
      <th>x2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>(1) Love Actually</td>
      <td>5</td>
      <td>5</td>
      <td>0</td>
      <td>0</td>
      <td>?</td>
      <td>?</td>
    </tr>
    <tr>
      <td>(2) Shakespeare enamorado</td>
      <td>5</td>
      <td>?</td>
      <td>?</td>
      <td>0</td>
      <td>?</td>
      <td>?</td>
    </tr>
    <tr>
      <td>(3) Tienes un email</td>
      <td>?</td>
      <td>4</td>
      <td>0</td>
      <td>?</td>
      <td>?</td>
      <td>?</td>
    </tr>
    <tr>
      <td>(4) Los juegos del hambre</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>4</td>
      <td>?</td>
      <td>?</td>
    </tr>
    <tr>
      <td>(5) Django desencadenado</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>?</td>
      <td>?</td>
      <td>?</td>
    </tr>
  </tbody>
</table>

---


## Page 31

FC conocidas las preferencias

Suponer por ejemplo que desconocemos las características de la película 1:

$x^{(i)} = \begin{bmatrix} x_0^{(i)} = 1 & x_1^{(i)} & x_2^{(i)} \end{bmatrix} \in \mathbb{R}^{n+1}$ i=1

pero conocemos las preferencias de los usuarios y sus ratings:

$\theta^{(1)} = \begin{bmatrix} 0 & 5 & 0 \end{bmatrix}, \theta^{(2)} = \begin{bmatrix} 0 & 5 & 0 \end{bmatrix}, \theta^{(3)} = \begin{bmatrix} 0 & 0 & 5 \end{bmatrix}, \theta^{(4)} = \begin{bmatrix} 0 & 0 & 5 \end{bmatrix}$

En este ejemplo podemos aproximar los parámetros desconocidos fácilmente:

$x^{(1)}(\theta^{(1)})^T = 5, \quad x^{(1)}(\theta^{(2)})^T = 5, \quad x^{(1)}(\theta^{(3)})^T = 0, \quad x^{(1)}(\theta^{(4)})^T = 0$

$x_1^{(1)} = 1, \quad x_2^{(1)} = 0$

---


## Page 32

# FC conocidas las preferencias: estimar x^(i)

Conocidos los vectores de parámetros de cada usuario, podemos estimar el vector de características de la película i mediante una regresión lineal:

$$min_{x^{(i)}} \frac{1}{2} \sum_{j:r(i,j)=1}^m (x^{(i)}(\theta^{(j)})^T - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{k=0}^n (x_k^{(i)})^2$$

Ahora los parámetros de la regresión están en el vector x^(i)

Para estimar los vectores de características de todas las películas se generaliza la función objetivo*:

$$min_{x^{(1)},...,x^{(m)}} \frac{1}{2} \sum_{i=1}^m \sum_{j:r(i,j)=1}^m (x^{(i)}(\theta^{(j)})^T - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{i=1}^m \sum_{k=0}^n (x_k^{(i)})^2$$

* Es un problema de regresiones lineales separadas idéntico al propuesto para el sistema basado en contenidos

---


## Page 33

# FC conocidas las preferencias: estimar x^(i)

Conocidos los vectores de parámetros de cada usuario, podemos estimar el vector de características de la película i mediante una regresión lineal:

$$min_{x^{(i)}} \frac{1}{2} \sum_{j:r(i,j)=1}^m (x^{(i)}(\theta^{(j)})^T - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{k=0}^n (x_k^{(i)})^2$$

Ahora los parámetros de la regresión están en el vector x^(i)

Para estimar los vectores de características de todas las películas se generaliza la función objetivo*:

$$min_{x^{(1)},...,x^{(m)}} \frac{1}{2} \sum_{i=1}^m \sum_{j:r(i,j)=1}^m (x^{(i)}(\theta^{(j)})^T - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{i=1}^m \sum_{k=0}^n (x_k^{(i)})^2$$

* Es un problema de regresiones lineales separadas idéntico al propuesto para el sistema basado en contenidos

---


## Page 34

# FC completo: estimaciones recursivas

El filtro cooperativo requiere dos etapas:

*   Dado {x^(1),...,x^(m)}, y los ratings {y^(i,j)} estimamos {θ^(1),...,θ^(u)}
*   Dado {θ^(1),...,θ^(u)}, y los ratings {y^(i,j)} estimamos {x^(1),...,x^(m)}

que se realizan iterativamente desde una solución inicial aleatoria

*   aleatorio {θ^(i)} → {x^(i)} → {θ^(i)} → {x^(i)} → {θ^(i)} → {x^(i)} → ...

---

---


## Page 35

# FC función objetivo integrada

Ahora no se requiere intercepto, θ^(j), x^(i) ∈ R^n y la Función objetivo integrada:

$$min_{\theta^{(1)}, ..., \theta^{(u)}} \frac{1}{2} \sum_{(i,j): r(i,j)=1} (x^{(i)}(\theta^{(j)})^T - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{i=1}^{m} \sum_{k=1}^{n} (x_k^{(i)})^2 + \frac{\lambda}{2} \sum_{j=1}^{u} \sum_{k=1}^{n} (\theta_k^{(j)})^2$$

Parámetros de los dos conjuntos de regresiones iterativas

---

Función de pérdida =
+ Suma errores de predicción
+ Penalización (regularización Ridge) de parámetros X
+ Penalización (regularización Ridge) de parámetros Θ

---


## Page 36

ANEXO

# FC algoritmo

(1) Inicializar con valores pequeños aleatorios $\{\theta^{(1)},...,\theta^{(u)}\}, \{x^{(1)},...,x^{(m)}\}$

(2) Minimizar la función objetivo aplicando el descenso del gradiente:

$\theta_k^{(j)} := \theta_k^{(j)} - \alpha \frac{\partial J}{\partial \theta_k^{(j)}} = \theta_k^{(j)} - \alpha \left( \sum_{i:r(i,j)=1} (x^{(i)}(\theta^{(j)})^T - y^{(i,j)}) x_k^{(i)} + \lambda \theta_k^{(j)} \right)$

$x_k^{(i)} := x_k^{(i)} - \alpha \frac{\partial J}{\partial x_k^{(i)}} = x_k^{(i)} - \alpha \left( \sum_{j:r(i,j)=1} (x^{(i)}(\theta^{(j)})^T - y^{(i,j)}) \theta_k^{(j)} + \lambda x_k^{(i)} \right)$

(3) Calcular la predicción del rating de la película i para el usuario j como:

$\hat{y}^{(i,j)} = x^{(i)}(\theta^{(j)})^T$

---


## Page 37

# FC: normalización de media

¿Qué ocurre si aparece un nuevo usuario que no ha valorado ninguna película?

<table>
  <thead>
    <tr>
      <th>Película</th>
      <th>Sara(1)</th>
      <th>Raúl(2)</th>
      <th>Pedro(3)</th>
      <th>Jorge(4)</th>
      <th>Bea(5)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>(1) Love Actually</td>
      <td>5</td>
      <td>5</td>
      <td>0</td>
      <td>0</td>
      <td>?</td>
    </tr>
    <tr>
      <td>(2) Shakespeare enamorado</td>
      <td>5</td>
      <td>?</td>
      <td>?</td>
      <td>0</td>
      <td>?</td>
    </tr>
    <tr>
      <td>(3) Tienes un email</td>
      <td>?</td>
      <td>4</td>
      <td>0</td>
      <td>?</td>
      <td>?</td>
    </tr>
    <tr>
      <td>(4) Los juegos del hambre</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>4</td>
      <td>?</td>
    </tr>
    <tr>
      <td>(5) Django desencadenado</td>
      <td>0</td>
      <td>0</td>
      <td>5</td>
      <td>?</td>
      <td>?</td>
    </tr>
  </tbody>
</table>

```mermaid
min
θ^(1),...,θ^(u)
x^(1),...,x^(m)

1/2 Σ (i,j):r(i,j) (x^(i)(θ^(i))^T - y^(i,j))^2 + λ/2 Σ_i=1^m Σ_k=1^n (x^(i))_k^2 + λ/2 Σ_j=1^u Σ_k=1^n (θ^(j))_k^2

El usuario 5 no tiene ratings

y^(i,5) = (θ^(5))^T x^(i) = 0 ∀i

min
θ^(5)_1, θ^(5)_2

λ/2 ((θ^(5)_1)^2 + (θ^(5)_2)^2)

θ^(5)_1 = θ^(5)_2 = 0

---


## Page 38

# FC: normalización de media

Para solucionar esta indefinición, antes de minimizar normalizamos la matriz de ratings restando a cada rating la media de rating de la correspondiente película

$\hat{Y} = Y - \mu = \begin{bmatrix}
5 & 5 & 0 & 0 & ? \\
5 & ? & ? & 0 & ? \\
? & 4 & 0 & ? & ? \\
0 & 0 & 5 & 4 & ? \\
0 & 0 & 5 & 0 & ?
\end{bmatrix} - \begin{bmatrix}
2.5 \\
2.5 \\
2 \\
2.25 \\
1.25
\end{bmatrix} = \begin{bmatrix}
2.5 & 2.5 & -2.5 & -2.5 & ? \\
2.5 & ? & ? & -2.5 & ? \\
? & 2 & -2 & ? & ? \\
-2.25 & -2.25 & 2.75 & 1.75 & ? \\
-1.25 & -1.25 & 3.75 & -1.25 & ?
\end{bmatrix}$

Ahora la predicción para el usuario 5 coincide con el rating promedio de las películas (aproximación razonable)

$\hat{y}^{(i,5)} = \begin{bmatrix}
2.5 \\
2.5 \\
2 \\
2.25 \\
1.25
\end{bmatrix}$

---


## Page 39

# FC como problema de factorización

El problema de factorización matricial de bajo rango permite descomponer una matriz como producto de dos matrices de menor rango (máxima dimensión de subespacios linealmente independientes)

&lt;img&gt;A diagram showing two matrices A[mxu] and U[kxu] with a star indicating a non-zero element, and V[kxu]. The equation A[mxu] = UV^T is shown below.&lt;/img&gt;

A[mxu] = UV^T =
[ U₁^(1) ... Uₙ^(1) ]
[ U₁^(m) ... Uₙ^(m) ]
[ V₁^(1) ... Vₙ^(1) ]
[ V₁^(u) ... Vₙ^(u) ]

k = n << (m,u)

&lt;img&gt;A red dashed box around A, Y, U, X, and Θ with the text "Antes lo llamábamos".&lt;/img&gt;

Es útil con sistemas de recomendación. La matriz A a descomponer es la matriz de ratings de los usuarios al conjunto de ítems. Las dos matrices U y V capturan las características latentes de ítems y de usuarios. Si somos capaces de construir esta dos matrices, podemos reconstruir la matriz original y consecuentemente estimar las celdas vacías con las que hacer recomendaciones

---


## Page 40

# Algoritmo factorización en Surprise

La librería [Surprise](https://surpriselib.com) recoge una serie de algoritmos para sistemas de recomendación. Entre ellos, propone una [variante](https://surpriselib.com) del problema de factorización de bajo rango propuesta por [Koren, Bell y Volinsky (2009)](https://surpriselib.com) en el contexto del Netflix Prize (2008-2009)

Incluye sesgos (biases). Cada predicción no es solo $U_i \cdot V_j$ sino que además suma un sesgo global $\mu$ (media de todos los ratings), un sesgo por usuario $b_u$ y un sesgo por ítem $b_i$

$r_{ui} = \mu + b_u + b_i + U_u \cdot V_i$

Los sesgos capturan que algunos usuarios tienden a puntuar más alto/bajo en general, y que algunos ítems suelen recibir mejores/peores valoraciones (son más o menos populares), independientemente de las características latentes

Como en otros modelos impone regularización en la función de coste para evitar overfitting. Además, utiliza técnicas de descenso de gradiente estocástico para estimar las matrices y sesgos, y está implementado teniendo en cuenta la dispersión habitual de las matrices de ratings

¡En este algoritmo no es necesario normalizar con usuarios sin ratings puesto que estima el sesgo general y el de los items!

---


## Page 41

# FC como problema de factorización

Cada item {1,2,...,m} se representa en un espacio de n características latentes mediante el vector

$$\begin{bmatrix}
U_1^{(1)} & ... & U_n^{(1)}
\end{bmatrix}$$

Análogamente, cada usuario {1,2,...,u} se representa en un espacio de n características latentes mediante el vector

$$\begin{bmatrix}
V_1^{(1)} & ... & V_n^{(1)}
\end{bmatrix}$$

&lt;img&gt;A 3D coordinate system with axes labeled X, Y, Z. A point (x,y,z) is plotted. The origin O is at (0,0,0). The x-axis extends to the right, the y-axis extends upwards, and the z-axis extends upwards.&lt;/img&gt;

Espacio de características latentes de n=3

---


## Page 42

# Distancia entre películas, y entre usuarios

Una vez resuelto el problema del filtro cooperativo podemos estimar la relación entre dos películas i1 e i2 como su **distancia** (e.g. distancia euclidéa):

$||x^{(i1)} - x^{(i2)}||$

Si se quiere proponer las 10 películas más relacionadas con una dada i, podemos calcular la distancia de i a todas las demás y filtrar las 10 distancias más pequeñas

De forma análoga se puede definir la **distancia entre usuarios** y calcular por ejemplo los 10 usuarios más próximos a uno dado (aquellos con distancia más pequeña)

---


## Page 43

# Problemas del Filtro Colaborativo

*   &lt;img&gt;Laptop icon&lt;/img&gt; **Cold Start**: la introducción de nuevos usuarios o nuevos productos genera problemas por la falta de datos para poder proponer recomendaciones
*   &lt;img&gt;Laptop icon&lt;/img&gt; **Escalabilidad**: al aumentar el número de usuarios y/o productos aumentan el número de regresiones y regresores
    *   E.g. ¿Cuántos regresores se requiere en el filtro cooperativo del ejemplo?
*   &lt;img&gt;Laptop icon&lt;/img&gt; **Sinónimos**: dificultad de identificar productos idénticos
*   &lt;img&gt;Person waving icon&lt;/img&gt; **Sesgo hacia la popularidad**: aquellos productos con pocos datos pierden peso frente a los más populares (por razones históricas), impidiendo hacer buenas recomendaciones de productos novedosos

---


## Page 44

# Problemas del Filtro Colaborativo

*   &lt;img&gt;Person with hand up icon&lt;/img&gt; **Ovejas grises:** aquellos usuarios cuyas preferencias no suelen coincidir con la de la mayoría de los grupos aprendidos por el filtro cooperativo reciben malas recomendaciones, i.e. el sistema no tiene éxito haciendo coincidir los contenidos con las preferencias de un usuario.
    *   El caso extremo es el usuario con preferencias únicas (oveja negra)
*   &lt;img&gt;Person with hand up icon&lt;/img&gt; **Robustez:** cuando los usuarios tienen incentivos a modificar los rating para conseguir mejorar/empeorar productos la calidad del sistema se ve comprometida

---


## Page 45

# Aplicaciones de filtros colaborativos

*   http://www.last.fm/
*   http://www.seethisnext.com/
*   http://www.netflixprize.com/ (concurso entre 2006 y 2009 patrocinado por Netflix con premios de 1M$)