Matlab 中的 SVM:函数 fitcsvm 中参数“框约束”的含义

Posted

技术标签:

【中文标题】Matlab 中的 SVM:函数 fitcsvm 中参数“框约束”的含义【英文标题】:SVM in Matlab: Meaning of Parameter 'box constraint' in function fitcsvm 【发布时间】:2015-09-18 14:18:10 【问题描述】:

我是 Matlab 中 SVM 的新手,需要一些帮助。

我想使用 Statistics Toolbox 的内置函数 fitcsvm 训练支持向量机。 当然,有很多参数选择可以控制 SVM 的训练方式。

Matlab 帮助是关于参数如何存档更好的训练结果的一点点工资。尤其是参数'Box Contraint'似乎对选择的支持向量的数量和泛化质量有重要影响。

帮助 (http://de.mathworks.com/help/stats/fitcsvm.html#bt8v_z4-1) 说

控制对违反边距的观察施加的最大惩罚的参数,并有助于防止过度拟合(正则化)。

如果增加框约束,则 SVM 分类器分配的支持向量会更少。但是,增加框约束可能会导致更长的训练时间。

这个参数究竟是如何使用的? 是否与the Wikipedia 参考中的软边距因子 C 相同或类似? 还是完全不同的东西?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您绝对是在正确的道路上。虽然 fitcsvm 文档中的描述(正如您在问题中发布的那样)非常简短,但您应该查看 MATLAB 文档中的 Understanding Support Vector Machines 站点。

在不可分离的情况下(通常称为 Soft-Margin SVM),允许错误分类,代价是惩罚因子C。那么SVM的数学公式就变成了:

使用松弛变量s_i 导致惩罚项由C 加权。 使C 变大会增加错误分类的权重,从而导致更严格的分离。 这个因素C 称为框约束。 这个名字的原因是,在对偶优化问题的表述中,朗朗日乘数被限制在[0,C]的范围内。 C 因此对拉格朗日乘数构成了框约束。

tl;dr您的猜测是正确的,它是软边距 SVM 中的 C

【讨论】:

谢谢...关于框约束的最佳值的任何提示? @user836026 不可能为此设置 1 个最佳值。您通常最终会调整框约束以优化 SVM 的性能。 MATLAB 文章Understanding SVMs 中给出了一些很好的细节。 我为“BoxConstraint”尝试了不同的值,但结果没有变化。 很好的描述。第一个公式的一个小错误:约束似乎是错误的,你想增加你的数据 x 到超平面 w 的距离,所以内积是 而不是 。你能更新你链接到的图片吗? 哦,当然,你是对的@JStrahl。我相应地更新了方程。 (注意:我使用online LaTeX equation editor 创建了方程,因此很容易重新创建)

以上是关于Matlab 中的 SVM:函数 fitcsvm 中参数“框约束”的含义的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB fitcSVM 权重向量

matlab_fitcsvm & fitcecoc函数示例学习

matlab中用svm如何做多类别分类(R2013a)?

matlab SVM 返回 NaN

在 Matlab 中用 SVM 编写成本函数的正确方法 - 无法理解“成本”矩阵

MATLAB SVM:使用相同的数据集进行训练和测试会产生不同的结果