【问题标题】:A framework for comparing the time performance of Expectation Maximization一个比较期望最大化时间性能的框架
【发布时间】:2014-09-05 15:15:52
【问题描述】:

我有自己的基于以下论文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 来实现吗?

【问题讨论】:

  • 你是什么意思,比较?就所用时间而言?参数几乎肯定会有所不同,因为 EM 对初始化很敏感(只找到局部最优)。检查的标准方法是根据模型进行模拟并尝试恢复其参数。
  • 你好,本。是的,我想要衡量的是时间表现。

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


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 您好 Erich,非常感谢您的精彩解释。目前,我只是在使用 1 Iteration 的另一个框架实现来测试我的实现的速度性能。所以对于 1 - 我只是选择了一些随机集群。 2 - 我在一次迭代后停止,而不是阈值。 3 - 我的 EM 实现没有使用协方差矩阵。我假设所有属性(维度)都是独立的。 R 中的所有 EM 实现都使用协方差矩阵吗?如果是这样,那么我认为我不能用它来比较。我现在会在 ELKI 中检查 EM。谢谢!
猜你喜欢
  • 2014-10-28
  • 1970-01-01
  • 2017-10-23
  • 2013-05-23
  • 2021-05-03
  • 1970-01-01
  • 2019-09-18
  • 2011-06-08
  • 1970-01-01
相关资源
最近更新 更多