具有浓度参数超先验分布的多项-狄利克雷模型
我不认为这是一个“过度参数化”的模型。我会争辩说,通过在 Dirichlet 参数上放置先验,您对任何特定结果的承诺都会减少。特别是,您可能知道,对于对称狄利克雷分布(即),设置为稀疏多项式分布提供更多先验概率,而为平滑多项分布。
在对稀疏或密集多项分布没有强烈期望的情况下,在 Dirichlet 分布上放置一个超先验可以让您的模型在它们之间进行选择具有更大的灵活性。
我最初从这篇论文中得到了这样做的想法。他们使用的超先验与您的建议略有不同。他们从狄利克雷中采样一个概率向量,然后通过从指数(或伽马)中抽取来缩放它。所以模型是
额外的狄利克雷只是为了避免强加对称性。
我还看到人们在具有多项发射分布的隐藏马尔可夫模型的上下文中仅使用 Gamma 超先验作为 Dirichlet,但我似乎找不到参考。此外,似乎我在主题模型中遇到过类似的超级。
为了演示这个超先验问题的解决方案,我在 PyMC3 中实现了一个分层 gamma-Dirichlet-multinomial 模型。根据Ted Dunning 的博客文章指定和采样 Dirichlet 的 gamma 先验。
我实现的模型可以在这个Gist中找到,但也在下面描述:
这是用于电影评级的贝叶斯分层(池化)模型。每部电影都可以按从零到五的等级进行评分。每部电影都被评为数次。我们希望为每部电影找到一个平滑的评分分布。
我们将从数据中学习关于电影评分的顶级先验分布(超先验)。然后,每部电影都会有自己的先验,由这个顶级先验平滑。另一种思考方式是,每部电影的评级先验将缩小到组级或合并分布。
如果一部电影的评分分布不典型,这种方法会将评分缩小到更符合预期的程度。此外,这种学习的先验对于引导评分很少的电影很有用,可以让它们与评分很多的电影进行有意义的比较。
模型如下:
在哪里:
- 数量的电影分级(例如意味着分级 0, ..., 5)
- 被评分的电影数量
- 的评分数
- 为了使 gamma rvs 的集合充当指数系数
- 指数顶级先验的
- 浓度参数,指示顶级先验的强度
- 的顶级先验
- 电影级别先验评级级别(多变量,维度 =)
- 电影评分
这是一个直接的贝叶斯共轭先验建模。Beta-Binomial 模型的自然扩展。这方面的一个很好的资源可能来自这本书。并且后验也是狄利克雷,因此从狄利克雷模拟将给出必要的总结