## Page 1

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

---

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

*   Filtros colaborativos basados en memoria
*   Filtro colaborativo basado en usuarios
*   Filtro colaborativo basado en productos
*   Problemas de filtros colaborativos

---


## Page 3

# 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 4

# 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 5

# Filtro colaborativo basado en usuarios

La hipótesis de un filtro colaborativo **basado en usuarios** es que:

*   Si dos usuarios han valorado de forma similar un conjunto de productos, lo harán también en otro producto

Los FC basados en usuarios requieren:
1.  Una **matriz de utilidad** (e.g. ratings)
2.  Una definición de **similitud entre usuarios**
3.  Una definición de **vecindad** (subconjunto más próximo a un **usuario**)
4.  Una **regla** para predecir el rating en base al conjunto de **usuarios** de la vecindad

---


## Page 6

# Matriz de utilidad

<mermaid>
graph TD
    subgraph Users
        A[1]
        B[2]
        C[...]
        D[u]
        E[v]
        F[...]
        G[n]
    end

    subgraph Items
        H[1]
        I[2]
        J[...]
        K[i]
        L[j]
        M[...]
        N[m]
    end

    Users -->|Users| Matrix
    Matrix -->|Items| Users

    Matrix[
        <table>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>...</td>
                <td>i</td>
                <td>...</td>
                <td>j</td>
                <td>...</td>
                <td>m</td>
            </tr>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
            </tr>
            <tr>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
            </tr>
            <tr>
                <td>u</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
            </tr>
            <tr>
                <td>v</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
            </tr>
            <tr>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
            </tr>
            <tr>
                <td>n</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
                <td>...</td>
            </tr>
        </table>
    ]

    ru,i(ru,i)
</mermaid>

La matriz de utilidad representa una función de utilidad:
U: users x items -> rating
Ejemplos rating:
* Binario (1,0)
* Escala (1-5)

---


## Page 7

# Definición de similitud entre usuarios

Items

<table>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>...</td>
    <td>i</td>
    <td>...</td>
    <td>j</td>
    <td>...</td>
    <td>m</td>
  </tr>
</table>

Users

<table>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>...</td>
    <td>u</td>
    <td>-</td>
    <td>ru,2</td>
    <td>...</td>
    <td>ru,i</td>
    <td>...</td>
    <td>ru,j</td>
    <td>...</td>
    <td>ru,m</td>
  </tr>
  <tr>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
  </tr>
  <tr>
    <td>n</td>
    <td>...</td>
    <td>...</td>
    <td>v</td>
    <td>r<sub>v,i</sub></td>
    <td>-</td>
    <td>...</td>
    <td>r<sub>v,i</sub></td>
    <td>...</td>
    <td>r<sub>v,j</sub></td>
    <td>...</td>
    <td>r<sub>v,m</sub></td>
  </tr>
</table>

Ratings de productos
i∈I

que ambos usuarios (u,v) han valorado

---


## Page 8

# Definición de similitud entre usuarios

(1) Similitud del coseno (-1,1)

sim<sub>u,v</sub> = Σ<sub>i∈I</sub> r<sub>u,i</sub>r<sub>v,i</sub> / √(Σ<sub>i∈I</sub> r<sup>2</sup><sub>u,i</sub>) √(Σ<sub>i∈I</sub> r<sup>2</sup><sub>v,i</sub>)

Coseno:
qué tan parecidos
son los gustos en
dirección

(2) Coeficiente correlación de Pearson (-1,1)

sim<sub>u,v</sub> = Σ<sub>i∈I</sub> (r<sub>u,i</sub> - r̄<sub>u</sub>)(r<sub>v,i</sub> - r̄<sub>v</sub>) / √(Σ<sub>i∈I</sub> (r<sub>u,i</sub> - r̄<sub>u</sub>)<sup>2</sup>) √(Σ<sub>i∈I</sub> (r<sub>v,i</sub> - r̄<sub>v</sub>)<sup>2</sup>)

Person:
qué tan parecidos
son los gustos
independientemente
de la escala
personal de
valoración

I productos
evaluados por u,v

---


## Page 9

# Intersección!!!

¡Cuidado!

En las medidas de similitud solo se consideran los ítems que ambos usuarios han valorado (la intersección de sus valoraciones no vacías)

I<sub>uv</sub> = { i∈I | r<sub>u,i</sub> y r<sub>v,i</sub> existen}

Las medidas de similitud se basan en comparar patrones de valoración comunes. Si un ítem no fue valorado por ambos, no hay información sobre cómo sus preferencias se relacionan respecto a ese ítem

Incluir valores nulos o tratarlos como ceros introduce sesgo. La función pairwise_distances de SciKit no tiene en cuenta la intersección lo que sesga las similitudes en datos dispersos

**Corolario:** si la intersección es muy pequeña (por ejemplo, 1 o 2 ítems comunes), la similitud puede ser poco fiable, generalmente se establecen algún tamaño mínimo

---


## Page 10

# Regla para estimar un rating

Filtro colaborativo basado en usuarios (user-based):

$$\hat{r}_{u,i} = \overline{r}_u + \frac{\sum_{v \in U} (r_{v,i} - \overline{r}_v) sim_{u,v}}{\sum_{v \in U} |sim_{u,v}|}$$

*   Media ponderada de los ratings (normalizados) de los usuarios que evaluaron i (siendo los pesos la similitud de los usuarios)
*   U usuarios* que han evaluado i

* Se suele hacer sobre un subconjunto de usuarios: por ejemplo los k vecinos más próximos

---


## Page 11

# Vecindad

En un FC basado en usuarios, la predicción del rating de un usuario $u$ para un ítem $i$ puede calcularse utilizando solo las valoraciones de un subconjunto (vecindad) de usuarios más próximos a mi:

*   Vecindad fija (top-k): por ejemplo, los 10 usuarios más parecidos
*   Vecindad con “threshold”: incluir solo usuarios con similitud > threshold

¿Por qué? Porque si usáramos todos los usuarios:
*   Se introduce ruido (usuarios con gustos diferentes distorsionan la media)
*   Aumenta el coste computacional
*   Podría haber sesgos negativos (si muchos usuarios no han evaluado ítems similares)

&lt;img&gt;A diagram showing a red dashed circle containing several green smiley face icons, representing users, with some yellow-green smiley face icons outside the circle, representing other users.&lt;/img&gt;

---


## Page 12

# Ejemplo

Matriz de utilidad:

<table>
  <thead>
    <tr>
      <th></th>
      <th>Star Wars VII</th>
      <th>Batman v Superman</th>
      <th>Ocho apellidos vascos</th>
      <th>Marte</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>UserA</td>
      <td>4</td>
      <td>NaN</td>
      <td>3</td>
      <td>5</td>
    </tr>
    <tr>
      <td>UserB</td>
      <td>NaN</td>
      <td>5</td>
      <td>4</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>UserC</td>
      <td>5</td>
      <td>4</td>
      <td>2</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>UserD</td>
      <td>2</td>
      <td>4</td>
      <td>NaN</td>
      <td>3</td>
    </tr>
    <tr>
      <td>UserE</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>NaN</td>
    </tr>
  </tbody>
</table>

Queremos obtener la predicción del usuario C a la película Marte

---


## Page 13

# Ejemplo: FC basado en usuarios

$\hat{r}_{u,i} = \overline{r}_u + \frac{\sum_{v\in U}(r_{v,i} - \overline{r}_v)sim_{u,v}}{\sum_{v\in U}|sim_{u,v}|}$

*   Utilizaremos los ratings de aquellos usuarios U={A,D} que sí han visto Marte
*   Necesitaremos los rating medios de C y de los usuarios U={A,D}
*   Necesitamos la similitud entre cada usuario de U={A,D} y el usuario C (utilizaremos el coeficiente de correlación de Pearson)

---


## Page 14

# Ejemplo: FC basado en usuarios

<table>
  <thead>
    <tr>
      <th></th>
      <th>Rating a Marte</th>
      <th>Rating medio</th>
      <th>Similitud con C</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>A</td>
      <td>5</td>
      <td>(4+3+5)/3=4</td>
      <td>0.780869</td>
    </tr>
    <tr>
      <td>D</td>
      <td>3</td>
      <td>(2+4+3)/3=3</td>
      <td>-0.514496</td>
    </tr>
    <tr>
      <td>C</td>
      <td></td>
      <td>(5+4+2)/3=3.67</td>
      <td></td>
    </tr>
  </tbody>
</table>

$\hat{r}_{C,Marte} = 3.67 + \frac{(5-4)0.780869 - (3-3)0.514496}{0.780869 + 0.514496} = 4.269484$

---


## Page 15

# Filtro colaborativo basado en productos

La hipótesis de un filtro colaborativo **basado en productos** es que:

*   Si dos productos han sido valorados de forma similar por los usuarios, serán valorados igual por otro usuario

Los FC basados en productos requieren:
1.  Una matriz de utilidad (e.g. ratings)
2.  Una definición de similitud entre productos
3.  Una definición de vecindad (subconjunto más próximo a un producto)
4.  Una regla para predecir el rating en base al conjunto de productos de la vecindad

---


## Page 16

# Definición de similitud entre productos

&lt;img&gt;A diagram illustrating the concept of product similarity based on user ratings. The diagram features two main axes: "Users" (vertical) and "Items" (horizontal). Users are represented by numbered boxes (1, 2, ..., u, v, n) along the left side, while items are represented by numbered boxes (1, 2, ..., i, j, m) along the top.

The central part of the diagram shows a large grid where each cell represents a rating. For example, cells r1,i and r2,j represent the ratings of item i by users 1 and 2 respectively. Some cells contain red outlines, indicating specific ratings that are highlighted:
*   ru,i
*   ru,j
*   rv,i
*   rv,j
*   rn,i
*   rn,j

Green arrows point to these highlighted cells, with labels underneath them:
*   Ratings de todo los usuarios que han valorado ambos productos (Ratings of all users who have rated both products)&lt;/img&gt;

---


## Page 17

# Definición de similitud entre productos

(1) Similitud del coseno (-1,1)

sim<sub>i,j</sub> = Σ<sub>u∈U</sub> r<sub>u,i</sub>r<sub>u,j</sub> / √(Σ<sub>u∈U</sub> r<sup>2</sup><sub>u,i</sub>) * √(Σ<sub>u∈U</sub> r<sup>2</sup><sub>u,j</sub>)

(2) Coeficiente correlación de Pearson (-1,1)

sim<sub>i,j</sub> = Σ<sub>u∈U</sub> (r<sub>u,i</sub> - r̄<sub>i</sub>)(r<sub>u,j</sub> - r̄<sub>j</sub>) / √(Σ<sub>u∈U</sub> (r<sub>u,i</sub> - r̄<sub>i</sub>)<sup>2</sup>) * √(Σ<sub>u∈U</sub> (r<sub>u,j</sub> - r̄<sub>j</sub>)<sup>2</sup>)

U usuarios que han evaluado i, j

---


## Page 18

# Regla para estimar un rating

Filtro colaborativo basado en productos (item-based):

$$\hat{r}_{u,i} = \frac{\sum_{j \in I} r_{u,j} sim_{i,j}}{\sum_{j \in I} |sim_{i,j}|}$$

I productos* evaluados por u

Media ponderada de los ratings del usuario u a los productos que evaluó (siendo los pesos la similitud de los productos)

* Se suele hacer sobre un subconjunto de productos: por ejemplo los k vecinos más próximos

---


## Page 19

# Ejemplo

Matriz de utilidad:

<table>
  <thead>
    <tr>
      <th></th>
      <th>Star Wars VII</th>
      <th>Batman v Superman</th>
      <th>Ocho apellidos vascos</th>
      <th>Marte</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>UserA</td>
      <td>4</td>
      <td>NaN</td>
      <td>3</td>
      <td>5</td>
    </tr>
    <tr>
      <td>UserB</td>
      <td>NaN</td>
      <td>5</td>
      <td>4</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>UserC</td>
      <td>5</td>
      <td>4</td>
      <td>2</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>UserD</td>
      <td>2</td>
      <td>4</td>
      <td>NaN</td>
      <td>3</td>
    </tr>
    <tr>
      <td>UserE</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>NaN</td>
    </tr>
  </tbody>
</table>

Queremos obtener la predicción del usuario C a la película Marte

---


## Page 20

# Ejemplo: FC basado en productos

$\hat{r}_{u,i} = \frac{\sum_{j\in I} r_{u,j} sim_{i,j}}{\sum_{j\in I} |sim_{i,j}|}$

*   Utilizaremos los ratings del usuario C a aquellas películas que vio I={Star Wars VII,Batman v Superman,Ocho apellidos vascos}
*   Necesitamos la similitud entre cada película vista por C y Marte (utilizaremos el coeficiente de correlación de Pearson)

---


## Page 21

# Ejemplo: FC basado en productos

<table>
  <thead>
    <tr>
      <th></th>
      <th>Star Wars VII</th>
      <th>Batman v Superman</th>
      <th>Ocho apellidos vascos</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rating de C</td>
      <td>5</td>
      <td>4</td>
      <td>2</td>
    </tr>
    <tr>
      <td>Similitud a Marte</td>
      <td>0.8944</td>
      <td>1</td>
      <td>-1</td>
    </tr>
  </tbody>
</table>

*   Podemos considerar todas las películas
    $$\hat{r}_{C,Marte} = \frac{(5)0.8944 + (4)1 + (2)(-1)}{0.8944 + 1 + 1} = 2.2360$$
*   Podemos considerar un subconjunto de ellas, por ejemplo las 2 más próximas {Star Wars VII,Batman v Superman}
    $$\hat{r}_{C,Marte} = \frac{(5)0.8944 + (4)1}{0.8944 + 1} = 4.4721$$

---


## Page 22

# Problemas de filtros basados en memoria

Los Filtros Colaborativos basados en productos son muy utilizados (e.g. Amazon patent)

Pero presentan algunos inconvenientes comunes a otros sistemas de recomendación (Su & Khoshgoftaar, 2009):

*   Muchos sistemas tienen datos dispersos lo que dificulta encontrar usuarios o productos similares (sobre los que basar una recomendación).
*   Problema de “cold start”: dificultad de hacer recomendaciones a usuarios y/o productos nuevos (para los que no se dispone de información)
*   Problemas de escalabilidad con el aumento del número de usuarios y/o productos
*   Los sinónimos (dos o más referencias diferentes al mismo producto que sin embargo el filtro trata como productos distintos) introducen ruido en las recomendaciones
*   “Gray sheep” y “black sheep”, cuando algunos usuarios tienen un patrón alejado del resto (o incluso único) el filtro colaborativo no hace buenas recomendaciones

---


## Page 23

<header>Referencias</header>

- Ekstrand, M. D., Riedl, J. T., & Konstan, J. A. (2011). Collaborative filtering recommender systems. Foundations and Trends in Human-Computer Interaction, 4(2), 81-173.
- Collaborative recommendations using item-to-item similarity mappings (Amazon patent)