支持向量机学习笔记

参考链接:https://blog.csdn.net/v_JULY_v/article/details/7624837


支持向量机是一种基于统计学习理论的监督式学习的模式识别方法。

SVM是从线性可分情况下的最优分类面发展而来的,基本思想可用下图的两类线性可分情况说明。实心点和空心点代表两类样本,实线P0P1为分类线。两个虚线分别为过各类中离分类线最近的样本且平行于分类线的直线,它们之间的距离叫做分类间隔。 

训练集为非线性的情况,可以通过适当的非线性变换将数据映射到高维空间当中,来解决原始空间中线性不可分的问题。

高维空间只需要用到内积运算没永远是空间中的函数即可实现,没有必要知道变换的形式。在最优分类面中采用适当的内积函数K({\rm{x,x}}_{\rm{i}} )就可以实现某一非线性变换后的线性分类,而计算复杂度并没有增加。

核函数的本质:

实际中,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去。 但进一步,如果凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕的。此时,核函数就隆重登场了,核函数的价值在于它虽然也是讲特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。
常见的核函数:

  1. 多项式核函数。                           K({\rm{x,x}}_{\rm{i}} ) = [({\rm{x,x}}_{\rm{i}} ) + 1]^q
     
  2. 径向基函数(RBF)。               K({\rm{x,x}}_{\rm{i}} ) = \exp (\frac{{\left| {x - x_i } \right|^2 }}{{\sigma ^2 }})

     3.采用Sigmoid函数作为内积。     K({\rm{x,x}}_{\rm{i}} ) = \tanh (v({\rm{x,x}}_{\rm{i}} ) + c) 


多分类问题

从 SVM的那几张图可以看出来,SVM是一种典型的两类分类器,即它只回答属于正类还是负类的问题。而现实中要解决的问题,往往是多类的问题(少部分例外,例如垃圾邮件过滤,就只需要确定“是”还是“不是”垃圾邮件),比如文本分类,比如数字识别。如何由两类分类器得到多类分类器,就是一个值得研究的问题。

目前从两个方向研究如何解决这个问题。

一种是多类分类的支持向量机(MAVM),它是将基本的两类支持向量机扩展为多分类的情况,使支持向量机本身成为能解决多类分类问题的多类分类器。另外一种正好相反,将多类问题逐步转化为两类分类问题,记用多个两类分类支持向量机组成的多类分类器(BSVM)。

1-a-1分类器

每两个类别的训练一个SVM分类器,大是别的样本是由所有的k(k - 1)/2个支持向量机投票决定的。

多级分类

把多级分类问题分解为多级的二分类子问题,如有A,B,C,D,E,F代表7个类。

基于SVM的MATLAB实现

实现过程:

猜你喜欢

转载自blog.csdn.net/zzu_seu/article/details/84206313