好像现在写这个有点晚了,大家都用的少了,现在都在用卷积神经网络来进行模式识别。但是了解下内部的原理还是很好的,毕竟知识都是互通的,只有懂得多了才能在原有的基础上进行创新,站在巨人的肩膀才能看的远,我好像又在灌鸡汤了,言归正传,快跑题了,哈哈
![偷笑](https://static-blog.csdn.net/xheditor/xheditor_emot/default/titter.gif)
先说支持向量机是用来干什么的,简单点就是用来分类的一个算法,其实就是一个分类方法,一般分为线性可分,非线性可分,线性可分就是几类数据可以用线性的方法进行分类,用几条直线就能把数据分开。非线性的就稍微复杂一点了,数据在原有的维数空间就变得交错混乱,但是有一位大牛说过一句话(具体是谁我忘记了),不管多复杂的数据在进行一定的变换域之后,所谓的变换域就是升维或者降维的操作,通俗点说就是经过一个函数去给原有数据进行计算变换,这样原来的两维数据(先按二维的说)就会加入一个z轴,这样原有的输出值就会变化,这样就会使原本看起来很复杂的数据看起来有条理,用线性分割就能完成数据分类的任务,同样还有数据降维,在三维空间中显示的杂乱无章,只要你把数据投影到特定的平面上,你就会惊奇的发现,原来两类数据之间的差距这么大啊,这么明显,这就叫山重水复疑无路,柳暗花明又一村。
有一句诗我很想说,横看成岭侧成峰,远近高低各不同。你看古人都这么聪明,都能从简单的东西中得到这么有哲理的东西,一件事物你从不同的角度去看,你会发现不同的规律。专业点就是缩小类内间距,加大类外间距,这不就是典型的分类思想吗?当然如果这个你不懂的话,没关系,人话就是把同类的数据近可能的放在一起,把不相干的特征近可能的显示出来。这不就验证了刚那句是横看成岭侧成峰,正面看的时候都是岭都差不多,侧着看的时候就会发现远近高低各不同。这就是一种数据的变换域转换,对山峰进行一种映射投影,将二维的数据变成一维的,将差距明显的显现出来了。
说了这么多废话,不是真的废话啊,是帮助你理解的,来点实际的吧。支持向量机到底什么是个支持向量呢,我个人的理解就是数据分类之间的类外间距,比如在两类数据的情况下,你中间用来分类的直线,就需要近可能的理两类样本的间距最大,如果你离一类样本的间距过于近的话,那你这个分类器的抗干扰性就会变差,有一点干扰分类器就不能很好的对数据进行分类。当分类的直线离两类样本距离近可能远的情况下,分类器的抗干扰性就会比较好。
下面就介绍下这直线怎么求,先说比较简单的二类划分,简单的会了,难的还难吗?是不是。最粗糙的求法就是把两类的样本数据分别求均值,然后两点连成直线,取中值平分线就可以了,当然这是一种很不严谨的做法,只有小学生才会这么做,哈哈,又在黑小学生了。严谨点说求这条直线就是一个求函数最大值的问题,你先假设这条直线的方程式y=kx+b;然后直线就有了,这时你就能求出各个样本点,到达直线的距离,只要让两类样本点距离直线的距离都取到最大,这时你得到的直线就是想要的线性分类直线方程。今天就先写这么多了,有时间再继续分析升维和降维的问题。