培训SVM的参数是什么

时间:2018-02-25 01:52:21

标签: machine-learning

我正在使用此库https://www.npmjs.com/package/machine_learning

使用SVM进行机器学习

根据SVM的例子:

svm.train({
    C : 1.1, // default : 1.0. C in SVM. 
    tol : 1e-5, // default : 1e-4. Higher tolerance --> Higher precision 
    max_passes : 20, // default : 20. Higher max_passes --> Higher precision 
    alpha_tol : 1e-5, // default : 1e-5. Higher alpha_tolerance --> Higher precision 

    kernel : { type: "polynomial", c: 1, d: 5}
    // default : {type : "gaussian", sigma : 1.0} 
    // {type : "gaussian", sigma : 0.5} 
    // {type : "linear"} // x*y 
    // {type : "polynomial", c : 1, d : 8} // (x*y + c)^d 
    // Or you can use your own kernel. 
    // kernel : function(vecx,vecy) { return dot(vecx,vecy);} 
});

参数C告诉SVM优化你想要避免错误分类每个训练样例的程度。

我不明白其他参数。

1 个答案:

答案 0 :(得分:1)

只需看一下软边距C-SVM的等式:

Primal C-SVM

它指出C定义了错误分类和保证金之间的权衡。必须根据您的数据选择足够大的数据。您还会在此处看到eps>0参数。这可能是您的tolerance参数,并将错误定义为目标函数中C参数加权的错误。

对于kernel parameters,请查看SVM的双重问题:

Dual SVM

您会看到术语K(x_i,x_j)。这称为Kernel-Function。此功能允许SVM学习非线性切割边界。因此,如果您的数据不是线性可分的,您可以使用这样的函数将数据(实际上是dot-product)转换为更高维度的特征空间,以便将它们分开。只需看一下本指南,它将教您有关SVM培训过程和一些最佳实践的基础知识:

https://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf