支持向量机可以分为三类:
- 线性可分的情况 ==> 硬间隔最大化 ==> 硬间隔SVM
- 近似线性可分的情况 ==> 软间隔最大化 ==> 线性支持向量机
- 线性不可分的情况 ==> 核技巧/软间隔最大化 ==> 非线性SVM
硬间隔向量机(hard margin svm)
任务:寻找一条与所有支持向量距离最远的决策边界,这条决策边界就是0=wTX+b0 = w^T X + b0=wTX+b,即:
wTXi+b>0,yi>0wTXi+b<0,yi<0
w^T X_i + b > 0 , y_i > 0 \\
w^T X_i + b < 0 , y_i < 0
wTXi+b>0,yi>0wTXi+b<0,yi<0
所以问题可以描述为:
max margin(x,b)s.t.yi(wT+b)>0margin(w,b)=min distance(w,b,xi)=min1∣w∣∣wTxi+b∣
max \; margin(x,b) \qquad s.t.y_i(w^T+b)>0 \\
margin(w,b) = min \; distance(w,b,x_i) = min \frac{1}{|w|}|w^Tx_i+b|
maxmargin(x,b)s.t.yi(wT+b)>0margin(w,b)=mindistance(w,b,xi)=min∣w∣1∣wTxi+b∣
带换一下也就是
max min1∣w∣∣wTxi+b∣==>max1∣w∣ min∣wTxi+b∣s.t.yi(wTxi+b)>0 ==> ∃r>0,min yi(wT+b)=r
max \; min \frac{1}{|w|}|w^Tx_i+b| ==> max \frac{1}{|w|} \; min |w^Tx_i+b| \\
s.t. y_i(w^Tx_i+b)>0 \; ==>\; \exists r > 0 , min \; y_i(w^T+b)=r
maxmin∣w∣1∣wTxi+b∣==>max∣w∣1min∣wTxi+b∣s.t.yi(wTxi+b)>0==>∃r>0,minyi(wT+b)=r
用r来表示就是:
maxr∣w∣∃r>0,min yi(wT+b)=r
max \frac{r}{|w|}\\\\
\exists r > 0 , min \; y_i(w^T+b)=r
max∣w∣r∃r>0,minyi(wT+b)=r
这里我的理解是:因为wxi+b=rwx_i+b=rwxi+b=r ==> wrxi+br=1\frac{w}{r} x_i + \frac{b}{r}=1rwxi+rb=1,所以不管r取什么值,w=w0rw=\frac{w_0}{r}w=rw0,b=b0rb=\frac{b_0}{r}b=rb0, 所以r的取值所带来的影响会被最后的w和b所融合进去,所以r=1也没关系。最终的问题可以描述为(这里是N个不等式):
max12∣w∣2s.t. yi(wT+b)−1>=0i=1,2,3,...,N
max \frac{1}{2}|w|^2 \\
s.t. \; y_i(w^T+b)-1>=0 \qquad i=1,2,3,...,N
max21∣w∣2s.t.yi(wT+b)−1>=0i=1,2,3,...,N
构造拉格朗日函数,引入N个参数α\alphaα,转换成对偶函数如下(大括号表示不出来我也很绝望):
min12⋅∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nxis.t.∑i=1Nαiyi=0αi>=0 i=1,2,3,..N
min \frac{1}{2} \cdot \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} x_{i} \\
s.t.\sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\
\alpha_i >=0 \; i = 1,2,3,.. N
min21⋅i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nxis.t.i=1∑Nαiyi=0αi>=0i=1,2,3,..N
使用KKT条件,得到的解:
w∗=∑i=1Nαi∗yixi
w^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i}
w∗=i=1∑Nαi∗yixi
b∗=yj−∑i=1Nai∗yi(xi⋅xj) b^{*}=y_{j}-\sum_{i=1}^{N} a_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) b∗=yj−i=1∑Nai∗yi(xi⋅xj)
最终的解是:
w∗x+b∗=0
w^{*}x+b^{*}=0
w∗x+b∗=0
f(x)=sign(w∗x+b∗) f(x) = sign(w^{*}x+b^{*}) f(x)=sign(w∗x+b∗)
软间隔向量机(soft margin svm)
软间隔向量机采用合页损失函数,真实数据中,严格线性可分的数据很少。合页损失函数允许分类时的一点点误差。损失函数如下:
1−yi(w⊤xi+b)⩽0,loss=01−y2‾(w⊤xi+b)>0,loss=1−yi(w⊤xi+b)
1- y_{i}\left(w^{\top} x_{i}+b\right) \leqslant0, \quad loss=0 \\
1-y_{\overline{2}}\left(w^{\top} x_{i}+b\right) >0, \quad loss =1-y_{i}\left(w^{\top} x_{i}+b\right)
1−yi(w⊤xi+b)⩽0,loss=01−y2(w⊤xi+b)>0,loss=1−yi(w⊤xi+b)
也就是,正确分类并且函数间隔大于1时没有误差,错误分类时,距离决策边界越远的点,受到的惩罚越大。使用合页函数的做优化问题可以表示为:
min∑iN(1−yi(wTxi+b))++λ∥w∥2
\min \sum_{i}^{N}\left(1-y_{i}\left(w^{T} x_{i}+b\right)\right)_{+}+\lambda\|w\|^{2}
mini∑N(1−yi(wTxi+b))++λ∥w∥2
令ξi=1−yi(wTxi+b),ξi⩾0\xi_{i}=1-y_{i}(w^{T} x_{i}+b), \quad \xi_{i} \geqslant 0ξi=1−yi(wTxi+b),ξi⩾0,则,分两种情况:
1、1−yi(wTxi+b)>01-y_{i}(w^{T} x_{i}+b)>01−yi(wTxi+b)>0 ==> ξi=1−yi(wTxi+b)\xi_i =1-y_{i}\left(w^{T} x_{i}+b\right)ξi=1−yi(wTxi+b) ==> yi(wx+b)=1−ξiy_i(wx+b)=1-\xi_iyi(wx+b)=1−ξi
2、1−yi(wTxi+b)⩽01-y_{i}(w^{T} x_{i}+b)\leqslant01−yi(wTxi+b)⩽0 ==> yi(wx+b)⩽1y_i(wx+b)\leqslant1yi(wx+b)⩽1 ==> yi(wx+b)⩽1−ξiy_i(wx+b)\leqslant1-\xi_iyi(wx+b)⩽1−ξi (ξi=0\xi_i=0ξi=0)
综合上面两种情况,可以直接写为:yi(wx+b)⩽1−ξiy_i(wx+b)\leqslant1-\xi_iyi(wx+b)⩽1−ξi,这样的话,最优化函数就变成了下面的样子:
min12wTw+C∑i=1Nξis.t.yi(wTxi+b)⩾1−ξi,ξi⩾0
min \frac{1}{2} w^{T}w+C\sum_{i=1}^{N} \xi_{i} \\
s.t. y_{i}\left(w^{T} x_{i}+b\right) \geqslant 1-\xi_{i}, \quad \xi_{i} \geqslant 0
min21wTw+Ci=1∑Nξis.t.yi(wTxi+b)⩾1−ξi,ξi⩾0
这两个式子是等价的。再《统计学习方法》中,先给出了后面的式子,再介绍了合页损失函数
这两个式子转换成等价的对偶函数如下:
minα12∑i=1N∑j=1Nαiαjyiyj(xixj)−∑i=1nαis.t.∑i=1Nαiyi=00≤αi≤C, i=1,2,...N
\underset{\alpha}{min} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j}y_{i} y_{j}\left(x_{i}x_{j}\right)-\sum_{i=1}^{n} \alpha_{i} \\
s.t. \sum_{i=1}^{N}\alpha_iy_i=0 \qquad \\
0\leq \alpha_i \leq C, \;i=1,2,...N
αmin21i=1∑Nj=1∑Nαiαjyiyj(xixj)−i=1∑nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...N
对偶函数的解是:
w=∑i=1Nαiyixi
w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}
w=i=1∑Nαiyixi
b=yj−∑i=1Naiyi(xi⋅xj) b=y_{j}-\sum_{i=1}^{N} a_{i} y_{i}\left(x_{i} \cdot x_{j}\right) b=yj−i=1∑Naiyi(xi⋅xj)
决策函数是:
f(x)=sign(∑1Nαiyi(x⋅xi)+b∗) f(x)=sign (\sum_{1}^{N} \alpha_{i} y_{i}(x \cdot x_{i})+b^{*}) f(x)=sign(1∑Nαiyi(x⋅xi)+b∗)
KKT条件
αfαw=0,αfαb=0,αfαλ=0 \frac{\alpha f}{\alpha w}=0, \frac{\alpha f}{\alpha b}=0, \frac{\alpha f}{\alpha \lambda}=0 αwαf=0,αbαf=0,αλαf=0
λi(1−yi(wTxi+b))=0 \lambda_{i}(1-y_{i}(w^{T} x_{i}+b))=0 λi(1−yi(wTxi+b))=0
λi=0 \lambda_i=0 λi=0
(1−yi(wTxi+b))<0 (1-y_{i}(w^{T} x_{i}+b))<0 (1−yi(wTxi+b))<0
对于λi(1−yi(wTxi+b))=0\lambda_{i}(1-y_{i}(w^{T} x_{i}+b))=0λi(1−yi(wTxi+b))=0 只要 λi≠0\lambda_i \neq0λi=0 ,就有 1−yi(wTxi+b=01-y_{i}(w^{T} x_{i}+b=01−yi(wTxi+b=0,也就是说xix_ixi再决策边界上,xix_ixi是支持向量
- 原问题与对偶问题育有强对偶关系 <===> 满足KKT条件
非线性支持向量机(核函数)
核函数可以对特征进行升维(当然,不一定非要是升维,也可能是转换到另一个空间),高维空间的运算量巨大,所以直接使用低维的计算结果,作为两个高维向量的内积:
ϕ(x1,x2)∗ϕ(x1′,x2′)=(z1,z2,z3)∗(z1′,z2′,z3′)=(x12,2x1x2,x22)(x1′2,2x1′x2′,x2′2)=(x1x1′+x2x2′)=(xx′)2=K(x,x′)
\phi (x_1, x_2) * \phi (x_1^{'}, x_2^{'}) = (z_1, z_2, z_3)*(z_1^{'}, z_2^{'}, z_3^{'}) \\\\
= (x_1^2, \sqrt{2}x_1 x_2, x_2^2)(x_1^{'2}, \sqrt{2}x_1^{'} x_2^{'}, x_2^{'2}) \\\\
= (x_1 x_1^{'} + x_2 x_2^{'}) = (xx^{'})^2 =K(x, x^{'})
ϕ(x1,x2)∗ϕ(x1′,x2′)=(z1,z2,z3)∗(z1′,z2′,z3′)=(x12,2x1x2,x22)(x1′2,2x1′x2′,x2′2)=(x1x1′+x2x2′)=(xx′)2=K(x,x′)
核函数等价于两个映射哈函数的内积,不过,这个映射函数不需要手动指出。因为当两个映射函数相乘时,内积的结果可以用核函数表示。而映射函数在最优化问题中都是成对出现的。即出现映射函数的地方都可以用核函数替代。
如果用映射函数将x映射到高维空间,那么应该用高维向量替换x所在的位置:
12∑i=1N∑j=1Nαiαjyiyj(xixj)−∑i=1nαi
\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j}y_{i} y_{j}\left(x_{i}x_{j}\right)-\sum_{i=1}^{n} \alpha_{i}
21i=1∑Nj=1∑Nαiαjyiyj(xixj)−i=1∑nαi
12∑i=1N∑j=1Nαiαjyiyj(ϕ(xi)ϕ(xj))−∑i=1nαi \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j}y_{i} y_{j}\left(\phi(x_{i})\phi(x_{j})\right)-\sum_{i=1}^{n} \alpha_{i} 21i=1∑Nj=1∑Nαiαjyiyj(ϕ(xi)ϕ(xj))−i=1∑nαi
12∑i=1N∑j=1Nαiαjyiyj(K(xi,xj))−∑i=1nαi \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j}y_{i} y_{j}\left(K(x_{i}, x_{j})\right)-\sum_{i=1}^{n} \alpha_{i} 21i=1∑Nj=1∑Nαiαjyiyj(K(xi,xj))−i=1∑nαi
那么最终拟合的结果也应该是由高维向量表示的:
f(x)=sign(∑1Nαiyi(ϕ(x)ϕ(xi))+b∗)
f(x)=sign (\sum_{1}^{N} \alpha_{i} y_{i}(\phi(x)\phi(x_{i}))+b^{*})
f(x)=sign(1∑Nαiyi(ϕ(x)ϕ(xi))+b∗)
f(x)=sign(∑1Nαiyi(K(x,xi))+b∗) f(x)=sign (\sum_{1}^{N} \alpha_{i} y_{i}(K(x,x_i))+b^{*}) f(x)=sign(1∑Nαiyi(K(x,xi))+b∗)
高斯核函数(RBF)
正太分布:
f(x)=12πσexp(−(x−μ)22σ2)
f(x)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right)
f(x)=2πσ1exp(−2σ2(x−μ)2)
高斯核函数:
K(x,y)=e−γ∥x−y∥2
K(x, y)=e^{-\gamma\|x-y\|^{2}}
K(x,y)=e−γ∥x−y∥2
对于正态分布来说:σ\sigmaσ是标准差,σ\sigmaσ越小,曲线越窄。σ\sigmaσ越大,曲线越宽
对于高斯核函数来说:γ\gammaγ的值越大,曲线越窄;γ\gammaγ的值越小,曲线越宽;