我使用Elki运行LOF算法,但每次我在Elki中运行LOF算法时,Elki在同一数据集上提供不同的运行时。 我很困惑为什么会这样?
答案 0 :(得分:0)
正如@ Anony-Mousse在评论中提到的那样,获得可靠的运行时值很难。
这不是ELKI特有的 - LOF算法不涉及随机性,因此可以假设每次都获得相同的运行时。但实际上,你每次都不会得到相同的结果。
以下是获得更可靠运行时的一些提示:
禁用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
)。但绝对禁用涡轮增压。
不使用-verbose
。记录对运行时有显着影响。
KDDCLIApplication -dbc.in file.csv -algorithm ...
允许您从控制台运行实验,而无需GUI开销。-resulthandler DiscardResultHandler
来丢弃实际结果;并从-time
日志获取timinig(日志应该只有几行;避免过多的输出)