SVM-3-最优间隔分类器
2016-03-20 17:18
190 查看
参考http://www.cnblogs.com/jerrylead
s.t.\ y^i(w^Tx^i+b) \geq 1,\ i=1,...,m
把约束条件写成下面的形式:
gi(w)=−yi(wTx∗+b)+1≤0g_i(w) = -y^i(w^Tx^*+b)+1 \leq 0
这样就变成了在约束条件gi(w)≤0g_i(w) \leq 0下,求minδ,w,b 12||w||2\min_{\delta,w,b}\ \frac{1}{2}||w||^2的最优化问题。
在KKT对偶互补条件中我们知道,当αi>0\alpha_i > 0时,gi(w)=0g_i(w)=0,即gi(w)=−yi(wTx∗+b)+1=0g_i(w) = -y^i(w^Tx^*+b)+1 =0,也就是说yi(wTx∗+b)=1y^i(w^Tx^*+b)=1,即函数间隔等于1。
而当αi=0\alpha_i=0时,一般而言gi(w)<0g_i(w)<0(当然,少数情况下,也许、大概、可能也会有gi(w)=0g_i(w)=0,咱们忽略它,毕竟是少数。。。)。
我们看下面的图:
中间的实线是最大间隔超平面,上图中与超平面距离最近的样本有三个(这三个样本与超平面的距离相同),还记得在SVM-1-问题描述中我们将函数间距设为1吗?!也就是说,这三个样本与超平面的距离为1!
在图中还有两根虚线,它们与实线平行,且与实线的距离为1,也就是说,所有与超平面的距离为1的样本都在这两条虚线上。
之前说过距离为1,就要求gi(w)=0,αi>0g_i(w)=0,\alpha_i>0,从图中可以看出,满足距离为1的样本只是少数,大多数情况下距离都是大于1的,即大多数情况下αi是等于0的\alpha_i是等于0的。
对于上面距离为1的样本有个专门的名字:“支持向量”。
注意到这里只有αi\alpha_i没有βi\beta_i是因为原问题中没有等式约束,只有不等式约束。
▽wL(w,b,α)=w−∑imαiyixi=0进而可得:w=∑imαiyixi (2)\bigtriangledown_w L(w,b,\alpha) = w - \sum^m_i\alpha_iy^ix^i = 0\\
进而可得:w=\sum^m_i\alpha_iy^ix^i\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2)%
∂∂bL(w,b,α)=∑i=1mαiyi=0 (3)\frac{\partial}{\partial b}L(w,b,\alpha) = \sum^m_{i=1}\alpha_iy^i=0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (3)
将公式(2)带入(1)可得:
L(w,b,α)=∑i=1mαi−12∑i,j=1myiyjαiαj(xi)Txj−b∑i=1mαiyiL(w,b,\alpha) = \sum^m_{i=1}\alpha_i-\frac{1}{2}\sum^m_{i,j=1}y^iy^j\alpha_i\alpha_j(x^i)^Tx^j-b\sum^m_{i=1}\alpha_iy^i%
推到如下(公式太多直接截图。。。):
由公式(3)可知,最后一项为0,故上式可改写为:
L(w,b,α)=∑i=1mαi−12∑i,j=1myiyjαiαj(xi)TxjL(w,b,\alpha) = \sum^m_{i=1}\alpha_i-\frac{1}{2}\sum^m_{i,j=1}y^iy^j\alpha_i\alpha_j(x^i)^Tx^j%
上面是在α\alpha固定不变的前提下,求minw,bL(w,b,α)\min_{w,b} L(w,b,\alpha),现在开始求原问题的对偶问题:
maxαW(α)=∑i=1mαi−12∑i,j=1myiyjαiαj<xi,xj>s.t. αi≥0, i=1,...,m∑i=1mαiyi=0\max_\alpha W(\alpha) = \sum^m_{i=1}\alpha_i-\frac{1}{2}\sum^m_{i,j=1}y^iy^j\alpha_i\alpha_j\\
s.t.\ \alpha_i \geq 0, \ i=1,...,m\\
\sum^m_{i=1}\alpha_iy^i=0
%
注:
1、<xi,xj>表示向量的内积,与(xi)Txj(x^i)^Tx^j等价。
2、αi\alpha_i此时当然已经不能再是一个固定的值了。
可以发现,上式是满足KKT条件的,因此我们可以用它来代替原始问题。
3、现在只有一个参数α\alpha啦!
假如我们现在已经求出了α\alpha:
我们首先可以通过公式(2)w∗=∑miαiyixi(2)w^*=\sum^m_i\alpha_iy^ix^i,计算得到w∗w^*。
然后可以通过下式计算得到b∗b^* %:
b∗=−maxi:yi=−1w∗Txi+mini:yi=1w∗Txi2 b^*=-\frac{\max_{i:y^i=-1}w^{*T}x^i+\min_{i:y^i=1}w^{*T}x^i}{2}\ \ \ %
注:别问我为什么。。。。就是可以。。。
假设我们已经利用上面得到的参数训练完成一个模型,当输入一个新的样本时,将公式(2)带入wTx+bw^Tx+b我们就可以进行预测:
wTx+b=(∑i=1mαiyixi)Tx+b=∑i=1mαiyi<xi,x>+bw^Tx+b=(\sum^m_{i=1}\alpha_iy^ix^i)^Tx+b\\
=\sum^m_{i=1}\alpha_i y^i+b
即我们只需要计算输入样本与所有训练样本内积即可,另外还记得“支持向量”这个名词吧!对于上式中的αi\alpha_i只有很少一部分支持向量的αi\alpha_i才不等于0,因此并不需要与所有训练样本去做计算。
在第一篇(SVM-1-问题描述)中我们得到了下面的优化问题:
minδ,w,b 12||w||2s.t. yi(wTxi+b)≥1, i=1,...,m\min_{\delta,w,b}\ \frac{1}{2}||w||^2\\s.t.\ y^i(w^Tx^i+b) \geq 1,\ i=1,...,m
把约束条件写成下面的形式:
gi(w)=−yi(wTx∗+b)+1≤0g_i(w) = -y^i(w^Tx^*+b)+1 \leq 0
这样就变成了在约束条件gi(w)≤0g_i(w) \leq 0下,求minδ,w,b 12||w||2\min_{\delta,w,b}\ \frac{1}{2}||w||^2的最优化问题。
在KKT对偶互补条件中我们知道,当αi>0\alpha_i > 0时,gi(w)=0g_i(w)=0,即gi(w)=−yi(wTx∗+b)+1=0g_i(w) = -y^i(w^Tx^*+b)+1 =0,也就是说yi(wTx∗+b)=1y^i(w^Tx^*+b)=1,即函数间隔等于1。
而当αi=0\alpha_i=0时,一般而言gi(w)<0g_i(w)<0(当然,少数情况下,也许、大概、可能也会有gi(w)=0g_i(w)=0,咱们忽略它,毕竟是少数。。。)。
我们看下面的图:
中间的实线是最大间隔超平面,上图中与超平面距离最近的样本有三个(这三个样本与超平面的距离相同),还记得在SVM-1-问题描述中我们将函数间距设为1吗?!也就是说,这三个样本与超平面的距离为1!
在图中还有两根虚线,它们与实线平行,且与实线的距离为1,也就是说,所有与超平面的距离为1的样本都在这两条虚线上。
之前说过距离为1,就要求gi(w)=0,αi>0g_i(w)=0,\alpha_i>0,从图中可以看出,满足距离为1的样本只是少数,大多数情况下距离都是大于1的,即大多数情况下αi是等于0的\alpha_i是等于0的。
对于上面距离为1的样本有个专门的名字:“支持向量”。
现在将拉格朗日算子应用到我们的最优化问题中,构造拉格朗日函数如下:
L(w,b,α)=12||w||2−∑i=1mαi[yi(wTx∗+b)−1] (1)L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum^m_{i=1}\alpha_i[y^i(w^Tx^*+b)-1]\ \ \ \ \ \ \ \ (1)注意到这里只有αi\alpha_i没有βi\beta_i是因为原问题中没有等式约束,只有不等式约束。
下面考虑对偶问题
首先求解minL(w,b,α)\min L(w,b,\alpha),对于固定的αi\alpha_i该式的值只与w和bw和b有关,我们可以令θD(α)=minw,bL(w,b,α)\theta_D(\alpha)=\min_{w,b} L(w,b,\alpha),为了求θD(α)\theta_D(\alpha)的最小值,我们需要对LL求w和bw和b的偏导数:▽wL(w,b,α)=w−∑imαiyixi=0进而可得:w=∑imαiyixi (2)\bigtriangledown_w L(w,b,\alpha) = w - \sum^m_i\alpha_iy^ix^i = 0\\
进而可得:w=\sum^m_i\alpha_iy^ix^i\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2)%
∂∂bL(w,b,α)=∑i=1mαiyi=0 (3)\frac{\partial}{\partial b}L(w,b,\alpha) = \sum^m_{i=1}\alpha_iy^i=0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (3)
将公式(2)带入(1)可得:
L(w,b,α)=∑i=1mαi−12∑i,j=1myiyjαiαj(xi)Txj−b∑i=1mαiyiL(w,b,\alpha) = \sum^m_{i=1}\alpha_i-\frac{1}{2}\sum^m_{i,j=1}y^iy^j\alpha_i\alpha_j(x^i)^Tx^j-b\sum^m_{i=1}\alpha_iy^i%
推到如下(公式太多直接截图。。。):
由公式(3)可知,最后一项为0,故上式可改写为:
L(w,b,α)=∑i=1mαi−12∑i,j=1myiyjαiαj(xi)TxjL(w,b,\alpha) = \sum^m_{i=1}\alpha_i-\frac{1}{2}\sum^m_{i,j=1}y^iy^j\alpha_i\alpha_j(x^i)^Tx^j%
上面是在α\alpha固定不变的前提下,求minw,bL(w,b,α)\min_{w,b} L(w,b,\alpha),现在开始求原问题的对偶问题:
maxαW(α)=∑i=1mαi−12∑i,j=1myiyjαiαj<xi,xj>s.t. αi≥0, i=1,...,m∑i=1mαiyi=0\max_\alpha W(\alpha) = \sum^m_{i=1}\alpha_i-\frac{1}{2}\sum^m_{i,j=1}y^iy^j\alpha_i\alpha_j\\
s.t.\ \alpha_i \geq 0, \ i=1,...,m\\
\sum^m_{i=1}\alpha_iy^i=0
%
注:
1、<xi,xj>表示向量的内积,与(xi)Txj(x^i)^Tx^j等价。
2、αi\alpha_i此时当然已经不能再是一个固定的值了。
可以发现,上式是满足KKT条件的,因此我们可以用它来代替原始问题。
3、现在只有一个参数α\alpha啦!
假如我们现在已经求出了α\alpha:
我们首先可以通过公式(2)w∗=∑miαiyixi(2)w^*=\sum^m_i\alpha_iy^ix^i,计算得到w∗w^*。
然后可以通过下式计算得到b∗b^* %:
b∗=−maxi:yi=−1w∗Txi+mini:yi=1w∗Txi2 b^*=-\frac{\max_{i:y^i=-1}w^{*T}x^i+\min_{i:y^i=1}w^{*T}x^i}{2}\ \ \ %
注:别问我为什么。。。。就是可以。。。
假设我们已经利用上面得到的参数训练完成一个模型,当输入一个新的样本时,将公式(2)带入wTx+bw^Tx+b我们就可以进行预测:
wTx+b=(∑i=1mαiyixi)Tx+b=∑i=1mαiyi<xi,x>+bw^Tx+b=(\sum^m_{i=1}\alpha_iy^ix^i)^Tx+b\\
=\sum^m_{i=1}\alpha_i y^i+b
即我们只需要计算输入样本与所有训练样本内积即可,另外还记得“支持向量”这个名词吧!对于上式中的αi\alpha_i只有很少一部分支持向量的αi\alpha_i才不等于0,因此并不需要与所有训练样本去做计算。
相关文章推荐
- CString转int _ttoi() _tcstoul() Format ASSERT() Format的用法
- python 关键字 break
- ByteArrayOutputStream 理解
- nyoj973 天下第一(spfa判环)
- Linux之RPM、YUM、源码编译安装
- 第三周学习进度
- EOF
- 面向对象基本特征
- SetInterval与setTimeout
- 工欲善其事,必先利其器
- PAT17第三组 爬动的蠕虫
- 318. Maximum Product of Word Lengths
- Java多线程系列--“JUC线程池”02之 线程池原理(一)
- 分析恶意驱动
- 数据结构极值及平均值
- 鲜为人知的Titanium之线程
- bzoj 2143: 飞飞侠
- [随笔]GNU linker script,ld script,GNU链接脚本
- 构建之法阅读笔记(3)
- 2016/3/20 数组定义 数组遍历 超全局数组 数组元素设置(in_array() 、array_reverse()、count()、array_unique()、unset()、array_values、array_merge、array_push) 列表实例