0

我根据以下论文http://pdf.aminer.org/000/221/588/fuzzy_k_means_clustering_with_crisp_regions.pdf我有自己的期望最大化(EM)算法实现我想将性能与另一个实现进行比较。对于测试,我使用 K 个质心和 1 Gb 的 txt 数据,我只是测量在 1 次迭代中计算新质心所需的时间。我尝试在 R 中使用 EM 实现,但我做不到,因为结果被绘制在图表中并且被大量的 txt 数据卡住了。我正在关注以下示例:http ://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/Expectation_Maximization_%28EM%29

有人知道 EM 的实现来衡量性能或如何使用 R 来实现吗?

4

1 回答 1

1

新兴市场的公平基准很难。很难。

  1. 初始化通常会涉及random 并且可能非常不同。据我所知,R 实现默认使用层次聚类来查找初始聚类。这需要 O(n^2) 内存,并且很可能需要 O(n^3) 运行时成本。在我的基准测试中,R 会因此而耗尽内存。我假设有一种方法可以指定初始集群中心/模型。随机对象初始化当然会快得多。可能 k-means++ 是在实践中选择初始中心的好方法。

  2. EM理论上永远不会终止。它只是在某个时候不再发生太大变化,因此您可以设置一个阈值来停止。但是,停止阈值的确切定义各不相同

  3. 存在各种模型变化。仅使用诸如 Fuzzy-c-means 之类的模糊分配的方法当然比使用具有协方差矩阵的多元高斯混合模型的实现要快得多。特别是具有更高维度的。协方差矩阵也需要 O(k * d^2) 内存,求逆需要 O(k * d^3) 时间,因此显然不适合文本数据。

  4. 数据可能合适,也可能不合适。如果您在实际上具有高斯集群的数据集上运行 EM,它通常会比在根本不提供良好拟合的数据集上工作得更好。当没有很好的匹配时,即使使用相同的实现,您也会在运行时看到很大的差异。

首先,尝试使用不同的初始化多次运行您自己的算法,并检查您的运行时是否存在差异。与总运行时间相比,方差有多大?

您可以尝试针对 ELKI 中的 EM 实现进行基准测试。但我怀疑该实现是否适用于文本等稀疏数据——该数据不是高斯数据,不适合进行基准测试。因此,它很可能根本无法处理数据。这是意料之中的,可以从理论上解释。尝试找到密集的并且可以预期具有多个高斯集群的数据集(抱歉,我不能在这里给你很多建议。经典的 Iris 和 Old Faithful 数据集太小,无法用于基准测试。

于 2014-07-16T07:31:14.390 回答