计算LIBSVM的C和Gama

时间:2014-10-13 13:47:19

标签: matlab opencv libsvm

我正在为libsvm计算C和gama的值。我的训练数据大小是Mat(28539,96);但这种搜索需要很长时间。自从过去两天我的笔记本电脑开启,仍在搜索中。如何解决这个问题,任何人都有任何想法。帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

网格搜索可能是一个非常漫长的过程,尤其是当有大量数据时。

你能做的是:

  1. 记录训练一个模型需要多少时间
  2. 计算网格搜索将训练的模型数
  3. 大致估计执行网格搜索需要多长时间。
  4. 例如,如果您希望每次以2 ^ 0到2 ^ 15检查C,并且具有更高的2的幂,您将对C值执行16次训练。如果你想尝试1到5之间的伽玛,你将为每个伽玛进行5次训练。

    总的来说,网格搜索将进行16 * 5的训练。如果训练一个模型需要10秒钟,那么您将需要等待800秒才能完成整个网格搜索。

    请注意,随着C变大,计算需要更多时间,因此您可能会使用最大的C值来估计训练一个模型的时间。

    一种推荐的方法是使用整个范围开始,然后缩小范围和步长,以便每次网格搜索保持合理的训练次数。

    示例:

    • 在C = 2 ^ 0和2 ^ 15之间搜索,并且伽马= 1和5 - > 280次迭代
    • 注意到最低误差值在C = 2 ^ 4 abd C = 2 ^ 5且gamma = 3和4
    • 的范围内
    • 在C = 2 ^ 3和2 ^ 6以及γ= 3和4(具有0.1步)之间搜索 - > 40次迭代

    等等,一旦你对结果感到满意。

答案 1 :(得分:1)

如果您使用grid.py - 在里面找到参数

telnet_workers = []
ssh_workers = []
nr_local_worker = 1

您可以在其中配置外部帮助程序和本地线程数。尝试增加本地线程的数量,直到您的机器(接近)100%加载。