【问题标题】:Feature Extraction Step Taking Too Long特征提取步骤耗时过长
【发布时间】:2013-09-05 05:35:36
【问题描述】:

我在 Octave 中编写了一个机器学习例程,如下所示:

  1. 从声音文件中提取特征
  2. 特征被缩放和标准化
  3. SVM 分类器经过训练
  4. 已执行分类

我遇到的问题是步骤 2,3 和 4 需要几秒钟才能完成整个数据库。但是,第 1 步每个文件大约需要 1 秒,这太长了。

花费这么长时间的原因是 - 在大多数情况下 - 因为我正在使用 leasqr 对每个文件执行多个指数拟合。

因为我每个班级大约有 1500 个声音文件和 3 个或更多班级,所以它开始加起来。我想扩展到 15,000 个文件,并且以当前的特征提取速度是不可行的。

我必须一遍又一遍地处理特征提取步骤的原因是因为我一直在使用它来调整我的分类器性能。例如。通过更改执行指数拟合的范围。

我的问题如下。我没有在外部运行繁琐流程的经验,但这会是一个可行的解决方案吗?如果是这样,对于这种情况,什么是好的/标准做法?如果没有,什么是好的做法?

【问题讨论】:

    标签: matlab amazon-web-services machine-learning signal-processing octave


    【解决方案1】:

    由于您的过程是高度独立的(从一个文件中提取特征不依赖于其他文件的提取结果),处理此问题的最合乎逻辑的方法是并行化。您可以同时在多个线程/内核/处理器/计算机/集群上运行此过程,假设您有足够的计算能力,使整个过程尽可能快。如果您是一名研究人员,您很可能可以访问您的大学/研究机构/公司中的一些计算集群。否则,您始终可以购买对此类资源的访问权限,例如在 Amazon EC2 上(但我相信您可以找到更便宜、更好的集群)。

    但似乎,更好(在价格和结果的意义上)将留下 Octave,因为它非常慢并使用执行您的预处理高效的语言,如 c++。如果这还不够(我很确定,它至少会加快速度),然后考虑并行化。

    一般而言,Matlab/Octave 是分析工具,应该用于研究,而不是用于实际计算。说到效率,就该进行“实际编程”了。

    【讨论】:

    • 另一种可能性可能只是选择的整体算法很差,需要重新考虑。虽然 leasqr 可能会尽可能快,但也许根本不需要完成所有这些指数拟合,或者其他算法,如分区(或可分离)非线性最小二乘法可能是正确的。或者,大量的指数拟合本身可能只是一个坏主意。我经常发现,只要对算法进行明智的重新思考,一段慢代码就可以大大加快速度。
    猜你喜欢
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2022-08-18
    相关资源
    最近更新 更多