cache_size对SVC处理时间的影响

时间:2017-11-24 08:48:18

标签: performance scikit-learn

我已经完成了交叉验证的SVC分析。阅读svc的scikit-learn文档,我看到了:

"内核缓存大小:对于SVC,SVR,nuSVC和NuSVR,内核缓存的大小对较大问题的运行时间有很大影响。如果您有足够的RAM可用,建议将cache_size设置为高于默认值200(MB)的值,例如500(MB)或1000(MB)。"

http://scikit-learn.org/stable/modules/svm.html

所以我多次重新运行我的分析,并使用cache_size(50,100,200,800,1200,2000,4000,8000)的几个不同值来计算结果。

当cache_size低于2000时,我的完整分析大约需要11.2秒,当cache_size大于2000时,时间会跳到40秒。

分析在具有16千兆字节的现代计算机上进行。

我想知道是否有人知道处理时间对于2000以下的任何缓存值根本不会发生变化的可能原因,以及为什么处理时间更长更高值。同样,计算机有16个ram的演出,并且在cache_size的任何值都没有出现任何减速的迹象。

感谢您的任何想法。

2 个答案:

答案 0 :(得分:1)

您发现缓存> 2000 MB的速度降低可能是以下错误的结果:https://github.com/scikit-learn/scikit-learn/issues/8012(带符号的32位整数溢出)。

答案 1 :(得分:0)

对于SVC,SVR,NuSVC和NuSVR,内核缓存的大小对较大问题的运行时间有很大影响。如果您有足够的可用RAM,建议将cache_size设置为比默认值200(MB)高的值,例如500(MB)或1000(MB)。

上面的陈述是在User Guide中为SVC给出的。这只是意味着您为缓存保留的空间更多,而用于执行数据拟合任务的计算能力却较小。

因此,分配更多的缓存空间会降低处理器的性能,并且算法会花费更多时间执行。