## Page 1 # Sistemas de recomendación ## Resumen Gestión de la Información Grado en Ingeniería Informática Universidad de Burgos José Ignacio Santos --- ## Page 2 # ¿Por qué recomendar productos? Muchas empresas e-commerce disponen de un catálogo de productos inmenso y necesitan proponer (filtrar) aquellos productos que a priori pueden interesar al cliente. Cuanto más se acerquen a sus preferencias mayores probabilidades de compra/? <img>amazon logo</img> <img>Netflix logo</img> <img>TikTok logo</img> <img>Spotify logo</img> <img>LinkedIn logo</img> <img>YouTube logo</img> <img>Facebook logo</img> --- ## Page 3 # ¿Cómo recomendar? * Recomendar un item a un usuario * Estimar el rating (preferencia) del usuario al item * Filtros basados en contenidos * Filtros colaborativos * Context-aware recommenders * Predecir el siguiente item que el usuario va a consumir * Modelos secuenciales (RNN, transformers) * Reinforcement Learning recommenders * ... * Bob Dylan>Joan Baez>Simon & Garfunkel>? --- ## Page 4 Filtro basado en contenidos Content-Based Filtering (CBF) --- ## Page 5 # Filtros basados en contenidos (CBF) Supongamos un sistema de recomendación de películas. ¿Cómo recomendar? Predecimos el rating o preferencia del usuario a un conjunto de películas y le proponemos las películas con mayor valoración Un sistema de recomendación se preguntaría ¿qué rating pondría yo 😊 a la película IT? <img>IT movie poster with a child holding a red balloon</img> <img>Orange smiley face with a question mark above its head</img> --- ## Page 6 # Filtros basados en contenidos (CBF) 1) Supongo que existe una función que devuelve mi rating a la película f😊(IT) = y_IT😊 (rating) 2) ¿Cómo construyo esta función? Supongo que conozco un conjunto de características de las películas 🎬: romance, acción, ciencia ficción, humor, ... Asumo una función lineal f😊(🎥)=θ😊₀ + θ😊romance (romance🎥) + θ😊acción (acción🎥) + θ😊ciencia fic. (ciencia fic.🎥) + ... Los parámetros representan θ😊 mis preferencias hacia cada característica Recojo datos pasados de películas valoradas por mi y estimo los parámetros θ😊 (regresión) --- ## Page 7 # Filtros basados en contenidos (CBF) Datos pasados de mis valoraciones de otras películas
Película Romance Acción Ciencia ficción Humor Duración (min) Año País:EEUU Rating Y_k😊
Love Actually 0.9 0 0 0.7 135 2003 1 3
Matrix 0 0.8 1 0.2 136 1999 1 4
Django Unchained 0.2 1 0 0.4 165 2012 1 4
Amélie 1 0 0 0.8 120 2001 0 2
Estimar θ😊 = encontrar los valores θ😊 que minimizan la función de costes J(θ😊) = Σ(y_k😊 - f😊(x_k))² --- ## Page 8 # Filtros basados en contenidos (CBF) 1) Supongo que existe una función que devuelve mi rating a la película f😊(IT) = y_IT😊 (rating) 2) ¿Cómo construyo esta función? Supongo que conozco un conjunto de características de las películas 🎬: romance, acción, ciencia ficción, humor, ... Asumo una función lineal f😊(🎬)=θ😊₀ + θ😊romance (romance🎬) + θ😊acción (acción🎬) + θ😊ciencia fic. (ciencia fic.🎬) + ... Los parámetros representan θ😊 mis preferencias hacia cada característica Recojo datos pasados de películas valoradas por mi y estimo los parámetros θ😊 (regresión) 3) Calculo la predicción de rating para la película IT conocidas sus características f😊(IT)=θ😊₀ + θ😊romance (romance_IT) + θ😊acción (acción_IT) + θ😊ciencia fic. (ciencia fic_IT) + ... --- ## Page 9 # Filtros basados en contenidos (CBF) La principal desventaja del CBF es que se necesita definir y medir las características de todas las películas ¿Podemos hacer algo parecido pero sin tener que proponer y medir estas características? Sí -> Filtro Colaborativo --- ## Page 10 Filtro colaborativos --- ## Page 11 # Filtros Colaborativos Y = [ y <img>movie reel icon</img> <img>smiling face with heart eyes emoji</img> ] Modelos que utilizan exclusivamente la matriz de ratings de los usuarios El adjetivo colaborativo se debe a que aprendemos de los datos que los propios usuarios generan al evaluar, puntuar o interactuar con los ítems, es decir, colaboran colectivamente en la construcción de la matriz de utilidad o matriz de ratings No necesitamos conocer las características de los items (¡VENTAJA!) Dos aproximaciones: basados en modelos y basados en memoria --- ## Page 12 Filtro colaborativos: basados en modelos --- ## Page 13 # Filtros Colaborativos basados en modelos Descomponemos la matriz de ratings Y como producto de dos matrices X y Θ que capturan las características latentes de ítems (X) y de usuarios Θ Y = XΘᵗ Esto se llama problema de factorización matricial de bajo rango <img>A diagram showing three matrices. The first matrix on the left is labeled "Items" with dimensions m x u. It has a red arrow pointing to it. The second matrix in the middle is labeled "Users" with dimensions k x u. It has a red arrow pointing to it. The third matrix on the right is labeled "Y" with dimensions m x k. It has a red arrow pointing to it. Below these matrices, the equation yᵢⱼ = θ₁(X₁) + θ₂(X₂) + ... + θₖ(Xₖ) is written.</img> k es un parámetro del modelo y representa el tamaño del espacio de características latentes X y Θ son matrices que representan las películas (filas) y los usuarios (columnas) en dicho espacio. Podemos interpretarlas como matrices de características y de preferencias, aunque sus valores no tienen el significado que damos en el caso del CBF --- ## Page 14 # Filtros Colaborativos basados en modelos En los filtros colaborativos basados en modelos estimamos los parámetros (matrices X y Θ) minimizando una función de costes basada en MSE (enriquecida con los términos de regularización que evitan el overfitting) J(θ) = Σ(y_ij - x_i θ_j^T)^2 + λΣ(x_ik)^2 + λΣ(θ_ik)^2 La función de costes es continua y derivable por lo que podemos utilizar técnicas de optimización basadas en el descenso del gradiente --- ## Page 15 # Filtros Colaborativos basados en modelos Existe una **variante** del problema de factorización de bajo rango propuesta por **Koren, Bell y Volinsky (2009)** en el contexto del Netflix Prize (2008–2009) Incluye sesgos (biases). Cada predicción no es solo $X_i \cdot \theta_j^T$ sino que además sumamos un sesgo global $\mu$ (media de todos los ratings), un sesgo por usuario $b_j$ y un sesgo por ítem $b_i$ $y_{ij} = \mu + b_j + b_i + X_i \cdot \theta_j^T$ 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 --- ## Page 16 Filtro colaborativos: basados en memoria --- ## Page 17 # Filtros Colaborativos basados en memoria No ajustamos ningún modelo, solo vamos a calcular similitudes entre usuarios o productos que utilizamos para estimar el rating Por ejemplo, para la similitud entre usuarios:
Items
Usuarios U₁ U₂ U₃ U₄ U₅
U₁
U₂ 1 3 4 5
U₃
U₄ 2 4 3 5 4
U₅
U₂ = [3, 4, 5] U₄ = [4, 5, 4] Sim₂,₄ = Cos(U₂, U₄) --- ## Page 18 # Filtros Colaborativos basados en memoria * y * yi,j = Σk wk yik * Similitud entre usuario k y el usuario j * Basado en usuarios: media ponderada de las evaluaciones de otros usuarios al item * y * yi,j = Σk wk ykj * Similitud entre item k y el item i * Basado en productos: media ponderada de los items ya evaluados por el usuario Una vez calculadas las similitudes, calculamos un rating ...