【自学笔记】支持向量机(4)——支持向量回归SVR
引入
SVM解决了分类问题,而用类似方法解决回归问题的模型称为支持向量回归 。目标是得到一个模型,使输出的f(x⃗)f(\vec{x})与yy尽可能接近。
传统的回归模型直接计算f(x⃗)f(\vec{x})与yy的差距作为损失,当两者完全相等时损失为0;而SVR加入了支持向量,使得模型能够容忍ε\varepsilon的偏差,即在距离f(x)f(x)不超过ε\varepsilon的样本被认为预测正确,损失为0。

建立数学模型
根据上述,类似SVM,我们可以写出SVR的损失函数和问题转化:
minw⃗,b 12∣∣w⃗∣∣2+C∑i=1mℓε(f(x⃗i)−yi)min_{\vec{w}, b}\ \frac{1}{2}||\vec{w}||{2}+C\sum_{i=1}{m}\ell {\varepsilon}(f(\vec{x}{i})-y_{i})
其中 ℓε(z)={0, if ∣z∣≥ε;∣z∣−ε, otherwise.\ell _{\varepsilon}(z)=称为ε−\varepsilon-不敏感损失函数(ε\varepsilon-insensitive loss)
接下来就是经典的拉格朗日法处理二次规划问题。引入松弛变量ξi\xi_{i}和ξ^i\hat{\xi}_{i}:
minw⃗,b 12∣∣w⃗∣∣2+C∑i=1m(ξi+ξ^i)min_{\vec{w}, b}\ \frac{1}{2}||\vec{w}||{2}+C\sum_{i=1}{m}(\xi_{i}+\hat{\xi}_{i})
s.t. {f(x⃗i)−yi≤ε+ξi;yi−f(x⃗i)≤ε+ξi;ξi≥0,ξ^i≥0, i=1,2,...,m.s.t.\
这里使用双松弛变量,可以更好地处理边界误差,因为误差不一定是对称的。
接下来引入拉格朗日乘子得到拉格朗日函数:
μi≥0,μi≥0,αi≥0,αi≥0\mu_{i} \ge 0,\hat{\mu}{i} \ge 0,\alpha{i} \ge 0, \hat{\alpha}{i} \ge 0
L(w⃗,b,α,α,ξ,ξ,μ,μ^)L(\vec{w},b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu})
=12∣∣w⃗∣∣2+C∑i=1m(ξi+ξi)−∑i=1mμiξi−∑i=1mμiξi=\frac{1}{2}||\vec{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}
+∑i=1mαi(f(x⃗i)−yi−ε−ξi)+∑i=1mαi(yi−f(x⃗i)−ε−ξi)+\sum_{i=1}{m}\alpha_{i}(f(\vec{x}{i})-y{i}-\varepsilon-\xi_{i})+\sum_{i=1}^{m}\alpha_{i}(y_{i}-f(\vec{x}{i})-\varepsilon-\hat{\xi}{i})
令LL对w⃗,b,ξi,ξ^i\vec{w},b,\xi_{i},\hat{\xi}_{i}偏导为0得:
w⃗=∑i=1m(αi−αi)x⃗i\vec{w}=\sum_{i=1}{m}(\hat{\alpha}{i}-\alpha{i})\vec{x}{i}
0=∑i=1m(αi−αi)0=\sum_{i=1}{m}(\hat{\alpha}{i}-\alpha_{i})
C=αi+μi=αi+μiC=\alpha_{i}+\mu_{i}=\hat{\alpha}{i}+\hat{\mu}{i}
代回得到对偶问题:
maxα,α∑i=1myi(αi−αi)−ε(α^i+αi)max_{\alpha, \hat{\alpha}}\sum_{i=1}^{m}y_{i}(\hat{\alpha}{i}-\alpha{i})-\varepsilon(\hat{\alpha}{i}+\alpha{i})
−12∑i=1m∑j=1m(α^i−αi)(α^j−αj)x⃗iTx⃗j\ \ \ \ \ \ \ \ \ \ \ \ \ \ -\frac{1}{2}\sum_{i=1}{m}\sum_{j=1}^{m}(\hat{\alpha}_{i}-\alpha_{i})(\hat{\alpha}_{j}-\alpha_{j})\vec{x}_{i}^{T}\vec{x}_{j}
s.t.∑i=1m(α^i−αi)=0,s.t. \sum_{i=1}^{m}(\hat{\alpha}{i}-\alpha{i})=0,
0≤αi,α^i≤C.\ \ \ \ \ \ 0 \le \alpha_{i}, \hat{\alpha}_{i} \le C.KKT条件:
\\ (C-\hat{\alpha} _{i})\hat{\xi} _{i}=0.
有αi\alpha_{i}与f(x⃗i)−yi−ε−ξif(\vec{x}{i})-y{i}-\varepsilon -\xi_{i}不能同时非零;α^i\hat{\alpha} {i}和yi−f(x⃗i)−ε−ξ^iy{i}-f(\vec{x}_{i})-\varepsilon -\hat{\xi} _{i}不能同时非零。
而f(x⃗i)−yi−ε−ξif(\vec{x}{i})-y{i}-\varepsilon -\xi_{i}与yi−f(x⃗i)−ε−ξ^iy_{i}-f(\vec{x}{i})-\varepsilon -\hat{\xi} {i}不可能同时为0(支持向量的意义)。所以αi\alpha{i}和α^i\hat{\alpha}{i}至少有一个为00。
代回后解得:
f(x)=∑i=1m(αi−αi)x⃗iTx⃗+bf(x)=\sum_{i=1}{m}(\hat{\alpha}{i}-\alpha{i})\vec{x}_{i}^{T}\vec{x}+b
其中,一定存在ii,使得0<αi<C0<\alpha_{i}<C从而使ξi=0\xi_{i}=0,进而推出bb:
b=yi+ε−∑j=1m(αj−αj)x⃗jTx⃗ib=y_{i}+\varepsilon-\sum_{j=1}{m}(\hat{\alpha}{j}-\alpha{j})\vec{x}{j}^{T}\vec{x}{i}
加上特征映射与核函数,有:
f(x)=∑i=1m(αi−αi)κ(x⃗i,x⃗)+bf(x)=\sum_{i=1}{m}(\hat{\alpha}{i}-\alpha{i})\kappa(\vec{x}_{i},\vec{x})+b
