【机器学习】SVM之回归模型

review

先回顾一下在基本线性可分情况下的SVM模型:

分类svm模型中要让训练集中的各个样本点尽量远离自己类别一侧的支持向量。

其实回归模型也沿用了最大间隔分类器的思想。

\varepsilon -insensitive误差函数

对于回归模型,优化目标函数和分类模型保持一致,依然是\min_{w,b}\frac{\left \| w \right \|^2}{2},但是约束条件不同。我们知道回归模型的目标是让训练集中的每个样本点(x_i,y_i),尽量拟合到一个线性模型y_i=w^Tx_i+b上。对于一般的回归模型,我们是用均方误差作为损失函数的,但SVM不是这样定义损失函数的。

SVM回归算法采用\varepsilon -insensitive误差函数,\varepsilon -insensitive误差函数定义为,如果预测值\hat{y_i}与真实值y_i之间的差值\left | \hat{y_i}-y_i \right |\leq \epsilon,则不产生损失,否则,损失代价为\left | \hat{y_i}-y_i \right |-\epsilon

如下图所示,在蓝色带里面的点都是没有损失的,但是外面的点是有损失的,损失大小为红色线的长度。

æ¯æåéæºï¼SVMï¼çåå½æ¨¡å

总结一下,SVM回归模型的损失函数度量为:

下图为\varepsilon -insensitive误差函数与平方误差函数的图形 

è¿éåå¾çæè¿°

目标函数

观察上述的 E_\epsilon 误差函数的形式,可以看到,实际形成了一个类似管道的样子,在管道中样本点,不做惩罚,所以被称为\epsilon -tube,如下图阴影红色部分 

è¿éåå¾çæè¿°

采用 E_\epsilon 替代平方误差项,因此可以定义最小化误差函数作为优化目标:

这个损失函数与从最大间隔分类推过来的不太相似,可以参考我写的从LR到SVM这篇文章,将二分类的Hinge Loss换成\varepsilon -insensitive误差函数就可以了。

由于上述目标函数含有绝对值项不可微。我们可以转化成一个约束优化问题,常用的方法是为每一个样本数据定义两个松弛变量\xi_i\geq0,\hat{\xi_i}\geq0,表示度量真实值 \hat{y_i}\epsilon -tube的距离。 

当样本点真实值 \hat{y_i} 位于管道上方时,\xi_i>0 ,写成表达式:\hat{y_i}>w^Tx_i+b+\epsilon时,\xi_i>0\hat{\xi_i}=0; 

当样本点真实值 \hat{y_i} 位于管道下方时,\hat{\xi_i}>0 ,写成表达式:\hat{y_i}<w^Tx_i+b-\epsilon时,\xi_i=0\hat{\xi_i}>0; 

因此使得每个样本点位于管道内部的条件为:

当 \hat{y_i}  位于管道上方时,\xi_i>0,有\hat{y_i}-(w^Tx_i+b)-\xi_i\leq\epsilon 
当 \hat{y_i}  位于管道下方时,\hat{\xi_i}>0,有(w^Tx_i+b)-\hat{y_i}-\hat{\xi_i}\leq\epsilon

误差函数可以写为一个凸二次优化问题:

拉格朗日对偶

和SVM分类模型一样,我们也可以用拉格朗日函数将目标优化函数变成无约束的形式:

其中{\alpha }\geq 0,\hat{\alpha}\geq 0,{\mu }\geq 0,\hat{\mu}\geq 0是拉格朗日的系数。

满足约束下 max L= f ,拉格朗日系数都为0,min max L=min f。若不满足约束max L=无穷大,min max L无解。即min max L在约束内的解就是min f 的解。在约束外无解。因此求解min max L得到的解就是在约束内min f的解.

求解问题转化为min max L,对偶问题为max min L.先对w,b,\xi_i,\hat{\xi_i}求偏导数:

带回到拉格朗日函数中去,化简得到只关于\alpha_i,\hat{\alpha_i}的函数,目标即最大化此函数。 

约束条件为:

0\leq\alpha_i\leq C\\

0\leq\hat{\alpha_i}\leq C\\

其中\kappa(x_i,x_j) = (x_i)^Tx_j为向量内积。现在为线性核,也可以更换为高斯核之类的非线性核函数。

下面考虑KKT条件:

由式(1),(2)知: 
\alpha_i> 0时,必有\epsilon+\xi_i+w^Tx_i+b-\hat{y_i}=0,\xi_i\geq0,这些点位于管道上方边界处,或者管道上面。 预测值比真实值小了。
\hat{\alpha_i}> 0时,必有\epsilon+\hat{\xi_i}-(w^Tx_i+b)+\hat{y_i}=0,\hat{\xi_i}\geq0,这些点位于管道下方边界处,或者管道下面。 预测值比真实值大了。

同时,由式(1),(2)知,对于任意一个数据点,由于\epsilon >0,则\alpha_i,\hat{\alpha_i}不可能同时都大于0,而且得到在管道内部的点,必然有\alpha_i=0,\hat{\alpha_i}=0。 

è¿éåå¾çæè¿°

超平面计算

根据前面的计算已经可以得到w=\sum _{i=1}^N(\alpha_i-\hat{\alpha_i})x_i

现在来计算b的值

由上述的分析,影响超平面参数的点为位于管道边界处,或者管道外面。 
关于b的计算,可以考虑在管道上方边界处一个点必然有: 

\xi_i=0

\epsilon+\xi_i+w^Tx_i+b-\hat{y_i}=0

可以解得:

b=\hat{y_i}-\epsilon -w^Tx_i\\\ \ \ =\hat{y_i}-\epsilon -\sum _{j=1}^N(\alpha_j-\hat{\alpha_j})(x_j)^Tx_i\\=\hat{y_i}-\epsilon -\sum _{j=1}^N(\alpha_j-\hat{\alpha_j})\kappa(x_i,x_j)

则预测函数为

y(x)=w^Tx+b\\=\sum _{i=1}^N(\alpha_i-\hat{\alpha_i})(x_i)^Tx+b\\=\sum _{i=1}^N(\alpha_i-\hat{\alpha_i})\kappa(x_i,x)+\hat{y_j}-\epsilon -\sum _{i=1}^N(\alpha_i-\hat{\alpha_i})\kappa(x_i,x_j)

其中(x_j,\hat{y_j})为超平面管道上平面边界上的一点。

SVM回归模型系数的稀疏性

可以发现,对于\left | \hat{y_i}-w^Tx_i-b \right |<\epsilon的点(x_i,\hat{y_i})(不包括边界),必有\xi_i=0,\hat{\xi_i}=0

此时有\epsilon +\xi_i+w^Tx_i+b-\hat{y_i}\neq0,\epsilon +\hat{\xi_i}-(w^Tx_i+b)+\hat{y_i}\neq0,要满足KKT条件,则\alpha_i=0,\hat{\alpha_i}=0

我们定义样本系数\beta_i=\alpha_i-\hat{\alpha_i},根据上面w的计算式

w=\sum _{i=1}^N(\alpha_i-\hat{\alpha_i})x_i=\sum _{i=1}^N\beta_ix_i

我们发现此时\beta_i=0,也就是说w不受这些在误差范围内的点的影响。对于在边界上或者在边界外的点,\alpha_i>0,\hat{\alpha_i}>0,此时。

\beta_i\neq0。即w只受那些在tube管道边界及管道之外的点影响。同理b也是。


接下来有时间会详写SMO算法,发现在SMO优化算法必不可少啊。

SVM的优缺点及应用场景会在之后写一篇,与LR等算法做一下对比。

参考文章

SVM解回归问题

支持向量机(SVM)的回归模型