比较期望最大化时间表现的框架

时间:2014-07-15 12:15:11

标签: r performance machine-learning data-mining expectation-maximization

我有自己的期望最大化(EM)算法的实现基于以下论文http://pdf.aminer.org/000/221/588/fuzzy_k_means_clustering_with_crisp_regions.pdf我想将性能与另一个实现进行比较。对于测试,我使用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来实现?

1 个答案:

答案 0 :(得分:1)

EM的公平基准测试很难。很难。

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

  2. EM理论上永远不会终止。它只是在某个时刻不再有太大变化,因此你可以设置一个停止的阈值。但是,停止阈值的确切定义会有所不同

  3. 存在各种模型变体。仅使用模糊分配(例如Fuzzy-c-means)的方法当然要比使用具有covaraince矩阵的多元高斯混合模型的实现快得多。特别是具有更高的维度。 协方差矩阵也需要O(k * d ^ 2)存储器,并且反演将花费O(k * d ^ 3)时间,因此显然不适合 text 数据。

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

  5. 对于启动器,尝试使用不同的初始化多次运行自己的算法,并检查运行时的差异。与总运行时间相比,方差有多大?

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

相关问题