2016-11-22 102 views
1

我是数据科学领域的新手。我想在500k行和81列的数据集上使用SVM训练模型。在SciPy中运行多核心SVM代码?

到目前为止,在SciPy中运行此模型需要数小时。我可以访问100个计算节点,每个核心有16个核心,但由于缺乏应该如何运行此SVM代码的知识,所以不知道如何利用这一点。

有人能指出我该如何解决这个资源问题的方向吗?

回答

0

你使用的是什么内核函数?

支持向量机不能很好地扩展。运行时间是O(n^3),其中n是训练样本的数量。

如果你不使用内核功能,您可以创建一个火花集群,您可以使用火花mllib SVM这是一个线性分类:

https://spark.apache.org/docs/latest/mllib-linear-methods.html

如果使用非线性核函数,然后您可以使用LIBIRWLS,即多核,所以你可以使用并行使用16个内核的机器上:

https://github.com/RobeDM/LIBIRWLS

+0

你有什么想法长这样的事情应该如何采取现实? –

+0

这是使用径向基础内核运行的内核 –

+0

您事先并不知道运行时间(它取决于培训结束时支持向量的数量)。对于500.000的运行时间,如果使用libsvm可能会持续几个小时。如果想要快速运行时间,可以使用SVM的近似值,查看这些库(BudgetedSVM http://www.dabi.temple.edu/budgetedsvm/和LIBIRWLS:https://github.com/RobeDM/LIBIRWLS)包含一个简化的算法。 – Rob