4

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

如何选择正确的内核?我知道线性是最快的,但是我们什么时候应该使用另一个呢?仅当准确性太低或是否有其他方法可以对正确内核的自动选择进行编程?

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

4

2 回答 2

2

如何选择正确的内核?我知道线性是最快的,但是我们什么时候应该使用另一个呢?仅当准确性太低或是否有其他方法可以对正确内核的自动选择进行编程?

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

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

一般来说,如果您使用线性内核的精度不够,最好的选择是使用 RBF 内核。众所周知,它们在大多数数据集上都表现出色。gamma但是,当您切换到 RBF 内核时,您将需要调整内核参数。

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

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

于 2013-05-29T14:21:18.193 回答
0

检查下面给出的链接。不错的代码片段,特别是显示了使用三种不同尺度的交叉验证来调整参数。希望有帮助!

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

于 2014-03-19T04:42:24.330 回答