我是使用LIBSVM软件包的新手.我知道调整参数很重要,但我有几个问题.
如何选择正确的内核?我知道线性是最快的,但什么时候应该使用另一个呢?只有当精度太低或是否有其他方法来编程自动选择正确的内核?
其次,有没有一种有效的方法来调整matlab中的SVM?我唯一能想到的是为我想要测试的每个参数创建嵌套的for循环,然后使用分类器进行训练和预测.对于那些基本的东西来说,这是很多代码……
最佳答案
How to choose the correct kernel? I know linear is fastest, but when should we use another one? Only if the accuracy is too low or is there some other way to program automatic selection of the correct kernel?
最好的方法始终是从线性内核开始.如果您正在处理大型数据集(数千个维度中的数十万个实例),您可能需要使用专门的线性包(例如LIBLINEAR)或集合方法(EnsembleSVM).请注意,后者还没有合适的matlab接口.
如果你有高维稀疏数据,线性内核通常会表现得非常好,即使与更复杂的内核相比也是如此.
通常,如果使用线性内核的准确性不够,最好的选择是使用RBF内核.众所周知,它们在大多数数据集上表现都很好.但是,当您切换到RBF内核时,您将需要调整内核参数gamma.
Secondly, is there an efficient way to tune SVM in matlab?
是! LIBSVM在训练期间使用-v k标志提供k倍交叉验证.当您提供此选项时,培训将产生交叉验证的准确性(分类)或mse(回归)而不是模型.但是,您仍然需要遍历参数元组.