| Cantidad | |
|---|---|
| Usuarios distintos | 943 |
| Películas distintas | 1682 |
Recomendación de Películas con Modelos Jerárquicos. 2025-II
Estadistica Bayesiana
Objetivo General
Desarrollar un modelo bayesiano jerárquico que permita predecir la calificación que un usuario daría a una película no vista utilizando la información disponible en el conjunto de datos MovieLens 100k incluyendo tanto las valoraciones previas como los atributos demográficos de los usuarios y películas.
Objetivos Especificos
Formular un modelo bayesiano jerárquico que permita capturar la heterogeneidad entre usuarios y/o películas en la asignación de calificaciones.
Estimar los parámetros del modelo utilizando técnicas bayesianas, incorporando distribuciones a priori adecuadas y computando la distribución posterior de los parámetros de interés.
Implementar intervalos de credibilidad bayesianos para las predicciones, con el fin de cuantificar la incertidumbre asociada a la calificación esperada que un usuario daría a una película no vista.
Validar el desempeño del modelo predictivo, comparando las calificaciones estimadas con datos reales mediante métricas de error (como RMSE o MAE) y el análisis gráfico.
Descripción de los datos
1. Tabla “Calificaciones”
Los datos utilizados en este proyecto provienen del conjunto MovieLens 100k. Este dataset fue publicado en abril de 1998 por el GroupLens Research Project de la Universidad de Minnesota. Contiene 100.000 calificaciones (en una escala de 1 a 5) realizadas por 943 usuarios sobre 1.682 películas. Cada usuario ha calificado al menos 20 películas. Además, se incluye información demográfica básica de los usuarios, como edad, género, ocupación y código postal. Cabe destacar que todos los datos corresponden a usuarios ubicados en Estados Unidos.
Estadisticas Descriptivas
Validacion de los datos
Gráfico de frecuencia absoluta de calificaciones en MovieLens
Tabla de resumen de calificaciones
| Estadística | Usuarios | Películas |
|---|---|---|
| Máximo | 737.00 | 583.00 |
| Mínimo | 20.00 | 1.00 |
| Promedio | 106.04 | 59.45 |
¿Qué significa este gráfico?
Un valor en \(\text{Calificaciones por Usuario}\ x=20\) con \(\text{Número de Usuarios}\ y=10 \enspace \Longrightarrow\) significa que \(10\) usuarios calificaron exactamente \(20\) películas.
Un valor en \(\text{Calificaciones por Usuario}\ x=100\) con \(\text{Número de Usuarios}=5 \enspace \Longrightarrow\) significa que 5 usuarios calificaron exactamente 100 películas.
2. Tabla “películas”
Aquí se presenta un resumen preliminar de la tabla peliculas. Dado que contiene 19 géneros cinematográficos, se muestra una vista parcial para evitar saturar la visualización.
| ID | Título | Fecha de Estreno | IMDb URL | Comedia | Drama | Acción | Suspenso |
|---|---|---|---|---|---|---|---|
| 1 | Toy Story (1995) | 01-Jan-1995 | http://us.imdb.com/M/title-exact?Toy%20Story%20(1995) | 1 | 0 | 0 | 0 |
| 2 | GoldenEye (1995) | 01-Jan-1995 | http://us.imdb.com/M/title-exact?GoldenEye%20(1995) | 0 | 0 | 1 | 1 |
| 3 | Four Rooms (1995) | 01-Jan-1995 | http://us.imdb.com/M/title-exact?Four%20Rooms%20(1995) | 0 | 0 | 0 | 1 |
| 4 | Get Shorty (1995) | 01-Jan-1995 | http://us.imdb.com/M/title-exact?Get%20Shorty%20(1995) | 1 | 1 | 1 | 0 |
| 5 | Copycat (1995) | 01-Jan-1995 | http://us.imdb.com/M/title-exact?Copycat%20(1995) | 0 | 1 | 0 | 1 |
| 6 | Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) | 01-Jan-1995 | http://us.imdb.com/Title?Yao+a+yao+yao+dao+waipo+qiao+(1995) | 0 | 1 | 0 | 0 |
3. Tabla “Usuarios”
Vista preliminar de Usuarios
| ID Usuario | Edad | Género | Ocupación | Código Postal |
|---|---|---|---|---|
| 1 | 24 | M | technician | 85711 |
| 2 | 53 | F | other | 94043 |
| 3 | 23 | M | writer | 32067 |
| 4 | 24 | M | technician | 43537 |
| 5 | 33 | F | other | 15213 |
| 6 | 42 | M | executive | 98101 |
Construcción de la distribución posterior
1. Proponemos una distribución a priori razonable
Vamos a suponer que nuestro parámetro de interés \(\mu\) sigue una distribución normal como sigue:
\[ \mu \sim \mathcal{N}(\mu_0, \tau_0^2) \]
Para los cuáles elegimos los siguientes valores para los hiperparámetros \(\mu\) y \(\tau_0\):
\[ \mu_0 = 3 \]
\[ \tau_{o} = 2.5 \]
Basados en algún conocimiento previo del experimento.
2. Obtención del resumen de los datos
Por otro lado también calculamos, el tamaño de muestra, media y varianza de los datos observados:
\[ n= 100\,000 \]
\[ \bar{y} = \frac{1}{n}\sum_{i=1}^{n}y_i \approx 3.5299 \]
\[ \sigma^2 = \frac{1}{n-1}\sum_{i=1}^{n}(y_i-\bar{y})^2 \approx 1.2671 \]
3. Obtención de la distribución muestral (Verosimilitud)
Bajo el supuesto de que los datos dado nuestro priori siguen la siguiente distribución:
\[ y_i \mid \mu \;\overset{\text{iid}}{\sim}\; \mathcal{N}(\mu,\;\sigma^2) \]
Y también considerando las siguientes cantidades como fijas:
\[ \sigma^2 = 1.2671, \quad n = 100\,000 \]
Obtenemos un modelo Normal-Normal con \(\mu\) desconocido y \(\sigma^2\) conocida. Con lo anterior en cuenta calculamos la verosimilitud como sigue:
\[\begin{align} p(\mathbf y \mid \mu) & = \prod_{i=1}^n\frac{1}{\sqrt{2\pi\,\sigma^2}}\exp\!\Bigl[-\tfrac{1}{2\sigma^2}(y_i - \mu)^2\Bigr] \\ & = (2\pi\sigma^2)^{-\frac{n}{2}} \exp\!\Bigl[-\tfrac{1}{2\sigma^2}\sum_{i=1}^n (y_i - \mu)^2\Bigr] \end{align}\]
Por lo tanto:
\[ p(y \mid \mu) \propto \exp\!\Bigl[-\tfrac{1}{2\sigma^2}\sum_{i=1}^n (y_i - \mu)^2\Bigr] \]
4. Obtención de la distribución a posteriori mediante el teorema de Bayes
Por el teorema de Bayes sabemos que:
\[ p(\mu \mid y) \propto p(y \mid \mu)p(\mu) \]
Reemplazando \(p(y \mid \mu)\) y \(p(\mu)\) en la expresión anterior tenemos que:
\[ p(\mu\mid y)\;\propto\;\exp\!\Bigl[-\tfrac{1}{2\sigma^2}\sum_{i=1}^n(y_i-\mu)^2\Bigr]\;\times\;\exp\!\Bigl[-\tfrac{1}{2\tau_0^2}(\mu-\mu_0)^2\Bigr] \]
\[ \quad=\;\exp\!\Bigl\{-\tfrac{1}{2}\bigl[\tfrac{1}{\sigma^2}\sum_{i=1}^n(y_i-\mu)^2\;+\;\tfrac{1}{\tau_0^2}(\mu-\mu_0)^2\bigr]\Bigr\} \]
Desarrollando el argumento de la función exponencial, expandimos el primer cuadrado:
\[ \sum_{i=1}^n(y_i-\mu)^2=\sum_{i=1}^n\bigl(y_i^2 - 2y_i\mu + \mu^2\bigr)=\sum_{i=1}^n y_i^2 \;-\; 2\mu\sum_{i=1}^n y_i \;+\; n\,\mu^2 \]
Expandimos el segundo cuadrado:
\[ (\mu-\mu_0)^2=\mu^2 - 2\mu\mu_0 + \mu_0^2 \]
Omitiendo términos constantes que no dependen de \(\mu\) ni de \(\mu_0.\) Tenemos que:
\[\begin{align} \Bigl\{-\tfrac{1}{2}\bigl[\tfrac{1}{\sigma^2}\sum_{i=1}^n(y_i-\mu)^2\;+\;\tfrac{1}{\tau_0^2}(\mu-\mu_0)^2\bigr]\Bigr\}=-\tfrac{1}{2}\Bigl[\tfrac{n\,\mu^2 - 2\mu\sum_i y_i}{\sigma^2}\;+\;\tfrac{\mu^2 - 2\mu\mu_0}{\tau_0^2}\Bigr] \end{align}\]
Factorizando en terminos de \(\mu^2\) y de \(\mu\) la expresión anterior se puede ver que:
\[\begin{align} -\tfrac{1}{2}\Bigl[\tfrac{n\,\mu^2 - 2\mu\sum_i y_i}{\sigma^2}\;+\;\tfrac{\mu^2 - 2\mu\mu_0}{\tau_0^2}\Bigr]=-\tfrac{1}{2}\Bigl[\mu^2\Bigl(\tfrac{n}{\sigma^2} + \tfrac{1}{\tau_0^2}\Bigr)\;-\;2\mu\Bigl(\tfrac{\sum_i y_i}{\sigma^2} + \tfrac{\mu_0}{\tau_0^2}\Bigr)\Bigr] \end{align}\]
Para facilitar la simplificación definimos:
\[ A = \frac{n}{\sigma^2} + \frac{1}{\tau_0^2},\qquad B = \frac{\sum_i y_i}{\sigma^2} + \frac{\mu_0}{\tau_0^2}= \frac{n\,\bar y}{\sigma^2} + \frac{\mu_0}{\tau_0^2} \]
Por lo que el exponente tendrá la forma:
\[ -\tfrac{1}{2}\bigl[A\,\mu^2 - 2B\,\mu\bigr] \]
Ahora es evidente que se puede completar el cuadrado:
\[\begin{align} A\,\mu^2 - 2B\,\mu= A\bigl[\mu^2 - 2\tfrac{B}{A}\mu\bigr]= A\bigl[\mu^2 - 2\tfrac{B}{A}\mu + (\tfrac{B}{A})^2 -(\tfrac{B}{A})^2\bigr]= A\Bigl[(\mu-\tfrac{B}{A})^2 - (\tfrac{B}{A})^2\Bigr] \end{align}\]
Por lo finalmente se llega al resultado:
\[ -\tfrac{1}{2}\bigl[A\,\mu^2 - 2B\,\mu\bigr]= -\tfrac{1}{2}A\Bigl[(\mu-\tfrac{B}{A})^2 + \underbrace{(\tfrac{B}{A})^2}_{\text{constante}}\Bigl] \]
De nuevo podemos extraer el término constante de la exponencial y nos queda:
\[ p(\mu\!\mid\!y)\;\propto\;\exp\!\Bigl[-\tfrac{A}{2}\Bigl(\mu-\tfrac{B}{A}\Bigr)^2\Bigr]\;=\exp\!\left[ -\frac12\biggl(\frac{\mu-\tfrac{B}{A}}{1/\sqrt{A}}\biggr)^{\!2}\right] \]
Por lo que finalmente, observando el núcleo resultante, \(p(\mu \mid y)\) tiene la siguiente distribución:
\[ \mu \mid y \sim \mathcal{N}\Bigr(\tfrac{B}{A}, \tfrac{1}{A}\Bigl) \]
Reemplazando \(A\) y \(B\) tenemos que la distribución es:
\[ \boxed{\mu\mid y\sim\mathcal{N}\!\Bigl(\underbrace{\tfrac{n\,\bar y/\sigma^2 + \mu_0/\tau_0^2}{\;n/\sigma^2 + 1/\tau_0^2\;}}_{\frac{B}{A}},\;\underbrace{\tfrac{1}{n/\sigma^2 + 1/\tau_0^2}}_{\frac{1}{A}}\Bigr)} \]
Que sería la forma explícita de la distribución teórica del modelo Normal-Normal planteado.
5. Cálculo numérico de los parámetros de \(\enspace \mu \mid y\)
Para facilitar el cálculo consideraremos la forma \(\mu \mid y \sim \mathcal{N}\Bigr(\tfrac{B}{A}, \tfrac{1}{A}\Bigl)\) para luego calcular \(A\) y \(B\) y reemplazar, entonces dada la siguiente información:
\[ n = 100\,000,\quad\bar y \approx 3.5299,\quad\sigma^2 \approx 1.2671,\quad\mu_0 = 3,\quad\tau_0^2 = (2.5)^2 = 6.25 \]
Entonces los coeficientes \(A\) y \(B\) son:
\[\begin{align} A & = \frac{n}{\sigma^2} + \frac{1}{\tau_0^2} = \frac{100\,000}{1.2671} + \frac{1}{6.25} \approx 78\,920.53 \\ B & = \frac{n\,\bar y}{\sigma^2} + \frac{\mu_0}{\tau_0^2} = \frac{100\,000 \times 3.5299}{1.2671} + \frac{3}{6.25} \approx 278\,581.49 \end{align}\]
Por la tanto los parámetros actualizados son:
\[ \frac{1}{A} = \frac{1}{78\,920.53} \approx 1.2671\times 10^{-5} \Longrightarrow \boxed{\frac{1}{\sqrt{A}} = \frac{1}{78\,920.53} \approx 0.00356} \]
\[ \boxed{\frac{B}{A} = \frac{278\,581.49}{78\,920.53}\approx 3.5299} \]
Finalmente:
\[ \boxed{\mu\mid y \;\sim\; \mathcal{N}\bigl(3.5299,\;0.00356^2\bigr)} \]
Cálculo de distribución Posterior
Análisis de sensibilidad
Dado que el tamaño de muestra es muy grande \((n=100{\,}000)\), la distribución a priori tiene poca influencia sobre la distribución posterior. En consecuencia, los valores específicos de los parámetros de la distribución a priori no afectan de manera significativa el resultado final.