基于狄利克雷过程混合模型的非参数贝叶斯聚类算法
1. 题目描述
假设我们有一组观测数据点,但我们不知道数据中应该存在多少个聚类。传统聚类算法(如K-means)需要预先指定聚类数K,这在实际中往往难以确定。狄利克雷过程混合模型(Dirichlet Process Mixture Model, DPMM)是一种非参数贝叶斯方法,它允许聚类数量在推断过程中自动确定。题目要求是:详细解释DPMM的原理,并一步步推导其核心的吉布斯采样推断过程。
核心问题:对于一个未知聚类数量的数据集,如何用DPMM自动发现其聚类结构并进行推断?
2. 问题直观理解与模型思想
想象你要整理一盒五颜六色的混合珠子。你不知道共有多少种颜色(类别),而且珠子颜色可能很接近。DPMM的哲学是:
- 先验假设:我们认为存在“无限”个潜在的类别,但数据只展现出其中一部分。一个新的数据点有一定概率属于一个已有类别,也有一定概率开创一个全新的类别。
- 聚类分配:每个数据点都被分配一个“类别标签”。这个分配不是固定的,而是会根据其他点的分配情况不断更新。
- 自动确定数量:随着迭代,那些没有被分配数据点的“空类别”会被自然淘汰,剩下的类别数就是算法推断出的聚类数。
这个过程的关键是狄利克雷过程,它可以被理解为“随机概率分布的分布”,为无限混合模型提供了数学框架。
3. 模型定义与数学符号
假设我们有N个数据点 {x_1, ..., x_N},每个数据点x_i服从某个参数为θ_i的分布F。
- 混合模型:认为参数θ_i从一个基分布G中抽取,即
θ_i ~ G。 - 狄利克雷过程(DP)先验:我们为G设置一个狄利克雷过程先验,记作
G ~ DP(α, H)。- H:基分布(Base Distribution),是参数θ的先验分布(例如,对于高斯分布,H可能是均值和方差的联合分布)。
- α:集中参数(Concentration Parameter),控制着新类别产生的倾向。α越大,越容易产生新类别。
- DPMM的完整分层模型可写为:
G ~ DP(α, H)θ_i | G ~ G(对每个i)x_i | θ_i ~ F(x_i | θ_i)(对每个i)
等价的中国餐馆过程(CRP)表示:
一个更直观的理解方式是“中国餐馆过程”。将数据点比作依次进入餐馆的顾客,聚类比作餐桌。
- 第一位顾客总是坐在第一张桌子。
- 第i位顾客入座时:
- 以概率
n_k / (i-1+α)坐到已有第k张桌子(已有n_k个人)。 - 以概率
α / (i-1+α)坐到一张全新的桌子。
这个过程隐式地定义了顾客(数据点)在桌子(聚类)上的一个随机划分,而这个划分正是从DP中采样得到的。
- 以概率
4. 推断过程:吉布斯采样(Gibbs Sampling)
由于模型后验分布复杂,我们使用MCMC方法(吉布斯采样)进行近似推断。核心是顺序地对每个数据点i的聚类分配变量z_i进行采样,条件于其他所有点的当前分配 z_{-i} 和数据X。
关键推导:分配一个点到一个聚类的条件概率
我们想计算 P(z_i = k | z_{-i}, X, α, H),其中k可以是已有类别或新类别。
步骤4.1: 应用贝叶斯定理
P(z_i = k | ...) ∝ P(x_i | z_i = k, z_{-i}, X_{-i}) * P(z_i = k | z_{-i})
- 第一项是似然:在给定聚类k下,观测到x_i的概率。
- 第二项是先验:在CRP下,点i被分配到类别k的先验概率。
步骤4.2: 计算先验项(CRP先验)
根据CRP:
P(z_i = k | z_{-i}) = n_{k, -i} / (N - 1 + α),其中n_{k, -i}是除点i外,被分配到类别k的点数。P(z_i = 新类别 | z_{-i}) = α / (N - 1 + α)。
步骤4.3: 计算似然项(后验预测分布)
对于已有类别k:
P(x_i | z_i = k, z_{-i}, X_{-i}) = ∫ F(x_i | θ) * p(θ | {x_j : z_j = k, j ≠ i}) dθ- 这个积分表示:给定类别k中所有其他点的数据,预测新点x_i的分布。p(θ | ...) 是基于先验H和类别k内其他数据得到的参数θ的后验分布。
- 如果似然分布F和先验分布H是共轭的(例如,高斯似然+高斯-逆伽马先验),这个后验预测分布可以解析计算出来,通常是一个学生t分布。
对于新类别(记为k_new):
- 此时没有其他数据点,所以后验预测分布退化为基于先验H的预测:
P(x_i | z_i = k_new) = ∫ F(x_i | θ) H(θ) dθ。这称为基测度H的边际似然。
步骤4.4: 组合得到采样公式
最终,采样分配z_i的概率为:
- 对每个已有类别k:
P(z_i = k) ∝ (n_{k, -i}) * P(x_i | {x_j : z_j = k, j ≠ i}) - 对于新类别:
P(z_i = 新类别) ∝ α * ∫ F(x_i | θ) H(θ) dθ
我们将这些非归一化的概率值计算出来,归一化后,就构成了一个多项分布。从该多项分布中采样,就得到了点i的新类别标签z_i。
5. 完整迭代过程
- 初始化:随机或以某种简单策略(如所有点各自一类)初始化所有数据点的聚类标签
z_1, ..., z_N。 - 吉布斯扫描:
- 对i = 1 到 N:
a. 将点i从当前聚类中移除(更新该类别的点数和统计量)。
b. 按照第4步推导出的公式,计算点i被分配到每一个现有类别和一个新类别的非归一化概率。
c. 将这些概率归一化,形成一个概率向量。
d. 根据这个概率向量,多项式采样一个新的类别标签z_i。
e. 将点i加入到新采样的类别中,更新该类别的点数和统计量。
- 对i = 1 到 N:
- 迭代:重复步骤2足够多的次数(例如1000-10000次),直到分配趋于稳定(马尔可夫链达到平稳分布)。初始的一些迭代(老化期)被丢弃。
- 后处理:由于吉布斯采样产生的是来自后验的样本链,我们需要从中获取一个“代表”聚类结果。常用方法是:
- 取最后一样本:使用最后一次迭代的分配结果。
- 最大后验估计:从采样链中选择出现频率最高的聚类分配。
- 一致性聚类:计算所有样本中每对点出现在同一类中的频率,得到一个相似性矩阵,再通过层次聚类等方法得到最终结果。
6. 算法核心优势与总结
- 自动模型选择:无需预设K,聚类数从数据中自动学习。
- 贝叶斯性质:提供了完整的不确定性量化(例如,聚类分配的概率、聚类数的分布)。
- 灵活性:可结合任何数据分布F和先验H。
- 计算复杂性:主要开销在于每次迭代计算每个点的后验预测分布。对于共轭模型,可通过增量更新统计数据来加速。
总结:狄利克雷过程混合模型通过引入一个“无限”的潜在类别空间,并借助中国餐馆过程这一优雅构造,使得聚类数的推断与聚类分配在统一的贝叶斯框架下进行。吉布斯采样通过循环遍历数据点,根据“数据似然”和“类别流行度”的权衡,动态地为每个点重采样类别标签,最终收敛到对数据聚类结构的一个合理划分。这个过程就像一场“动态重组会议”,与会者(数据点)根据共同兴趣(数据似然)和小组人数(类别大小)不断调整分组,直至形成稳定的讨论圈子(聚类)。