LOF的不同运行时

时间:2017-03-21 14:27:33

标签: machine-learning data-mining elki

我使用Elki运行LOF算法,但每次我在Elki中运行LOF算法时,Elki在同一数据集上提供不同的运行时。 我很困惑为什么会这样?

1 个答案:

答案 0 :(得分:0)

正如@ Anony-Mousse在评论中提到的那样,获得可靠的运行时值很难。

这不是ELKI特有的 - LOF算法不涉及随机性,因此可以假设每次都获得相同的运行时。但实际上,你每次都不会得到相同的结果。

以下是获得更可靠运行时的一些提示:

  1. 在同一过程中运行多个实验。为每个启动新鲜JVM (否则,它可能必须垃圾收集以前运行的对象
  2. 。)
  3. 运行时差异小于1秒并不重要。要测量不到一秒钟的运行时间,您应该使用JMH等专业工具。
  4. 运行多次,并使用中值或截断均值
  5. 禁用turbo boost ,并确保CPU充分冷却。在Linux上(我建议您使用专用的Linux系统进行基准测试!),您可以通过以下方式禁用CPU提升:

    echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
    

    我的CPU具有3.4 GHz基本时钟,但可以提升至3.9 GHz。这比使用所有内核时快15%,但不能运行3.9 Ghz。根据运行的线程数,实际时钟可以是3.4,3.7,3.8,3.9 GHz;它甚至可以暂时决定降低到1.6 GHz。因此,您甚至可能需要监控CPU时钟速度(例如,请参阅grep "^cpu MHz" /proc/cpuinfo)。但绝对禁用涡轮增压。

  6. 使用-verbose。记录对运行时有显着影响。

  7. 使用MiniGUI。请注意,MiniGUI会显示命令行供您复制,例如KDDCLIApplication -dbc.in file.csv -algorithm ...允许您从控制台运行实验,而无需GUI开销。
  8. 不要使用可视化。可视化需要大量内存和CPU,这将产生可测量的影响。 ELKI尝试独立测量算法时间,然后进行可视化;但即使您关闭了可视化窗口,仍可能在后台进行一些内存清理。优选地,对于运行时基准测试,使用-resulthandler DiscardResultHandler 来丢弃实际结果;并从-time日志获取timinig(日志应该只有几行;避免过多的输出)