# 第 27 章 再谈文本自动分类问题——期望最大化EM

## 文本的自收敛分类

不同于 TF-IDF 利用余弦相似度来进行分类，这里不需要事先设定好类别，也不需要对文本两两比较进行合并聚类。而是随机挑选一些类的中心，然后来优化这些中心，使它们和真实的聚类中心尽可能一致。步骤如下：

1. 假设有很多点随机分布，随机挑选 k 个点作为聚类的中心。
2. 分别计算出所有点到这些聚类中心的距离，将这些点归到最近的一类中。
3. 重新计算每一类的中心（分别计算每个维度的平均值）。
4. 重复上述过程，直到新的中心和旧的中心之间偏移非常非常小，即过程收敛。

## 如何确保期望最大化

首先，我们的距离函数必须足够好，能保证同一类相对距离较近，不同类相对距离较远。我们希望最终的分类结果是：相近的点都被聚类到了一类中，即同一类中各个点到中心距离的平均距离 d 较近，而不同类中心之间的平均距离 D 较远。

## EM算法

在一般性的问题中如果有很多观测值，可以让计算机不断迭代来学习一个模型。首先，根据现有的模型，计算出观测数据输入到模型中的结果，这个过程为期望值计算过程（Expectation，E过程）；接下来，重新计算模型参数，以最大化期望值（文本分类中是最大化 D 和 -d ），该过程为最大化过程（Maximization，M过程）。统称为EM算法。

## 小结

EM算法只需要有一些训练数据，定义一个最大化函数，剩下的事就交给计算机了。经过若干次迭代，达到收敛或误差最小化，模型就训练好了。是一个通用的算法。

EM算法不一定能得到全局最优解，如果目标函数是凸函数，就可以；如果是凹函数，则可能得到的是局部最优解。
