具有浓度参数超先验分布的多项-狄利克雷模型

机器算法验证 分类数据 多项分布 狄利克雷分布 分层贝叶斯 狄利克雷过程
2022-02-13 11:06:30

我将尝试尽可能笼统地描述手头的问题。我将观察建模为具有参数概率向量 theta的分类分布。

然后,我假设参数向量 theta 遵循带有参数的狄利克雷先验分布。α1,α2,,αk

那么是否可以对参数施加超先验分布?它是否必须是多元分布,例如分类分布和狄利克雷分布?在我看来,阿尔法总是积极的,所以伽马超先验应该起作用。α1,α2,,αk

不确定是否有人尝试过拟合这种(可能)过度参数化的模型,但我认为 alpha 不应该是固定的,而是来自 gamma 分布似乎是合理的。

请尝试为我提供一些参考资料,以及我如何在实践中尝试这种方法的见解。

3个回答

我不认为这是一个“过度参数化”的模型。我会争辩说,通过在 Dirichlet 参数上放置先验,您对任何特定结果的承诺都会减少。特别是,您可能知道,对于对称狄利克雷分布(即),设置为稀疏多项式分布提供更多先验概率,而为平滑多项分布。α1=α2=...αKα<1α>1

在对稀疏或密集多项分布没有强烈期望的情况下,在 Dirichlet 分布上放置一个超先验可以让您的模型在它们之间进行选择具有更大的灵活性。

我最初从这篇论文中得到了这样做的想法。他们使用的超先验与您的建议略有不同。他们从狄利克雷中采样一个概率向量,然后通过从指数(或伽马)中抽取来缩放它。所以模型是

βDirichlet(1)λExponential()θDirichlet(βλ)

额外的狄利克雷只是为了避免强加对称性。

我还看到人们在具有多项发射分布的隐藏马尔可夫模型的上下文中仅使用 Gamma 超先验作为 Dirichlet,但我似乎找不到参考。此外,似乎我在主题模型中遇到过类似的超级。

为了演示这个超先验问题的解决方案,我在 PyMC3 中实现了一个分层 gamma-Dirichlet-multinomial 模型。根据Ted Dunning 的博客文章指定和采样 Dirichlet 的 gamma 先验。

我实现的模型可以在这个Gist中找到,但也在下面描述:

这是用于电影评级的贝叶斯分层(池化)模型。每部电影都可以按从零到五的等级进行评分。每部电影都被评为数次。我们希望为每部电影找到一个平滑的评分分布。

我们将从数据中学习关于电影评分的顶级先验分布(超先验)。然后,每部电影都会有自己的先验,由这个顶级先验平滑。另一种思考方式是,每部电影的评级先验将缩小到组级或合并分布。

如果一部电影的评分分布不典型,这种方法会将评分缩小到更符合预期的程度。此外,这种学习的先验对于引导评分很少的电影很有用,可以让它们与评分很多的电影进行有意义的比较。

模型如下:

γk=1...KGamma(α,β)

θm=1...MDirichletM(cγ1,...,cγK)

zm=1...M,n=1...NmCategoricalM(θm)

在哪里:

  • K数量的电影分级(例如意味着分级 0, ..., 5)K=6
  • M被评分的电影数量
  • Nm的评分数m
  • α=1/K为了使 gamma rvs 的集合充当指数系数
  • β指数顶级先验的
  • c浓度参数,指示顶级先验的强度
  • γk的顶级先验k
  • θm电影级别先验评级级别(多变量,维度 =K
  • zmn电影评分nm

这是一个直接的贝叶斯共轭先验建模。Beta-Binomial 模型的自然扩展。这方面的一个很好的资源可能来自这本书并且后验也是狄利克雷,因此从狄利克雷模拟将给出必要的总结