我是Matlab中SVM的新手,需要一些帮助。
我想使用Statistics Toolbox的build in function fitcsvm来训练支持向量机。 当然,有许多参数选择可以控制SVM的训练方式。
Matlab帮助是关于参数如何存档更好的训练结果的小工资。特别是参数' Box Contraint' 似乎对所选支持向量的数量和泛化质量有重要影响。
帮助(http://de.mathworks.com/help/stats/fitcsvm.html#bt8v_z4-1)说
一个参数,用于控制对违反边际的观察所施加的最大惩罚,并有助于防止过度拟合(正规化)。
如果增加框约束,则SVM分类器会分配较少的支持向量。但是,增加框约束可能会导致更长的训练时间。
这个参数究竟是如何使用的? 它是否与the Wikipedia参考中的软边际系数C相同或类似? 还是完全不同的东西?
感谢您的帮助。
答案 0 :(得分:13)
你肯定是在正确的道路上。虽然fitcsvm
文档中的描述(正如您在问题中发布的那样)非常简短,但您应该在MATLAB文档中查看Understanding Support Vector Machines站点。
在不可分离的情况下(通常称为软边际SVM),允许错误分类,代价是惩罚因子C
。然后,SVM的数学公式变为:
使用松弛变量s_i
导致惩罚项加权C
。
使C
变大会增加错误分类的权重,从而导致更严格的分离。
此因子C
称为框约束。
这个名称的原因是,在双优化问题的公式中,Langrange乘数被限制在范围[0,C]
内。
C
因此对拉格朗日乘数构成了一个框约束。
tl; dr 您的猜测是正确的,它是软边距SVM中的C
。