使用libsvm调整svm

时间:2013-05-29 14:15:08

标签: matlab libsvm

我是使用LIBSVM软件包的新手。我知道调整参数很重要,但我有几个问题。

如何选择正确的内核?我知道线性是最快的,但什么时候应该使用另一个呢?只有当精度太低或是否有其他方法来编程自动选择正确的内核?

其次,有没有一种有效的方法来调整matlab中的SVM?我唯一能想到的是为我想测试的每个参数制作嵌套的for - 循环,然后用分类器进行训练和预测。对于那些基本的东西来说,这是很多代码......

2 个答案:

答案 0 :(得分:2)

  

如何选择正确的内核?我知道线性是最快的,但什么时候应该使用另一个呢?只有当精度太低或是否有其他方法来编程自动选择正确的内核?

最好的方法始终是从线性内核开始。如果您正在处理大型数据集(数千个维度中的数十万个实例),您可能需要使用专门的线性包(例如LIBLINEAR)或集合方法(EnsembleSVM)。请注意,后者尚未具有正确的接口。

如果你有高维稀疏数据,线性内核通常表现得非常好,即使与更复杂的内核相比也是如此。

通常,如果使用线性内核的准确性不够,最好的选择是使用RBF内核。众所周知,它们在大多数数据集上表现都很好。但是,当你切换到RBF内核时,你需要调整内核参数gamma

  

其次,有没有一种在matlab中调优SVM的有效方法?

是的! LIBSVM在训练期间使用-v k标志提供k倍交叉验证。当您提供此选项时,培训将产生交叉验证的准确性(分类)或mse(回归)而不是模型。但是,您仍然需要遍历参数元组。

答案 1 :(得分:0)

检查以下给定的链接。好的代码片段,特别是使用三种不同的比例使用交叉验证来显示参数的调整。希望有所帮助!

https://sites.google.com/site/kittipat/libsvm_matlab/demo_libsvm_crossvalidation