基于期望最大化(EM)算法的朴素贝叶斯混合模型无监督文本分类算法详解
1. 问题描述
假设我们有一个文本数据集,但没有任何标签信息(即无监督场景)。我们想将这些文本自动聚类成K个类别(例如K个主题),同时为每个类别学习一个概率生成模型。该问题可以形式化为:给定文本集合 \(D = \{d_1, d_2, ..., d_N\}\),每个文档 \(d\) 由词序列表示,目标是学习K个多项式朴素贝叶斯模型(每个类别一个),并推断每个文档属于各个类别的软分配概率。这是一个典型的无监督文本分类或软聚类问题,可以通过EM算法与朴素贝叶斯混合模型结合来解决。
2. 算法核心思想
我们假设数据由以下生成过程产生(混合多项式朴素贝叶斯模型):
- 随机选择一个类别 \(z \in \{1, 2, ..., K\}\),其先验概率为 \(P(z = k) = \pi_k\)。
- 给定类别 \(k\),文档中的每个词独立地从类别特定的多项式分布中生成:\(P(w | z=k) = \phi_{k,w}\),其中 \(\phi_{k,w}\) 是类别 \(k\) 中词 \(w\) 的概率。
目标是估计参数 \(\Theta = \{\pi_k, \phi_{k,w}\}\) 以及每个文档的后验类别分布 \(P(z | d)\)。由于没有标签,我们使用EM算法进行最大似然估计。
3. 算法步骤详解
步骤1:模型定义与符号
- 词汇表大小为 \(V\),所有词索引为 \(1..V\)。
- 文档 \(d_i\) 表示为词袋向量 \(\mathbf{x}_i = (x_{i1}, ..., x_{iV})\),其中 \(x_{iv}\) 是词 \(v\) 在文档 \(i\) 中的出现次数。
- 参数:
- \(\pi_k = P(z=k)\),满足 \(\sum_{k=1}^K \pi_k = 1\)。
- \(\phi_{k,v} = P(w=v | z=k)\),满足 \(\sum_{v=1}^V \phi_{k,v} = 1\)。
- 隐藏变量:文档 \(i\) 的类别标签 \(z_i\)。
步骤2:完全数据对数似然
如果已知所有文档的标签 \(z_i\),则完全数据的似然为:
\[L_c(\Theta) = \prod_{i=1}^N \pi_{z_i} \prod_{v=1}^V \phi_{z_i, v}^{x_{iv}} \]
取对数:
\[\ell_c(\Theta) = \sum_{i=1}^N \left[ \log \pi_{z_i} + \sum_{v=1}^V x_{iv} \log \phi_{z_i, v} \right] \]
步骤3:EM算法框架
由于 \(z_i\) 未知,我们通过迭代以下两步优化:
E步(期望步):
计算隐藏变量 \(z_i\) 的后验分布,即文档 \(i\) 属于类别 \(k\) 的概率:
\[\gamma_{ik} = P(z_i = k | \mathbf{x}_i, \Theta^{(t)}) = \frac{\pi_k^{(t)} \prod_{v=1}^V (\phi_{k,v}^{(t)})^{x_{iv}}}{\sum_{j=1}^K \pi_j^{(t)} \prod_{v=1}^V (\phi_{j,v}^{(t)})^{x_{iv}}} \]
这里 \(\Theta^{(t)}\) 是当前迭代的参数。注意:由于是朴素贝叶斯假设,给定类别下词之间独立,因此似然是每个词概率的乘积。
M步(最大化步):
基于当前后验 \(\gamma_{ik}\),更新参数以最大化完全数据对数似然的期望:
\[Q(\Theta) = \mathbb{E}_{z|\mathbf{x},\Theta^{(t)}}[\ell_c(\Theta)] = \sum_{i=1}^N \sum_{k=1}^K \gamma_{ik} \left[ \log \pi_k + \sum_{v=1}^V x_{iv} \log \phi_{k,v} \right] \]
对 \(\pi_k\) 和 \(\phi_{k,v}\) 分别优化,加入约束(和为1),使用拉格朗日乘子法可得闭式解:
- 更新先验概率:
\[\pi_k^{(t+1)} = \frac{\sum_{i=1}^N \gamma_{ik}}{N} \]
- 更新词汇概率:
\[\phi_{k,v}^{(t+1)} = \frac{\sum_{i=1}^N \gamma_{ik} x_{iv}}{\sum_{i=1}^N \gamma_{ik} \sum_{u=1}^V x_{iu}} \]
分母是分配给类别 \(k\) 的所有文档的总词数(即归一化因子)。
步骤4:初始化与终止条件
- 初始化:随机或通过K-means对文档向量(如TF-IDF)聚类初始化 \(\gamma_{ik}\),然后计算初始 \(\pi_k, \phi_{k,v}\)。
- 终止条件:对数似然 \(\ell(\Theta) = \sum_{i=1}^N \log \sum_{k=1}^K \pi_k \prod_{v=1}^V \phi_{k,v}^{x_{iv}}\) 的变化小于阈值,或达到最大迭代次数。
步骤5:输出
- 文档软分类:\(\gamma_{ik}\) 表示文档 \(i\) 属于类别 \(k\) 的概率。
- 硬分类:取 \(\arg\max_k \gamma_{ik}\) 作为文档的类别。
- 每个类别的主题词:按 \(\phi_{k,v}\) 从高到低排列词,得到类别 \(k\) 的代表性词汇。
4. 示例说明
假设有两个文档:
- 文档1:词序列 "apple banana apple"
- 文档2:词序列 "banana orange"
词汇表:{"apple":1, "banana":2, "orange":3},设K=2。
初始化:
随机赋予文档初始软标签,例如 \(\gamma_{11}=0.8, \gamma_{12}=0.2\),\(\gamma_{21}=0.3, \gamma_{22}=0.7\)。
第一次E步:
用初始参数计算后验(公式略),得到新的 \(\gamma_{ik}\)。
第一次M步:
更新 \(\pi_1 = (0.8+0.3)/2=0.55\),计算 \(\phi_{1,apple}\):
分子:文档1贡献 \(0.8 \times 2\)("apple"出现2次)+ 文档2贡献 \(0.3 \times 0 = 0\) → 1.6
分母:文档1总词数3×0.8=2.4,文档2总词数2×0.3=0.6,总和3.0
因此 \(\phi_{1,apple}=1.6/3.0≈0.533\)。类似更新其他参数。
迭代直至收敛。
5. 算法特点与应用
- 优点:提供概率输出,模型可解释(每个类别有词分布),适用于无监督主题发现或文本聚类。
- 缺点:假设词之间条件独立(朴素贝叶斯),可能过于简化;EM可能陷入局部最优,对初始化敏感。
- 应用:新闻文章主题聚类、社交媒体话题挖掘、文档组织等。
通过EM算法迭代优化,混合朴素贝叶斯模型能够从无标签文本中自动发现潜在类别结构,是一种经典的无监督文本分类方法。