我正在使用RBF内核的matlab函数。 在几个数据集上,随着我继续增加sigma值,支持向量的数量增加并且准确度增加。 在一个数据集的情况下,当我增加西格玛值时,支持向量减少并且准确度增加。 在RBF内核的情况下,我无法分析支持向量和精度之间的关系。
答案 0 :(得分:4)
支持向量的数量与准确度没有直接关系;它取决于数据的形状(以及您的C / nu参数)。
更高的sigma意味着内核是一个“更平坦的”高斯,因此决策边界“更平滑”;较低的sigma使其成为一个“更尖锐”的峰值,因此决策边界更灵活,并且如果它们是正确答案则能够再现奇怪的形状。如果西格玛非常高,您的数据点将产生非常广泛的影响;如果非常低,他们的影响力会非常小。
因此,通常,增加西格玛值将导致更多的支持向量:对于相同的决策边界或多或少,更多的点将落在边际内,因为点变得“更模糊”。然而,增加的sigma也意味着松弛变量“移动”点超过边界更昂贵,因此分类器可能最终得到更小的余量和更少的SV。当然,它也可能只是给你一个截然不同的决策边界,并且SV的数量完全不同。
就最大化准确性而言,您应该对C和sigma的许多不同值进行网格搜索,并选择能够在例如C和sigma上获得最佳性能的网格搜索。您的训练集上有3倍交叉验证。一种合理的方法是从例如2.^(-9:3:18)
代表C和median_eval * 2.^(-4:2:10)
;这些数字相当随意,但它们是我过去成功使用的数字。