kent_2006
遇到的情况是这样的,用SVM建模,当数据记录数量是几K的情况下,30分钟可以生成模型;但当数据记录数量达到几十万时,这个模型就生成不出来了。现在看看有没什么办法,提高这个建模的运算效率?SVM函数建模前的数据处理都很简单,就是SVM函数建模这一步的问题,语句是
library("kernlab")
svm.fit <- ksvm(y~., train, kernel = 'rbfdot',cost=1)
我猜测,提高CPU速度、CPU核数,用并行计算,这些措施可以提高速度,不知道提高内存有没有帮助,请教?谢谢
viking_pirate
如果你是直接使用'kernlab'libaray的ksvm函数,如果需要速度的话,建议你直接挂再服务器上面。如果没有服务器的话,建议改用C++,从算法上也进行改进,可以google下相关的算法。
这篇文章供参考,我没有写代码验证。
Parallel Support Vector Machines in Practice。
http://arxiv.org/pdf/1404.1066v1.pdf
kent_2006
谢谢viking_pirate!
我理解,提高建模计算速度,可以从硬件和软件两方面着手,
硬件方面,提高CPU主频应该有效果,但提高内存有没帮助呢?比如,我用64位系统,R中64位系统可以用的内存最大是3G,假设程序其它内存开销是2G,如果系统内存大于5G,比如10G,会不会比内存6G的系统建模运行的速度更快?
软件方面,假设不考虑并行计算的情况,用C++代码和直接用R中的SVM函数建模速度差别大吗?我猜测R中的SVM建模函数底层也是用C代码写的,也许差别不是太大(比如,差别在20%以内),我这理解对不对呢?
如果差别不大 ,我还是想用R中的现成函数,麻烦请教下哈,谢谢!
viking_pirate
关于内存管理方面的,我没有经验。一般情况下,package的函数作者都基本上写的很好了,你不一定能保证自己的就比他们的好,所以我懒就用package, 一定要速度,那就改用c++同时改进算法。
kent_2006
非常感谢viking_pirate!