机器学习篇三之支持向量机(SVM)

目录

十一、SVM

1、SVM为什么采用间隔最大化?

2、函数间隔和几何间隔

3、推导

4、KKT条件(凸优化问题)

5、SVM核函数的选择

6、SVM算法的主要优点和缺点:

7、SVM为什么会引入拉格朗日优化算法?

8、SVM投票机制



十一、SVM

           SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机)

         (1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;

         (2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;

         (3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

1、SVM为什么采用间隔最大化?

         当训练数据线性可分时,存在无穷多个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。

         线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

2、函数间隔和几何间隔

          函数间隔:\gamma = \mathit{y}\left ( w^{T} x + b\right )

          几何间隔:\gamma = \frac{y\left ( w^{T} + b\right )}{\left \| w \right \|_{2}}

3、推导

                                                                                                 

                          

4、KKT条件(凸优化问题)

1)对于无约束的优化问题,直接令梯度等于0求解。

2)对于含有等式约束的优化问题,拉格朗日乘子法,构造拉格朗日函数,令偏导为0求解。

3)对于含有不等式约束的优化问题,同样构造拉格朗日函数,利用KKT条件求解

5、SVM核函数的选择

6、SVM算法的主要优点和缺点:

优点:

  1) 解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。

  2) 仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。

  3) 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。

  4) 样本量不是海量数据的时候,分类准确率高,泛化能力强。

缺点

  1)  如果特征维度远远大于样本数,则SVM表现一般。

  2)  SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。

  3)非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。

4)SVM对缺失数据敏感。

7、SVM为什么会引入拉格朗日优化算法?

更为高效的结局最优化问题

8、SVM投票机制

一对多法(one-versus-rest,简称OVR SVMs)

  训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。

  假如我有四类要划分(也就是4个Label),他们是A、B、C、D。

  于是我在抽取训练集的时候,分别抽取

  (1)A所对应的向量作为正集,B,C,D所对应的向量作为负集;

  (2)B所对应的向量作为正集,A,C,D所对应的向量作为负集;

  (3)C所对应的向量作为正集,A,B,D所对应的向量作为负集;

  (4)D所对应的向量作为正集,A,B,C所对应的向量作为负集;

  使用这四个训练集分别进行训练,然后的得到四个训练结果文件。

  在测试的时候,把对应的测试向量分别利用这四个训练结果文件进行测试。

  最后每个测试都有一个结果f1(x),f2(x),f3(x),f4(x)。

  于是最终的结果便是这四个值中最大的一个作为分类结果。

评价:

  这种方法有种缺陷,因为训练集是1:M,这种情况下存在biased.因而不是很实用。可以在抽取数据集的时候,从完整的负集中再抽取三分之一作为训练负集。

一对一法(one-versus-one,简称OVO SVMs或者pairwise)

  其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。

  当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。

  Libsvm中的多类分类就是根据这个方法实现的。

  假设有四类A,B,C,D四类。在训练的时候我选择A,B; A,C; A,D; B,C; B,D;C,D所对应的向量作为训练集,然后得到六个训练结果,在测试的时候,把对应的向量分别对六个结果进行测试,然后采取投票形式,最后得到一组结果。

  投票是这样的:

  A=B=C=D=0;

  (A,B)-classifier 如果是A win,则A=A+1;otherwise,B=B+1;

  (A,C)-classifier 如果是A win,则A=A+1;otherwise, C=C+1;

  ...

  (C,D)-classifier 如果是A win,则C=C+1;otherwise,D=D+1;

  The decision is the Max(A,B,C,D)

评价:这种方法虽然好,但是当类别很多的时候,model的个数是n*(n-1)/2,代价还是相当大的。

 

参考资料:

李航《统计学习方法》

http://www.cnblogs.com/jiangxinyang/p/9337094.html

https://blog.csdn.net/wjwfighting/article/details/82532847

https://www.cnblogs.com/pinard/category/894692.html

https://www.baidu.com/link?url=HfzWgzeRIWPH08txoXXCO7lJBotxDpxOfRDJE44TUY_-sKMQnXXrXZ7e3-Vs9BBsjKsd7ZXZ9v8_QjWj4fcIzNHVxZ8PnbhWOmUUvjeff0m&wd=&eqid=ffca968a000e7f22000000035bab7277


  声明:本人从互联网搜集了一些资料整理,由于查找资料太多,好多内容出处不能记得,如有侵权内容,请各位博主及时联系我,我将尽快修改,并注明出处,再次感谢各位广大博主的资料。



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值