【发布时间】:2018-05-08 05:50:44
【问题描述】:
我进行了交叉验证的 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 GB 内存的现代计算机上进行。
我想知道是否有人知道为什么处理时间对于任何低于 2000 的缓存值都不会改变的可能原因,以及为什么处理时间会随着值的增加而更长。同样,计算机有 16 gigs 的 ram,并且在 cache_size 的任何值下都没有出现其他速度减慢的迹象。
谢谢大家的意见。
【问题讨论】:
-
只是猜测,但如果缓存大小为 4000 或 8000MB,您可能会显着减少可用于处理的 RAM。这可能会减慢实际算法的速度。
-
@amanbirs 这是可能的。这对我来说很有意义 - 如果缓存只是一个存储东西以供以后使用的地方,那么在较小的问题中可以快速达到某个性能“上限”是有道理的,在这种情况下,向缓存添加更多空间只会消除这种可能性使用该 RAM 进行实际计算。
-
是的,特别是如果缓存大小 = 8GB。 Tha 是总 RAM 的一半。可用的 RAM 可能比这要少得多。
-
从理论的角度来看,我会说:它不应该放慢速度。带上你最喜欢的进程管理器,观察整个任务期间的内存消耗。如果你达到了限制,就会发生垃圾并减慢速度。