期望最大化问题 - 如何在数据中找到最佳的高斯数

Sim*_*mon 4 matlab data-mining expectation-maximization

2维数据的图

在应用期望最大化算法之前,是否存在如何确定应在一组数据中识别的高斯数的算法或技巧?

例如,在上面所示的二维数据图中,当我应用期望最大化算法时,我尝试将4个高斯拟合到数据中,我将得到以下结果.

在此输入图像描述

但是,如果我不知道数据中的高斯数量呢?有没有我可以应用的算法或技巧,以便我可以找到这个细节?

zer*_*ord 8

这可能是一个翻新,因为其他人已经链接了实际群集数量确定的维基文章,但我发现该文章过于密集,所以我想我会提供一个简短,直观的答案:

基本上,对于数据集中的聚类数量,没有普遍"正确"的答案 - 聚类越少,描述长度越小但方差越大,并且在所有非平凡数据集中,方差不会完全消失,除非你对每个点都有一个高斯分子,这使得聚类无用(这是一个更普遍的现象,被称为"无偏见学习的无效性":一个学习者没有先验假设关于身份的目标概念没有合理的基础来分类任何看不见的实例).

因此,您基本上必须选择数据集的某些功能,以通过群集的数量最大化(有关示例功能,请参阅有关归纳偏差的Wiki 文章)

在其他令人遗憾的消息中,在所有这些情况下,发现群集的数量已知为NP难度,因此您可以期待的最佳方案是良好的启发式方法.