Machine learning LOF的不同运行时

Machine learning LOF的不同运行时,machine-learning,data-mining,elki,Machine Learning,Data Mining,Elki,我使用Elki运行LOF算法,但每次我在Elki中运行LOF算法时,Elki都会在同一数据集上给出不同的运行时间。 我很困惑为什么会发生这种情况?正如@Anony mouse在评论中提到的,很难获得可靠的运行时值 这不是ELKI特有的——LOF算法不涉及随机性,因此可以假设每次都得到相同的运行时。但实际上,你并不是每次都能得到相同的结果 以下是关于获得更可靠运行时的一些提示: 不要在同一过程中运行多个实验。为每个JVM启动一个新JVM(否则,它可能必须在某个时候对上一次运行的对象进行垃圾收集)

我使用Elki运行LOF算法,但每次我在Elki中运行LOF算法时,Elki都会在同一数据集上给出不同的运行时间。
我很困惑为什么会发生这种情况?

正如@Anony mouse在评论中提到的,很难获得可靠的运行时值

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

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

  • 不要在同一过程中运行多个实验。为每个JVM启动一个新JVM(否则,它可能必须在某个时候对上一次运行的对象进行垃圾收集)
  • 小于1秒的运行时差异不显著。要测量运行时(比如说不到一秒钟),您应该使用专门的工具,例如
  • 运行几次,并使用中值或截断平均值
  • 禁用turbo boost,并确保CPU冷却良好。在Linux上(我建议您使用专用的Linux系统进行基准测试!),您可以通过以下方式禁用CPU boost:

    echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
    
    我的CPU有一个3.4GHz的基本时钟,但可以提升到3.9GHz。这是15%的速度,但它不能运行3.9千兆赫时,使用所有的核心。根据运行的线程数,实际时钟可能是3.4、3.7、3.8、3.9 GHz;它甚至可以暂时决定将油门降到甚至1.6GHz。因此,您甚至可能需要监控CPU时钟速度(例如,请参阅
    grep“^CPU MHz”/proc/cpuinfo
    )。但一定要禁用涡轮增压

  • 不要使用
    -verbose
    。日志记录对运行时有显著影响

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

  • 差别有多大?您意识到运行时会因GUI、IO、垃圾收集、CPU的热节流和许多其他因素而有所不同?每次运行时3329ms apprx的差异以及差异也会有所不同。不,我不知道这些因素。总共是多少?一次我运行Elki时的运行时间是62581毫秒,但第二次运行时的运行时间是65910毫秒,所以两者的差异是33295%,比我预期的要大,但Java和现代CPU并不令人惊讶。您的CPU可能能够将其时钟速度提高10%,但由于温度原因,它可能无法维持很长时间。我不应该使用“Elki CLI”?是的,使用命令行界面更可靠,因为您每次都有一个新的JVM,并且没有UI开销。给定参数“dbc.in”的文件数据\synthetic\Vorlesung\mickey-mouse.csv不存在!我不知道政府如何处理这个问题。请指导。未处理以下参数:[data/synthetic/Vorlesung/mickey mouse.csv]以下配置错误阻止了执行:参数“dbc.in”的给定文件data\synthetic\Vorlesung\mickey-mouse.csv不存在!实例化内部类时出错:de.lmu.ifi.dbs.elki.workflow.InputStep由于配置错误而停止执行。这是eclipse显示的完整错误,我刚刚导入了elki项目并与gradle进行了同步,然后点击run按钮,eclipse显示了上述错误,github上也没有找到mickey-mouse.csv。是的,因为文件已重命名。您需要修复文件名。