在前面SVM一文中,我们解得的支持向量机在原始空间中是对训练数据能精确划分的如下图所示。可想而知,有大概率会出现过拟合的问题。这样的支持向量机的泛化能力较差。
因此我们需要一种方式修改支持向量机,允许一些训练数据点被误分类,从而获得一个更好的泛化能力。我们允许数据点在边缘边界的错误侧,同时增加一个惩罚项,这个惩罚项随着与决策边界的距离的增大而增大。我们令这个惩罚项是距离的线性函数,为了实现它我们引入了松弛变量 ξ n ≥ 0 \xi_{n}\geq0 ξn≥0,这样每个训练数据点都有一个松弛变量。对于位于正确的边缘边界内部的点或者边缘上的点 ξ n = 0 \xi_{n}=0 ξn=0。对于其他的点, ξ n = ∣ t n − y ( x n ) ∣ \xi_{n}=|t_{n}-y(x_{n})| ξn=∣tn−y(xn)∣。因此对于位于决策边界 y ( x n ) = 0 y(x_{n})=0 y(xn)=0上的点, ξ n = 1 \xi_{n}=1 ξn=1,并且 ξ n > 1 \xi_{n}>1 ξn>1就是被误分类的点,所以被精确分类的点满足 t n y ( x n ) ≥ 1 − ξ n , n = 1 , . . . , N t_{n}y(x_{n})\geq 1-\xi_{n},\quad n=1,...,N tny(xn)≥1−ξn,n=1,...,N
从上图中我们可以看到 ξ n = 0 \xi_{n}=0 ξn=0的数据点被正确分类,要么位于边缘上,要么在边缘正确的一侧。 0 < ξ n < = 1 0<\xi_{n}<=1 0<ξn<=1的数据点位于边缘内部,但还是在决策边界的正确一侧。 ξ n > 1 \xi_{n}>1 ξn>1的数据点位于决策边界的错误一侧,是被错误分类的点。
所以这种方法有时被描述成放宽边缘的硬限制,得到一个软边缘,并且能允许一些训练数据点被错分。同时这种方法对异常点很敏感,因为误分类的惩罚随着 ξ \xi ξ线性增加。最终我们得到这样一个误差函数 C ∑ n = 1 N ξ n + 1 2 ∣ ∣ w ∣ ∣ 2 C\sum_{n=1}^{N}\xi _{n}+\frac{1}{2}||w||^{2} Cn=1∑Nξn+