本博客文章是Dirichlet流程混合模型聚类系列的第四部分。在以前的文章中,我们讨论了有限Dirichlet混合模型,并且把它们的模型的极限用于无限k个集群,这导致我们引入了Dirichlet过程。正如我们所看到的,我们的目标是一开始就建立一个不需要k个集群数量的Dirichlet模型。在介绍Dirichlet过程的不同表示之后,现在是实际使用DPs构建一个无限混合模型的时候了,它使我们能够执行聚类。本文的目标是定义Dirichlet过程混合模型,并讨论中餐馆过程和吉布斯抽样的使用。如果您还没有阅读以前的文章,强烈建议您阅读它们,因为这个主题有点理论性,需要对模型的构建有很好的理解。
更新:Datumbox机器学习框架现在是开源的,可以免费下载。查看com.datumbox.framework.machinelearning.clustering包,查看Java中Dirichlet 过程混合模型的实现。
使用Dirichlet过程可以使我们得到一个混合模型,其中有无穷的分量,可以认为这个分量的有穷模型的极限为k到无穷大。假设我们有以下模型:
其中G被定义为
而
是下式的缩写
其中如果
delta函数取1,其他情况下取0。θi是从G采样的聚类参数。聚类参数θi构成分布F,F用来产生xi 观察数据。最后,我们可以定义一个密度分布
,它是我们的混合分布(可数无限混合物),其中包含混合比例
和混合成分
。
上面我们可以看到DPMM的等价图形模型。G0是DP的基本分布,它通常被选择为在我们的生成分布F之前的共轭,以使计算更容易,并利用吸引人的数学性质。α是Dirichlet过程的标量超参数,并影响我们将得到的聚类数量。α的值越大,集群越多; α越小,集群越少。我们应该注意到,α的值表示G0的可信任力度。大的α值表示大部分样本将是不同的,并且将值集中在G0上。G是从DP采样的Θ参数空间上的随机分布,DP分配各个参数的概率是随机的。该θ是被从G分布中抽取出来的,且包含集群参数的参数向量,F分布由θi参数化的,且xi是由生成分布F产生的数据点。
值得注意的是,θi是Θ参数空间的元素,它们“配置”我们的集群。它们也可以被看作是对xi潜在变量,可以告诉我们xi是从哪个集群来的,以及这个该部件的参数。因此,对于我们观察到的每一个xi,我们从G分布中绘制一个θi。随着每一个绘制,分布会随着之前的选择而开始变化。正如我们在Blackwell-MacQueen urn方案中所看到的那样,G分布可以被整合出来,而我们未来的θi选择只依赖于G0:
根据以前的公式估计参数θi并不总是可行的,因为许多实现(例如中国餐馆过程)涉及通过指数级增加k个分量来列举。因此使用近似的计算方法,例如吉布斯采样。最后要注意的是,即使k个簇是无限的,活跃簇的个数也是
。因此θi将重复并表现出聚集效应。
在前面的段中定义的模型在数学上是可靠的,但是它有一个主要的缺点:对于我们观察到的每一个新的xi,我们必须考虑θ先前的值来对新的θi进行取样。问题在于,在许多情况下,对这些参数进行采样可能是困难且计算量巨大的任务。
另一种替代方法是使用中餐馆过程对集群分配的潜在变量zi进行建模。这样,我们不用θi来表示聚类参数和聚类分配,而是使用潜变量zi来表示聚类ID,然后用这个值来分配聚类参数。因此,我们不再需要在每次获得新的观察值时对θ进行采样,而是通过从CRP 采样zi来获得聚类分配。使用这个方案,只有当我们需要创建一个新的簇时,才会对新的θ进行采样。下面我们给出这种方法的模型:
以上是描述数据xi和簇如何生成的生成模型。为了执行聚类分析,我们必须使用观测值xi并估计聚类指派zi。
不幸的是,由于Dirichlet过程是非参数的,我们不能使用EM算法来估计存储集群分配的潜在变量。为了估算任务,我们将使用Collapsed Gibbs Sampling。
折叠吉布斯抽样是一个简单的马尔可夫链蒙特卡罗(MCMC)算法。这个算法比较高效,且能使我们能够整合出一些变量,同时采样另一个变量的办法。然而,这个算法要求我们选择一个作为F生成分布之前的共轭的G0,以便能够解析方程并能够直接从中进行采样
我们将用来估计聚类分配的Collapsed Gibbs Sampling的步骤如下:
在下一篇文章中,我们将重点介绍如何使用Dirichlet Process Mixture模型进行聚类分析。我们将定义两个不同的Dirichlet过程混合模型,它们使用中餐馆过程和折叠吉布斯抽样来对连续的数据集和文档进行聚类。