更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:
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})为中心,构建了一个宽度为(2epsilon)的间隔带,如果样本落入间隔带,则他的分类就是正确的。
一、支持向量回归学习目标
- 支持向量机和支持向量回归的优化问题
- 支持向量回归目标函数的对偶形式
- 支持向量回归模型系数的稀疏性
- 核支持向量回归
- 支持向量机的优缺点
二、支持向量回归详解
2.1 支持向量机目标函数优化问题回顾
线性可分SVM目标函数优化问题为
[egin{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),目标函数优化问题为
[egin{align}
& underbrace{min}_{omega,b,xi} {frac{1}{2}}{||omega||}^2 + Csum_{i=1}^mxi_i \
& s.t. quad y_i(omega{x_i}+b)geq1-xi_i, quad i=1,2,ldots,m \
& quadquad xi_igeq0, quad i=1,2,ldots,m
end{align}
]
2.2 支持向量回归损失度量函数
支持向量回归由于有一个间隔带,因此它的损失度量函数为
[l(f(x_i),y_i) =
egin{cases}
0, & if\,|f(x_i)-y_i|leqepsilon \
|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 + Csum_{i=1}^ml(f(x_i)-y_i)
]
如果和线性SVM一样引入松弛因子,但是由于我们的误差度量中的(|f(x_i)-y_i|leqepsilon)是绝对值小于,因此这个不等式其实是两个不等式,则SVR需要引入两个松弛因子(xi_i)和(hat{xi_i}),则SVR的优化问题将变成
[underbrace{min}_{omega,b,xi_i,hat{xi_i}}{frac{1}{2}}||w||^2+Csum_{i=1}^m(xi_i+hat{xi_i})
]
[egin{align}
s.t. & f(x_i)-y_ileqepsilon+xi_i, \
& y_i-f(x_i)leqepsilon+hat{xi_i}, \
& xi_igeq0,hat{xi_i}geq0,\,i=1,2,cdots,m
end{align}
]
对SVR的优化问题引入拉格朗日乘子(mu_igeq0,hat{mu_i}geq0,alpha_igeq0,hat{alpha_i}geq0),通过拉格朗日乘子法即可得到拉格朗日函数
[egin{align}
& L(w,b,alpha,hat{alpha},xi,hat{xi},mu,hat{mu}) \
& = frac{1}{2}||w||^2+Csum_{i=1}^m(xi_i+hat{xi_i})-sum_{i=1}^mmu_ixi_i-sum_{i=1}^mhat{mu_i}hat{xi_i} \
& +sum_{i=1}^malpha_i(f(x_i)-y_i-epsilon-xi)+sum_{i=1}^mhat{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_igeq0,hat{mu_i}geq0,alpha_igeq0,hat{alpha_i}geq0} L(w,b,alpha,hat{alpha},xi,hat{xi},mu,hat{mu})
]
可以发现支持向量回归的目标函数的原始形式也满足KTT条件,即可以通过拉格朗日对偶将我们的问题转化为等价的对偶问题,即
[underbrace{max}_{mu_igeq0,hat{mu_i}geq0,alpha_igeq0,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可得
[egin{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}^msum_{j=1}^m(hat{alpha_i}-alpha_i)(hat{alpha_i}-alpha_j)x_i^Tx_j
]
[egin{align}
s.t. & sum_{i=1}^m(hat{alpha_i}-alpha_i)=0 \
& 0leqalpha_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}^msum_{j=1}^m(hat{alpha_i}-alpha_i)(hat{alpha_i}-alpha_j)x_i^Tx_j
]
[egin{align}
s.t. & sum_{i=1}^m(hat{alpha_i}-alpha_i)=0 \
& 0leqalpha_i,hat{alpha_i}leq{C}
end{align}
]
对于这个目标函数,依然可以使用SMO算法求出对应的(alpha_i,hat{alpha_i}),进而求出回归模型的(w,b)。
2.5 支持向量回归模型系数的稀疏性
在对支持向量回归的目标函数优化的时候,我们假设该目标函数满足KKT条件,该KKT条件为
[egin{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_ihat{alpha_i}=0,xi_ihat{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
eq0,y_i-f(x_i)-epsilon-hat{xi_i}
eq0),则可以得到(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
eq0)。
假设(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)映射后的特征向量。则分离超平面可以变为
[egin{align}
f(x) & = sum_{i=1}^m(hat{alpha_i}-alpha_i)phi{(x_i)}^Tphi{(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即可。