支持向量机
支持向量机是一种二类分类模型。他的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还宝包括核技巧,使得它实质上是非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划问题,也等价于正则化的合页损失函数的最小化问题。
当训练数据线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机,又称为硬间隔支持向量机。
当训练数据近似线性可分时,通过软间隔最大化,学习一个线性的分类器,即线性支持向量机,又称软间隔支持向量机。
当训练数据线性不可分时,通过核技巧及软间隔最大化,学习非线性支持向量机。
1 线性可分支持向量机与硬间隔最大化
1.1 线性可分支持向量机
给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为:
w∗x+b∗=0w^*x+b^*=0w∗x+b∗=0
以及相应的分类决策函数
f(x)=sign(w∗x+b∗)f(x)=sign(w^*x+b^*)f(x)=sign(w∗x+b∗)
称为线性可分支持向量机。
1.2 函数间隔和几何间隔
函数间隔对于给定的训练数据集TTT和超平面(w,b)(w,b)(w,b),定义超平面(w,b)(w,b)(w,b)关于样本点(xi,yi)(x_i,y_i)(xi,yi)的函数间隔为
γi^=yi(wxi+b)\widehat{\gamma_i}=y_i(wx_i+b)γi=yi(wxi+b)
定义超平面(w,b)(w,b)(w,b)关于训练集TTT的函数间隔为超平面(w,b)(w,b)(w,b)关于TTT中所有样本点(xi,yi)(x_i,y_i)(xi,yi)的函数间隔之最小值,即
γ^=mini=1,2,...,Nγi^\widehat{\gamma}=min_{i=1,2,...,N} \widehat{\gamma_i}γ=mini=1,2,...,Nγi
几何间隔对于给定的训练数据集TTT和超平面(w,b)(w,b)(w,b),定义超平面(w,b)(w,b)(w,b)关于样本点(xi,yi)(x_i,y_i)(xi,yi)的函数间隔为
γi=yi(w∣∣w∣∣xi+b∣∣w∣∣){\gamma_i}=y_i(\frac{w}{||w||}x_i+\frac{b}{||w||})γi=yi(∣∣w∣∣wxi+∣∣w∣∣b)
定义超平面(w,b)(w,b)(w,b)关于训练集TTT的函数间隔为超平面(w,b)(w,b)(w,b)关于TTT中所有样本点(xi,yi)(x_i,y_i)(xi,yi)的函数间隔之最小值,即
γ=mini=1,2,...,Nγi\gamma=min_{i=1,2,...,N} \quad \gamma_iγ=mini=1,2,...,Nγi
1.3 间隔最大化
SVM的学习基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。而感知机是基于函数间隔的。
c如何求得一个几何间隔最大的分离超平面,可以表示为下面的约束最优化问题:
maxw,bγmax_{w,b} \quad \gammamaxw,bγ
s.t.yi(w∣∣w∣∣xi+b∣∣w∣∣)≥γ s.t. \quad y_i(\frac{w}{||w||}x_i+\frac{b}{||w||}) \geq \gammas.t.yi(∣∣w∣∣wxi+∣∣w∣∣b)≥γ
考虑到几何间隔和函数间隔关系式,问题可以改写为:
maxw,bγ^∣∣w∣∣max_{w,b} \quad \frac{\hat\gamma}{||w||}maxw,b∣∣w∣∣γ^
s.t.yi(wxi+b)≥γ^ s.t. \quad y_i(wx_i+b) \geq \hat\gammas.t.yi(wxi+b)≥γ^
等价于:
minw,b∣∣w∣∣22min_{w,b} \quad \frac{||w||^2}{2}minw,b2∣∣w∣∣2
s.t.yi(wxi+b)−1≥0 s.t. \quad y_i(wx_i+b) -1 \geq 0s.t.yi(wxi+b)−1≥0
1.4 学习的对偶算法
应用拉格朗日对偶性求解支持向量机的最优化原始问题。
构造拉格朗日函数:
L(w,b,α)=∣∣w∣∣22−∑i=1Nαiyi(wxi+b)+∑i=1NαiL(w,b,\alpha)=\frac{||w||^2}{2} - \sum_{i=1}^N \alpha_iy_i(wx_i+b)+\sum_{i=1}^{N}\alpha_iL(w,b,α)=2∣∣w∣∣2−i=1∑Nαiyi(wxi+b)+i=1∑Nαi
原始问题的对偶问题是极大极小问题:
maxαminw,bL(w,b,α)max_{\alpha}min_{w,b}L(w,b,\alpha)maxαminw,bL(w,b,α)
(1)求minw,bL(w,b,α)min_{w,b}L(w,b,\alpha)minw,bL(w,b,α),对w,bw,bw,b求偏导并令其等于0,得到
w=∑i=1Nαiyixiw=\sum_{i=1}^N \alpha_iy_ix_iw=i=1∑Nαiyixi
∑i=1Nαiyi=0\sum_{i=1}^N \alpha_iy_i=0i=1∑Nαiyi=0
带入拉格朗日函数,可得:
minw,bL(w,b,α)=−12∑i=1N∑j=1Nαiαjyiyjxixj+∑i=1Nαimin_{w,b}L(w,b,\alpha)=-\frac{1}{2} \sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_jy_iy_jx_ix_j + \sum_{i=1}^N\alpha_iminw,bL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyjxixj+i=1∑Nαi
(2)求minw.bL(w,b,α)min_{w.b}L(w,b,\alpha)minw.bL(w,b,α)对α\alphaα的极大,即是对偶问题
maxα−12∑i=1N∑j=1Nαiαjyiyjxixj+∑i=1Nαimax_{\alpha} \quad -\frac{1}{2} \sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_jy_iy_jx_ix_j + \sum_{i=1}^N\alpha_imaxα−21i=1∑Nj=1∑Nαiαjyiyjxixj+i=1∑Nαi
s.t.∑i=1Nαiyi=0s.t.\quad \sum_{i=1}^N \alpha_iy_i=0s.t.i=1∑Nαiyi=0
αi≥0,i=1,2,3...,N\alpha_i \geq 0, i = 1,2,3...,Nαi≥0,i=1,2,3...,N
线性可分支持向量机学习算法
(1)构造并求解约束最优化问题
maxα−12∑i=1N∑j=1Nαiαjyiyjxixj+∑i=1Nαimax_{\alpha} \quad -\frac{1}{2} \sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_jy_iy_jx_ix_j + \sum_{i=1}^N\alpha_imaxα−21i=1∑Nj=1∑Nαiαjyiyjxixj+i=1∑Nαi
s.t.∑i=1Nαiyi=0s.t.\quad \sum_{i=1}^N \alpha_iy_i=0s.t.i=1∑Nαiyi=0
αi≥0,i=1,2,3...,N\alpha_i \geq 0, i = 1,2,3...,Nαi≥0,i=1,2,3...,N
求得最优解 α∗=(α1∗,α2∗,...,αN∗)T\alpha^{*}=(\alpha_1^{*},\alpha_2^{*},...,\alpha_N^{*})^Tα∗=(α1∗,α2∗,...,αN∗)T
(2)计算
w∗=∑i=1Nαi∗yixiw^*=\sum_{i=1}^N \alpha_i^*y_ix_iw∗=i=1∑Nαi∗yixi
选择α∗\alpha^*α∗一个正分量αj∗>0\alpha_j^* > 0αj∗>0,计算
b∗=yi−∑i=1Nαi∗yi(xixj)b^*=y_i-\sum_{i=1}^N \alpha_i^*y_i(x_ix_j)b∗=yi−i=1∑Nαi∗yi(xixj)
(3)求得分离超平面
w∗x+b∗=0w^*x+b^*=0w∗x+b∗=0
分类决策函数:
f(x)=sign(w∗x+b∗)f(x)=sign(w^*x+b^*)f(x)=sign(w∗x+b∗)
2 线性支持向量机与软间隔最大化
线性不可分意味着某些样本点 (xi,yi)(x_i,y_i)(xi,yi)不能满足函数间隔大于等于1的约束条件。为了解决这一问题,引进了一个松弛变量ξi≥0\xi_i \geq 0ξi≥0,使得函数间隔加上松弛变量大于等于1,约束条件变为:
yi(wxi+b)≥1−ξiy_i(wx_i+b) \geq 1- \xi_iyi(wxi+b)≥1−ξi
那么线性不可分的线性支持向量机的原始问题就是:
minw,b,ξ12∣∣w∣∣2+C∑i=1Nξimin_{w,b,\xi}\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_iminw,b,ξ21∣∣w∣∣2+Ci=1∑Nξi
s.t.yi(wxi+b)≥1−ξis.t. \quad y_i(wx_i+b) \geq 1- \xi_is.t.yi(wxi+b)≥1−ξi
ξi≥0\xi_i \geq 0ξi≥0
原始问题的对偶问题是:
minα12∑i=1N∑j=1Nαiαjyiyj(xixj)−∑i=1Nαimin_{\alpha}\frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j(x_i x_j) - \sum_{i=1}^N \alpha_iminα21i=1∑Nj=1∑Nαiαjyiyj(xixj)−i=1∑Nαi
s.t.∑i=1Nαiyi=0s.t. \quad \sum_{i=1}^N \alpha_i y_i=0s.t.i=1∑Nαiyi=0
0≤αi≤C0 \leq \alpha_i \leq C0≤αi≤C
构造拉格朗日函数:
L(w,b,ξ,α,μ)=12∣∣w∣∣2+C∑i=1Nξi−∑j=1Nαi(yi(wxi+b)−1+ξi)−∑i=1NμiξiL(w,b,\xi,\alpha,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i- \sum_{j=1}^N\alpha_i(y_i(wx_i+b)-1+\xi_i)-\sum_{i=1}^N\mu_i \xi_iL(w,b,ξ,α,μ)=21∣∣w∣∣2+Ci=1∑Nξi−j=1∑Nαi(yi(wxi+b)−1+ξi)−i=1∑Nμiξi
其中,αi≥0,μi≥0\alpha_i \geq 0,\mu_i \geq 0αi≥0,μi≥0。
依次通过L(w,b,ξ,α,μ)L(w,b,\xi,\alpha,\mu)L(w,b,ξ,α,μ)对w,b,ξw,b,\xiw,b,ξ求偏导,并令其等于0,可得:
w=∑i=1Nαiyixiw= \sum_{i=1}^N \alpha_iy_ix_iw=i=1∑Nαiyixi
∑i=1Nαiyi=0\sum_{i=1}^N \alpha_iy_i=0i=1∑Nαiyi=0
C−αi−μi=0C-\alpha_i-\mu_i=0C−αi−μi=0
带入得到:
maxα−12∑i=1N∑j=1Nαiαjyiyj(xixj)+∑i=1Nαimax_{\alpha} \quad -\frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (x_i x_j) + \sum_{i =1}^N \alpha_imaxα−21i=1∑Nj=1∑Nαiαjyiyj(xixj)+i=1∑Nαi
∑i=1Nαiyi=0\sum_{i=1}^N \alpha_iy_i=0i=1∑Nαiyi=0
C−αi−μi=0C-\alpha_i-\mu_i=0C−αi−μi=0
αi≥0,μi≥0\alpha_i \geq 0, \mu_i \geq 0αi≥0,μi≥0
线性支持向量机学习算法
(1)选择惩罚参数C>0C > 0C>0。构造并求解凸二次规划问题。
minα12∑i=1N∑j=1Nαiαjyiyj(xixj)−∑i=1Nαimin_{\alpha} \quad \frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (x_i x_j) - \sum_{i =1}^N \alpha_iminα21i=1∑Nj=1∑Nαiαjyiyj(xixj)−i=1∑Nαi
∑i=1Nαiyi=0\sum_{i=1}^N \alpha_iy_i=0i=1∑Nαiyi=0
0≤αi≤C0 \leq \alpha_i \leq C0≤αi≤C
求得最优解 α∗=(α1∗,α2∗,...,αN∗)T\alpha^{*}=(\alpha_1^{*},\alpha_2^{*},...,\alpha_N^{*})^Tα∗=(α1∗,α2∗,...,αN∗)T。
(2)计算w∗=∑i=1Nα∗yixiw^*=\sum_{i=1}^N\alpha^*y_ix_iw∗=∑i=1Nα∗yixi,选择α∗\alpha^*α∗的一个分量αj∗\alpha_j^*αj∗适合条件0<αj∗<C0 < \alpha_j^* < C0<αj∗<C。计算
b∗=yj−∑i=1Nyiαi∗(xixj)b^*=y_j-\sum_{i=1}^Ny_i\alpha_i^*(x_ix_j)b∗=yj−i=1∑Nyiαi∗(xixj)
(3)求得分离超平面
w∗x+b∗=0w^*x+b^*=0w∗x+b∗=0
分类决策函数:
f(x)=sign(w∗x+b∗)f(x)=sign(w^*x+b^*)f(x)=sign(w∗x+b∗)
2.2 合页损失函数
合页损失函数。下标“+”“+”“+”表示取正值的函数。
[z]+={z,z>00,z≤0[z]_+=
\begin{cases}
z, & \text{z$ >$0} \\[5ex]
0, & \text{z$\leq$0}
\end{cases}[z]+=⎩⎨⎧z,0,z>0z≤0
对于线性支持向量机的合页损失函数:
L(y(wx+b))=[1−y(wx+b)]+L(y(wx+b))=[1-y(wx+b)]_+L(y(wx+b))=[1−y(wx+b)]+
3.非线性支持向量机与核函数
如果能用特征空间中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题。
用线性分类方法求解非线性变换分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间用线性分类学习方法从训练数据中学习分类模型。
3.1 核技巧
核函数 —设XXX是输入空间,又设HHH为特征空间,如果存在一个XXX到HHH的映射:
ϕ(x)=X→H\phi(x)=X \rightarrow Hϕ(x)=X→H
使得对suoyoux,z∈Xx,z \in Xx,z∈X ,函数K(x,z)K(x,z)K(x,z)满足条件
K(x,z)=ϕ(x)ϕ(z)K(x,z)=\phi(x)\phi(z)K(x,z)=ϕ(x)ϕ(z)
则K(x,z)K(x,z)K(x,z)称为核函数,ϕ(x)\phi(x)ϕ(x)为映射函数,公式右边为内积。
核技巧在SVM中的应用,SVM的对偶问题目标函数为:
W(α)=12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1NαiW(\alpha)=\frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i,x_j)-\sum_{i=1}^N \alpha_iW(α)=21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi
同样,分类决策函数中的内积也用核函数带题,因为分类决策函数为:
f(x)=sign(∑i=1Nsαi∗yiϕ(xi)ϕ(x)+b∗)f(x)=sign(\sum_{i=1}^{N_s}\alpha_i^*y_i \phi(x_i) \phi_(x) + b^* )f(x)=sign(i=1∑Nsαi∗yiϕ(xi)ϕ(x)+b∗)
=sign(∑i=1Nsαi∗yiK(xi,x)+b∗)=sign(\sum_{i=1}^{N_s}\alpha_i^*y_i K(x_i,x)+ b^* )=sign(i=1∑Nsαi∗yiK(xi,x)+b∗)
3.2 正定核
K(x,z)K(x,z)K(x,z)对应的Gram矩阵
K=[K(xi,xj)]m∗mK=[K(x_i,x_j)]_{m*m}K=[K(xi,xj)]m∗m
是一个半正定矩阵,则称K(x,z)K(x,z)K(x,z)是正定核。
3.3 常用核函数
1.多项式核函数
K(x,z)=(xz+1)pK(x,z)=(xz+1)^pK(x,z)=(xz+1)p
2.高斯核函数
K(x,z)=exp(−∣∣x−z∣∣22σ2)K(x,z)=exp(-\frac{||x-z||^2}{2 \sigma^2})K(x,z)=exp(−2σ2∣∣x−z∣∣2)
3.字符串核函数
[ϕn(s)]u=∑i:s(i)=uλl(i)[\phi_n(s)]_u=\sum_{i:s(i)=u}\lambda^{l(i)}[ϕn(s)]u=i:s(i)=u∑λl(i)
字符串核函数kn(s,t)k_n(s,t)kn(s,t)为
kn(s,t)=∑u∈∑n[ϕn(s)]u[ϕn(t)]uk_n(s,t)=\sum_{u \in\sum^n}[\phi_n(s)]_u[\phi_n(t)]_ukn(s,t)=u∈∑n∑[ϕn(s)]u[ϕn(t)]u
=∑u∈∑n∑(i,j):s(i)=t(j)=uλl(i)λl(j)=\sum_{u \in \sum^n}\sum_{(i,j):s(i)=t(j)=u} \lambda^{l(i)} \lambda^{l(j)}=u∈∑n∑(i,j):s(i)=t(j)=u∑λl(i)λl(j)
非线性支持向量机
非线性支持向量机学习算法
(1)选取适当的核函数K(x,z)K(x,z)K(x,z)和适当的参数CCC,
minα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαimin_{\alpha} \quad \frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i ,x_j) - \sum_{i =1}^N \alpha_iminα21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi
∑i=1Nαiyi=0\sum_{i=1}^N \alpha_iy_i=0i=1∑Nαiyi=0
0≤αi≤C0 \leq \alpha_i \leq C0≤αi≤C
求得最优解 α∗=(α1∗,α2∗,...,αN∗)T\alpha^{*}=(\alpha_1^{*},\alpha_2^{*},...,\alpha_N^{*})^Tα∗=(α1∗,α2∗,...,αN∗)T。
(2)计算w∗=∑i=1Nα∗yixiw^*=\sum_{i=1}^N\alpha^*y_ix_iw∗=∑i=1Nα∗yixi,选择α∗\alpha^*α∗的一个分量αj∗\alpha_j^*αj∗适合条件0<αj∗<C0 < \alpha_j^* < C0<αj∗<C。计算
b∗=yj−∑i=1Nyiαi∗K(xi,xj)b^*=y_j-\sum_{i=1}^Ny_i\alpha_i^*K(x_i,x_j)b∗=yj−i=1∑Nyiαi∗K(xi,xj)
(4)构造分类决策函数:
f(x)=sign(∑i=1Nyiαi∗K(x,xi)+b∗)f(x)=sign(\sum_{i=1}^Ny_i\alpha_i^*K(x,x_i)+b^*)f(x)=sign(i=1∑Nyiαi∗K(x,xi)+b∗)
4.序列最小优化算法
SMO算法
输入:训练数据T={(x1,y1),(x2,y2),...,(xN,yN)}T=\left\{ (x_1,y_1), (x_2,y_2),..., (x_N,y_N)\right\}T={(x1,y1),(x2,y2),...,(xN,yN)},其中xi∈Rn,yi∈Y={+1,−1}x_i \in R^n,y_i \in Y=\left\{+1,-1\right\}xi∈Rn,yi∈Y={+1,−1},精度为ξ\xiξ;
输出:近似解α^\hat\alphaα^。
(1)取初值α(0)=0,令\alpha^{(0)}=0,令α(0)=0,令k=0;;;
(2)选取优化变量α1k,α2k\alpha_1^{k},\alpha_2^{k}α1k,α2k,解析求解两个变量的最优化问题,求得最优解α1k+1,α2k+1\alpha_1^{k+1},\alpha_2^{k+1}α1k+1,α2k+1,更新α\alphaα为α(k+1)\alpha^{(k+1)}α(k+1)。
(3)若在精度ξ\xiξ范围内满足停机条件
∑i=1Nαiyi=0,0≤αi≤C\sum_{i=1}^N \alpha_iy_i=0, 0\leq\alpha_i\leq Ci=1∑Nαiyi=0,0≤αi≤C
yig(xi)={≥1,{xi∣αi=0}=1,{xi∣0<αi<C}≤1,{xi∣αi=C}y_ig(x_i)=\begin{cases}
\geq 1, & \text{$\left\{x_i|\alpha_i=0\right\}$} \\[5ex]
=1, & \text{$\left\{x_i|0<\alpha_i<C\right\}$}\\[5ex]
\leq1, & \text{$\left\{x_i|\alpha_i=C\right\}$}
\end{cases}yig(xi)=⎩⎨⎧≥1,=1,≤1,{xi∣αi=0}{xi∣0<αi<C}{xi∣αi=C}
其中,g(xi)=∑j=1NαjyjK(xj,xi)+bg(x_i)=\sum_{j=1}^N \alpha_j y_jK(x_j,x_i)+bg(xi)=∑j=1NαjyjK(xj,xi)+b,
则转(4),如不满足则令k=k+1k=k+1k=k+1转(2)。
(4)取α^=α(k+1)\hat \alpha=\alpha^{(k+1)}α^=α(k+1)