使用libsvm调整svm

4

我刚开始使用LIBSVM包,意识到参数调整很重要,但是有几个问题。

如何选择正确的核函数?我知道线性核最快,但是什么情况下我们应该使用其他核函数?只有当准确率过低时才应该使用吗?还是有其他自动选择正确核函数的方法?

其次,在Matlab中调整SVM的方法是否高效?我能想到的唯一方法就是为每个要测试的参数制作嵌套的 for-loops,然后用分类器进行训练和预测。对于这么基本的东西,这需要很多代码...

2个回答

2
如何选择正确的核函数?我知道线性核函数是最快的,但我们什么时候应该使用其他核函数?只有当准确度太低时才需要吗?还是有其他方法来编程自动选择正确的核函数?
最好的方法始终是从线性核函数开始。如果您正在处理大型数据集(数千个维度中的数十万个实例),则可能需要使用专门的线性软件包(例如LIBLINEAR)或集成方法(EnsembleSVM)。请注意,后者尚未具有适当的接口。
如果您有高维稀疏数据,则线性核函数通常表现非常出色,甚至可以与更复杂的核函数进行比较。
通常情况下,如果您使用线性核函数的准确度不够,最好的选择是使用RBF核函数。它们被认为在大多数数据集上表现非常好。但是,当您切换到RBF核函数时,您需要调整核参数“gamma”。
其次,是否有一种有效的方法在Matlab中调整SVM?
是的!LIBSVM提供了k折交叉验证,使用训练期间的“-v k”标志。当您提供此选项时,训练将产生交叉验证准确度(分类)或mse(回归),而不是模型。但是,您仍然需要循环遍历参数元组。

我不知道你提到的标志,这确实有帮助。谢谢。 - Jeff Dun
1
你也可以使用grid.py来微调Cgamma参数。 - Mihai Todor

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接