Para demostrar una solución a este problema hiperprior, implementé un modelo jerárquico gamma-Dirichlet-multinomial en PyMC3. La gamma anterior para el Dirichlet se especifica y se muestrea según la publicación de blog de Ted Dunning .
El modelo que implementé se puede encontrar en este Gist pero también se describe a continuación:
Este es un modelo bayesiano jerárquico (agrupación) para clasificaciones de películas. Cada película se puede clasificar en una escala de cero a cinco. Cada película se clasifica varias veces. Queremos encontrar una distribución uniforme de calificaciones para cada película.
A partir de los datos, aprenderemos una distribución previa de nivel superior (hiperprior) en las clasificaciones de películas. Cada película tendrá su propio previo que se suavizará con este previo de nivel superior. Otra forma de pensar en esto es que la clasificación previa para cada película se reducirá a la distribución grupal o grupal.
Si una película tiene una distribución de calificación atípica, este enfoque reducirá las calificaciones a algo más en línea con lo que se espera. Además, este conocimiento previo puede ser útil para arrancar películas con pocas clasificaciones para permitir que se comparen significativamente con películas con muchas clasificaciones.
El modelo es el siguiente:
γk=1...K∼Gamma(α,β)
θm=1...M∼DirichletM(cγ1,...,cγK)
zm=1...M,n=1...Nm∼CategoricalM(θm)
dónde:
- K = 6KNúmero de niveles de calificación de películas (por ejemplo, implica calificaciones 0, ..., 5)K=6
- M número de películas clasificadas
- mNm número de clasificaciones para la películam
- α=1/K para que la colección de gamma rvs actúe como un coeficiente exponencial
- β parámetro de tasa para el nivel superior exponencial anterior
- c parámetro de concentración que dicta la fuerza del nivel superior previo
- kγk nivel superior anterior para el nivel de calificaciónk
- Kθm nivel de película anterior para niveles de calificación (multivariante con dimensión = )K
- n mzmnCalificación para la películanm