这是我读本科的时候第一个接触到的机器学习算法,但也是第一个听完就忘的。。。
他的基本思想很简单:想办法把一个样本集划成两个部分:对于空间中的样本点集合,我们找到一个超平面把这个样本点集合给分成两个部分,其中一部分是正类,另一部分是反(负)类,支持向量机的优化目标就是找到一个超平面,使得空间中距离超平面最近的点到超平面的几何间距尽可能大,这些点就被称为支持向量。
首先得了解几个概念:
一、最大间隔和超平面:
和之前的一样,我们给定一个样本集合然后设定:,设输入空间中的一个超平面为:
其中,是超平面的法向量,b为偏置,决定超平面的位置,根据点到直线的距离公式的扩展,空间中一点到超平面的欧氏距离为:
如果超平面可以把所有样本点分成两类,那实际上, 点到超平面的欧氏距离就是一个分段函数:
好了,基本上把最大间隔和超平面给了解清楚了,说白了,就是,emm,我画个图来展示一下:
其实这个就是个很简单的东西,第四张可看可不看,主要是前三张图片,第一张是y1=sin(x)
第二张是y2=cos(x*pi/2),第三张是y3=y1+y2,那也就是说,怎么样才能从第三张图中把y1和y2给分离出来呢,学信号的同学这不就来精神了吗,那不就是,对吧,我直接一个傅里叶变换从时空域变到频率域,这不就很简单的能分开了嘛,so easy对吧,可是,这里,咱说的是支持向量机,也就是说,我们得用支持向量机的观点来给他把(x,y1)和(x,y2)这两个信号分开,怎么分开,我暂时就想了上面提到的变换到频率域去解决,当然,学信号的人会想到用滤波器或者其他方法,总之,有很多,但是具体怎么做呢,大家可以自己去试试,找找文献或者技术资料,来看看信号的分离或者是信号去噪这方面的,我只知道,方法很多。
二、线性可分支持向量机
QAQ,这个概念就要两页多,因为小学抄古诗抄怕了,我是真不喜欢抄书,,但是,抄吧,首先看一下他的目标是啥:通过求解和b,找到一个超平面,在保证这个超平面能偶正确将样本进行分类的同时,要使距离超平面最近的点到超平面的距离尽可能的大,说白了就是一个带约束条件的优化问题,其约束条件就是超平面可以把样本集合的点都给正确分类喽。
我们把距离超平面最近的点和超平面之间的距离记为
最优化问题就是:
我们可以对任一支持向量通过对超平面公式进行缩放,使得
然后到超平面的距离就是,优化问题就能够写成
最大化,也就是最小化,这里我用后者作为优化目标,就让你的计算可以方便了很多。
数学上是完全可以证明,支持向量机的超平面存在着唯一性,至少有两个支持向量,而且超平面的位置仅由这些支持向量决定。
再感知机的模型中,优化的目标很明确:
在满足模型能够正确分类的约束条件下,使得样本集合中所有点到分割超平面的距离最小,这样的超平面可能会有无数个。
然后,怎么求上面给出的最优化问题嘞?可以用拉格朗日乘子法来求解:
表示拉格朗日乘子,让lag函数对omega和b求偏导为零,然后计算就可以啦,详细的我就不写了,大家可以自己推一推,我也在纸上推一推,就不写latex了,嘿嘿。