一些初步测试表明,我正在从事的项目可能会受益于使用支持向量机解决棘手的问题。我担心的是将会存在主要的内存限制。原型和测试是通过scikit-learn在python中完成的。最终版本将以C语言定制编写。模型将经过预训练,并且只有决策函数会存储在最终产品上。将有<= 10个训练功能,而<= 5000个训练数据点。我一直在阅读有关SVM内存的杂物,并且我知道默认的sklearn内存缓存为200 MB。 (比我现有的大得多)这可行吗?我知道有多种不同类型的SVM内核,并且内核也可以自定义编写。如果有的话,这可能与哪些内核类型一起工作?
答案 0 :(得分:2)
如果空间有限,您可能要跳过scikit
并自己实现数学。这样,您可以按自己选择的结构循环浏览数据。内存需求取决于您所使用的SVM的类别。一次遍历数据就可以完成两类线性SVM,并且在累积乘积和时一次只考虑一次观察,因此命令逻辑将比数据需求占用更多的空间。
如果您需要将整个数据集保留在内存中以进行多次遍历,则浮点数“仅”为5000 * 10 * 8字节,即1Mb的400k,这可能足以容纳做你的操作。还请考虑一个缓慢的训练过程,每次通过时都要重新读取数据,因为这样可以将400k减少到微不足道的时间,而这只是墙上时钟的时间。
如果您查找可用的SVM实现并根据需要更改I / O部分,那么所有这些都在您的控制之下。
有帮助吗?