SVM经典疑问

来源:https://www.cnblogs.com/pinard/p/6111471.html#!comments

1.第一变量选择的时候如果所有的点都满足KKT这么办呢

    那说明不用跑了,现有的所有$alpha$即为我们需要求解的值。
2.第二变量选择为啥要E1-E2最大呢

    这样做的目的是为了加速迭代收敛过程。理论上不用E1-E2绝对值最大,不过这样有可能很多时候更新量很小,收敛太慢。
3.第三个问题是当alpha是0或者C 时 b怎么更新呢

 W决定方向,b决定在该方向上的最优的位置。这个位置是由支持向量才能决定的。对于非支持向量,其对b的选择不起作用。比如对于远离间隔边界且正确分类的样本点,它距离超平面是1000还是100000,都不会影响这个分类超平面的b值。
   只有当前迭代的时候满足支持向量条件的时候,我们才会更新b,否则不更新

4.这个里面 如果alpha=0的时候应该要满足是支持向量我们才更新吧,等于C的时候,应该在我们的软约束那个参数等于0的时候才是支持向量 然后才更新 不知道我这么理解对不对

   b的更新参看这个,$0 < \alpha_{i}< C$的情况,也就是下文说的界内,界上就是等于0或者C了。我写的取中间点的做法比较简单。没有详细列这几种可能的情况。李航书的130页也有讲到。

5.关于 Ei 的更新我有几点疑问,是否只更新对应于挑选出的 α1 和 α2 对应的下标呢 

  所有的样本的$E_i$都和b有关,当b在当前迭代轮更新后,所有的$E_i$都需要更新。然后进行下一轮迭代选择。

6.取初值α0=0,是指把所有的α都取0的意思吗?那这样的话,我在选择α1的时候,怎么会有违反0<α∗i<C⇒yig(xi)=1这个条件的点呢?

初始化的时候的确没有,这时我们就去选择这样的点,即$y_ig(x_i)< 1$的点,也就是违反下面KKT条件的点。
$$\alpha_{i}^{*} = 0 \Rightarrow y_ig(x_i) \geq 1$$

7. 为什么Ei的更新过程中,没有用到全集,而是所有支持向量的集合?

回顾一下,w与αi,xi,yi的关系式为:
w = ∑ αi*yi*xi ,其中i = 1,2,3,...,N
我们初始化的α是一个全为0的向量,即α1=α2=α3=...=αN=0,w的值即为0.
我们进行SMO算法时,每轮挑选出两个变量αi,固定其他的α值,也就是说,那些从来没有被挑选出来过的α,值始终为0,而根据前面所学,支持向量对应的αi是一定满足 0<αi<=C的.

有了这个认识之后,为什么不用全集呢,因为不是支持向量的样本点,对应的αi值为0啊,加起来也没有意义,对w产生不了影响,只有支持向量对应的点 (xi,yi)与对应的αi相乘,产生的值才对w有影响啊。

从这里也能理解,为什么李航书中,认为支持向量不仅仅是处于间隔边界上的点,还包括那些处于间隔边界和分类超平面之间、分类超平面之上、分类超平面错误的一侧处的点了,因为后面所说的那些点,对应的αi为C,对w的计算可以起到影响作用,换句话说,就是能对w起到影响作用的点,都属于支持向量!

8. 为什么α1_new和α2_new在(0,C)上时b1_new和b2_new就一定相等?

  关于当α1-new和α2-new都在(0,C)上时,有b1-new=b2-new: 这是因为当$0<\alpha<C$时, 点在间隔边界上(参见第2篇第4节)。也就是说这2个点都在间隔边界上,那么他们的b其实就是我们最终的SVM对应的b值。
因为两个点x1 x2到分割面的函数距离都是1,而这个分割面的w是确定的,它们在分割面哪一个也是一定的(y1 y2是一定的),所以由x1 x2计算得到的b也是确定的。相同的。

9.为什么α1_new和α2_new等于0或者C时,b1_new和b2_new之间的数一定满足KKT条件?

关于为什么α1_new和α2_new等于0或者C时,b1_new和b2_new之间的数一定满足KKT条件:这个问题比较复杂,其实原论文里这里这么说是有问题的,也就是并不是一定满足KKT,但是大家都这么一笔带过而已。只有x1 x2分布在分割平面同侧的时候是满足KKT的。这个问题作者在 《Improvements to the SMO algorithm for SVM regression》改进了。

这里只讨论下x1 x2分布在分割平面同侧的时候为什么满足KKT,证明过程比较长,你可以看看下面的链接,我在评论就不展开。
https://ask.julyedu.com/question/696

10.突然好奇,最后为什么用新的a1,a2来产生b,不用所有的a来产生。。。而且我发现软间隔真正计算的时候没用到ξi,从直觉上来讲感觉有点奇怪。
还有就是软间隔算出来的b如果几个不同,最后求平均值,那必定有的是不符合原来 式子=0吧。 虽然不等于,但只要在误差内就行是吗。。。就像是SMO最后的停止条件,要有个精度。

1) 关于b的更新请参考我58楼的回复。上文不算太严谨,没有讨论所有的情况。
2) 不用所有的$\alpha$来更新是因为其他的$\alpha$还处于上一次迭代的值,仅仅有当前2个是最新的,所以用来迭代更新b的值。

3)b如果几个不同,最后求平均值,肯定不合原式,不过的确这样做的目的只是对b进行迭代,向最优方向走就好,而不是为了当前的结果就是最终的结果。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值