高容量SVM(机器学习)系统

mal*_*ngi 7 c java matlab machine-learning svm

我正在研究一个可能的机器学习项目,该项目预计将使用SVM(支持向量机)和可能的一些ANN进行机器学习的高速计算.

我非常适合在matlab上使用这些,但主要是在小型数据集中,仅用于实验.我想知道这种基于matlab的方法是否会扩展?或者我应该研究其他什么?基于C++/gpu的计算?java包装的matlab代码并将其推送到app引擎?

顺便提一下,似乎有很多关于GPU的文献,但关于它们在使用matlab的机器学习应用程序上有多大用处并不多,而且最便宜的CUDA enlabled GPU可以买到?它甚至值得麻烦吗?

psi*_*lia 7

我从事模式识别问题.如果您计划有效地处理SVM/ANN问题并且您真的无法访问计算机集群,请让我给您一些建议:

1)不要使用Matlab.使用Python及其大量数值库代替您的计算的可视化/分析.
2)使用C实现更好的关键部分.您可以非常轻松地将它们与Python脚本集成.
3)如果你主要处理机器学习中典型的非polinomial时间复杂度问题,CUDA/GPU不是解决方案,因此它不会带来很大的加速; 点/矩阵产品只是SVM计算的一小部分 - 您仍然需要处理特征提取和列表/对象处理,而是尝试优化算法并设计有效的算法方法.如果您需要并行性(例如,对于ANN),请使用线程或进程.
4)使用GCC编译器编译您的C程序 - 它将构建非常快速的可执行代码.要加速数值计算,您可以尝试GCC优化标志(例如,流式SIMD扩展)
5)在Linux OS下的任何现代CPU上运行程序.

为了获得良好的性能,请使用Linux集群.

  • 实际上(1)Matlab在所有常见环境中运行.我在64位Windows,OSX和Linux上使用它.(2)由于索引到一个数组基本上是调用一个函数(subsref,你可以根据需要重载),我不明白为什么这应该是一个问题 - 至少对我来说,可读性来自于结构和注释代码,而不是来自括号,以及(3)Matlab进行写时复制,这无论如何都是内存问题而不是速度问题.换句话说,Matlab的SVN实现似乎没有问题,但你只是不喜欢这个程序. (2认同)

AVB*_*AVB 5

无论LIBSVMSVM光有MATLAB接口.此外,大多数学习任务都是可以并行化的,所以请看一下像parfor这样的 matlab命令以及Parallel Computing Toolbox的其余部分.