网格搜索中的交叉验证非常慢(libsvm)

Posted

技术标签:

【中文标题】网格搜索中的交叉验证非常慢(libsvm)【英文标题】:Cross validation is very slow in Grid search (libsvm) 【发布时间】:2014-01-10 05:25:02 【问题描述】:

我在 62 个类上使用 libsvm,每个类有 2000 个样本。问题是我想使用网格搜索优化我的参数。我将范围设置为C=[0.0313,0.125,0.5,2,8]gamma=[0.0313,0.125,0.5,2,8] 5 倍。交叉验证不会在每个参数的前两个参数处完成。有没有更快的优化方法?例如,我可以将折叠次数减少到 3 次吗?编写的迭代次数一直在(1629,1630,1627) 范围内播放我不知道这是否相关

优化完成,

#iter = 1629 nu = 0.997175 obj = -81.734944, rho = -0.113838 nSV = 3250, nBSV = 3247

【问题讨论】:

【参考方案1】:

找到一个好的模型只是一项昂贵的任务。让我们做一些计算:

62 classes x 5 folds x 4 values of C x 4 values of Gamma = 4960 SVMs

您始终可以减少折叠次数,这会降低搜索质量,但会减少大约 40% 的训练 SVM 的总量。

最昂贵的部分是,SVM 不太适合多标签分类。至少需要训练O(log n)模型(纠错码场景),O(n)(libsvm one-vs-all)甚至O(n^2)(one-vs-one场景),达到最佳效果)。

也许切换到一些快速的多标签模型会更有价值?比如一些 ELM(极限学习机)?

【讨论】:

以上是关于网格搜索中的交叉验证非常慢(libsvm)的主要内容,如果未能解决你的问题,请参考以下文章

交叉验证与网格搜索

libsvm 交叉验证与 matlab 中的预计算内核

我是不是需要同时执行网格搜索(使用交叉验证)和交叉验证方法?

对网格搜索中的所有组合使用交叉验证

机器学习交叉验证和网格搜索

交叉验证和网格搜索有啥区别?