【问题标题】:What are the parameters for training SVM训练SVM的参数是什么
【发布时间】:2018-08-04 18:54:28
【问题描述】:

我正在使用这个库 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 优化您希望避免对每个训练示例进行错误分类的程度。

其他参数我不明白。

【问题讨论】:

    标签: machine-learning


    【解决方案1】:

    看看soft-margin的方程C-SVM

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

    对于kernel parameters,看一下SVM的对偶问题:

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

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

    【讨论】:

    • 很好的答案但是,我还是不明白参数 tol : 1e-5, max_passes : 20, alpha_tol : 1e-5,
    • 有趣的是,这没有很好的记录。医生只是说如果一个人“不是专业人士”(npmjs.com/package/svm),就不应该碰它们。我确定这是针对优化算法的,但它可能不是 SMO 算法。他们还提供 libSVM,我可以推荐。它使用 SMO 算法,并且有据可查,您不会拥有这些参数。看一看:npmjs.com/package/libsvm-js。研究社区在 matlab、C++ 或 Java 中也大量使用它。
    • 我有一个问题,每一排训练女巫都是他的名字吗?
    • 我不明白你的问题。
    • 按照我在回答您的问题时的建议尝试
    猜你喜欢
    • 2021-05-13
    • 2015-09-26
    • 2015-05-04
    • 2015-07-25
    • 2018-04-28
    • 2013-10-07
    • 2016-08-09
    • 2015-08-14
    • 2015-06-24
    相关资源
    最近更新 更多