人工智能从入门到放弃完整教程目录:https://www.cnblogs.com/nickchen121/p/11686958.html
支持向量回归
传统回归模型如线性回归,对于样本\((x,y)\)是直接基于模型,通过预测值\(f(x_i){y}\)和真实值\(y\)之间的差别计算损失,并且当\(f(x_i){y}=y\)时损失才为零。
支持向量回归(support vector regression, SVR)则可以容忍\(f(x_i){y}\)和\(y\)之间有最多\(\epsilon\)的偏差,即当\(|f(x_i){y}-y|>\epsilon\)的时候才计算损失,这相当于以\(f(x_i){y}\)为中心,构建了一个宽度为\(2\epsilon\)的间隔带,如果样本落入间隔带,则他的分类就是正确的。
一、支持向量回归学习目标
- 支持向量机和支持向量回归的优化问题
- 支持向量回归目标函数的对偶形式
- 支持向量回归模型系数的稀疏性
- 核支持向量回归
- 支持向量机的优缺点
二、支持向量回归详解
2.1 支持向量机目标函数优化问题回顾
线性可分SVM目标函数优化问题为
\[\begin{align}
& \underbrace{\min}_{\omega,b} {\frac{1}{2}}{||\omega||}^2 \\
& s.t. \quad y_i(\omega{x_i}+b)\geq1, \quad i=1,2,\ldots,m
\end{align}
\]
线性SVM由于在目标函数中加入了松弛因子\(\xi_i>0\),目标函数优化问题为
\[\begin{align}
& \underbrace{\min}_{\omega,b,\xi} {\frac{1}{2}}{||\omega||}^2 + C\sum_{i=1}^m\xi_i \\
& s.t. \quad y_i(\omega{x_i}+b)\geq1-\xi_i, \quad i=1,2,\ldots,m \\
& \quad\quad \xi_i\geq0, \quad i=1,2,\ldots,m
\end{align}
\]
2.2 支持向量回归损失度量函数
支持向量回归由于有一个间隔带,因此它的损失度量函数为
\[l(f(x_i),y_i) =
\begin{cases}
0, & if\,|f(x_i)-y_i|\leq\epsilon \\
|f(x_i)-y_i|-\epsilon, & if\,|f(x_i)-y_i|>\epsilon \\
\end{cases}
\]
2.3 支持向量回归目标函数优化问题
由于SVR的间隔带是自己引入的,所以SVR的目标函数变为
\[\underbrace{\min}_{\omega,b}\,{\frac{1}{2}}{||\omega||}^2 + C\sum_{i=1}^ml(f(x_i)-y_i)
\]
如果和线性SVM一样引入松弛因子,但是由于我们的误差度量中的\(|f(x_i)-y_i|\leq\epsilon\)是绝对值小于,因此这个不等式其实是两个不等式,则SVR需要引入两个松弛因子\(\xi_i\)和\(\hat{\xi_i}\),则SVR的优化问题将变成
\[\underbrace{\min}_{\omega,b,\xi_i,\hat{\xi_i}}{\frac{1}{2}}||w||^2+C\sum_{i=1}^m(\xi_i+\hat{\xi_i})
\]
\[\begin{align}
s.t. & f(x_i)-y_i\leq\epsilon+\xi_i, \\
& y_i-f(x_i)\leq\epsilon+\hat{\xi_i}, \\
& \xi_i\geq0,\hat{\xi_i}\geq0,\,i=1,2,\cdots,m
\end{align}
\]
对SVR的优化问题引入拉格朗日乘子\(\mu_i\geq0,\hat{\mu_i}\geq0,\alpha_i\geq0,\hat{\alpha_i}\geq0\),通过拉格朗日乘子法即可得到拉格朗日函数
\[\begin{align}
& L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu}) \\
& = \frac{1}{2}||w||^2+C\sum_{i=1}^m(\xi_i+\hat{\xi_i})-\sum_{i=1}^m\mu_i\xi_i-\sum_{i=1}^m\hat{\mu_i}\hat{\xi_i} \\
& +\sum_{i=1}^m\alpha_i(f(x_i)-y_i-\epsilon-\xi)+\sum_{i=1}^m\hat{\alpha_i}(y_i-f(x_i)-\epsilon-\hat{\xi_i})
\end{align}
\]
2.4 支持向量回归目标函数对偶形式
通过拉格朗日即可得到支持向量回归目标函数的原始形式
\[\underbrace{min}_{w,b,\xi_i,\hat{\xi_i}} \quad \underbrace{max}_{\mu_i\geq0,\hat{\mu_i}\geq0,\alpha_i\geq0,\hat{\alpha_i}\geq0} L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu})
\]
可以发现支持向量回归的目标函数的原始形式也满足KTT条件,即可以通过拉格朗日对偶将我们的问题转化为等价的对偶问题,即
\[\underbrace{max}_{\mu_i\geq0,\hat{\mu_i}\geq0,\alpha_i\geq0,\hat{\alpha_i}\geq0} \quad \underbrace{min}_{w,b,\xi_i,\hat{\xi_i}}L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu})
\]
首先求优化函数对让\({w,b,\xi_i,\hat{\xi_i}}\)的极小值,再求拉格朗日乘子\({\mu_i,\hat{\mu_i},\alpha_i,\hat{\alpha_i}}\)的极大值,即先得到拉格朗日函数\(L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu})\)分别对\(w,b,\xi_i,\hat{\xi_i}\)求偏导为0可得
\[\begin{align}
& w = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)x_i, \\
& 0 = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i), \\
& C = \alpha_i + \mu, \\
& C = \hat{\alpha_i} + \hat{\mu_i},
\end{align}
\]
将拉格朗日函数对\(w,b,\xi_i,\hat{\xi_i}\)的偏导代入拉格朗日函数,即可得SVR的对偶问题
\[\underbrace{max}_{\alpha,\hat{\alpha}} \sum_{i=1}^my_i(\hat{\alpha_i}-\alpha_i)-\epsilon(\hat{\alpha_i}+\alpha_i) - \frac{1}{2} \sum_{i=1}^m\sum_{j=1}^m(\hat{\alpha_i}-\alpha_i)(\hat{\alpha_i}-\alpha_j)x_i^Tx_j
\]
\[\begin{align}
s.t. & \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)=0 \\
& 0\leq\alpha_i,\hat{\alpha_i}\leq{C}
\end{align}
\]
对于上述SVR的目标函数的对偶形式取对数,即可变成最小化目标函数的优化问题,即
\[\underbrace{min}_{\alpha,\hat{\alpha}} -\sum_{i=1}^my_i(\hat{\alpha_i}-\alpha_i)+\epsilon(\hat{\alpha_i}+\alpha_i) + \frac{1}{2} \sum_{i=1}^m\sum_{j=1}^m(\hat{\alpha_i}-\alpha_i)(\hat{\alpha_i}-\alpha_j)x_i^Tx_j
\]
\[\begin{align}
s.t. & \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)=0 \\
& 0\leq\alpha_i,\hat{\alpha_i}\leq{C}
\end{align}
\]
对于这个目标函数,依然可以使用SMO算法求出对应的\(\alpha_i,\hat{\alpha_i}\),进而求出回归模型的\(w,b\)。
2.5 支持向量回归模型系数的稀疏性
在对支持向量回归的目标函数优化的时候,我们假设该目标函数满足KKT条件,该KKT条件为
\[\begin{cases}
\alpha_i(f(x_i)-y_i-\epsilon-\xi_i)=0, \\
\hat{\alpha_i}(y_i-f(x_i)-\epsilon-\hat{\xi_i})=0, \\
\alpha_i\hat{\alpha_i}=0,\xi_i\hat{\xi_i}=0, \\
(C-\alpha_i)\xi_i=0,(C-\hat{\alpha_i}\hat{\xi_i}=0
\end{cases}
\]
从上式可以看出,只有当\(f(x_i)-y_i-\epsilon-\xi_i=0\)的时候\(\alpha_i\)才可以为非0解,并且只有当\(y_i-f(x_i)-\epsilon-\hat{\xi_i}=0\)的时候\(\hat{\alpha_i}\)才可以为非0解。
首先根据松弛变量的定义,如果\(|f(x_i)-y_i-\epsilon-\xi_i|<\epsilon\),则样本点落在间隔带中,则\(\xi_i=0,\hat{\xi_i}=0\),既可以得到\(f(x_i)-y_i-\epsilon-\xi_i\neq0,y_i-f(x_i)-\epsilon-\hat{\xi_i}\neq0\),则可以得到\(\alpha_i=0,\hat{\alpha_i}=0\),则\(\hat{\alpha_i}-\alpha_i=0\)。
即只有样本点\((x_i,y_i)\)不落入间隔带中才能使得相应的\(\alpha_i\)和\(\hat{\alpha_i}\)为非0解,并且由于样本点既不能同时在分隔超平面的两边,即\(f(x_i)-y_i-\epsilon-\xi_i=0\)和\(y_i-f(x_i)-\epsilon-\hat{\xi_i}=0\)不能同时存在,即\(\alpha_i\)和\(\hat{\alpha_i}\)至少有一个为0并且不能同时为0,则\(\hat{\alpha_i}-\alpha_i\neq0\)。
假设\(\alpha_i\)已经通过SMO算法得到,则可以得到\(w=\sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)x_i\),即可得SVR的分离超平面为
\[f(x) = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)x_i^Tx+b
\]
从上式可以看出当样本点落在间隔带,由于\(\hat{\alpha_i}-\alpha_i=0\),即\(w=0\),则\(w\)不受这些间隔带内点的影响,对于间隔带外的样本点,则会对\(w\)造成影响,即这些点为SVR的支持向量。并且由于SVR的支持向量仅仅是训练样本的一部分,所以SVR的解\(w\)具有稀疏性。
SVR对于\(b\)的求解类似于SVM,由于能得到多个\(b\)值,所以最后对\(b\)取平均值。
2.6 核支持向量回归
上一节得到了SVR的分离超平面为
\[f(x) = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)x_i^Tx+b
\]
如果我们使用和SVM一样的核技巧,即对SVR训练数据做一个样本映射,即另\(\phi(x)\)表示\(x\)映射后的特征向量。则分离超平面可以变为
\[\begin{align}
f(x) & = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)\phi{(x_i)}^T\phi{(x)}+b \\
& = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)k(x,x_i)+b
\end{align}
\]
其中\(k(x,x_i)\)为核函数。
三、小结
SVR除了可以支持回归问题外,其他方面和SVM差不多,由于SVR也算作是SVM的一个分支,此处不多说什么,参考SVM即可。