我正在使用此库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优化你想要避免错误分类每个训练样例的程度。
我不明白其他参数。
答案 0 :(得分:1)
只需看一下软边距C-SVM
的等式:
它指出C
定义了错误分类和保证金之间的权衡。必须根据您的数据选择足够大的数据。您还会在此处看到eps>0
参数。这可能是您的tolerance
参数,并将错误定义为目标函数中C
参数加权的错误。
对于kernel parameters
,请查看SVM
的双重问题:
您会看到术语K(x_i,x_j)
。这称为Kernel-Function
。此功能允许SVM学习非线性切割边界。因此,如果您的数据不是线性可分的,您可以使用这样的函数将数据(实际上是dot-product
)转换为更高维度的特征空间,以便将它们分开。只需看一下本指南,它将教您有关SVM培训过程和一些最佳实践的基础知识: