机器学习简介6--svm

svm算法本身的推导演算过程有些许的繁琐。但是svm的便捷和普遍实用性的分类性质普遍表现不错,基本可以当作一个万能算法来先跑一下。但是因为svm高纬的核函数升维业务上并不是那么直观,所以一些需要强业务解释的场合反而不会用。再加上svm的准确率,相比深度学习的简单模型也相差甚远。所以在不需要业务解释的场景时,softmax的效果往往又远好于svm。所以。。。
我们先以一维数据为例。如果我们要分割一维数据集,此时我们只需要一个点。即自由度为0维的数据。如果我们要分割一堆二维数据的点集合,如图:


image.png

我们只需要找出自由度为1的一个线,即可把两类数据分割开。如果我们需要把空间中的点集分成两类呢,这个不难想到,我们需要的只是一个自由度为2的平面。不难想到,如果我们需要分割N维的一个数据集,那么我们需要的分割向量,就是N-1维的向量。
这里我们从2维数据的分割开始推导,再推到一般情况的多维数据分割取。
假设我们需要把平面中的2类点,用一条线分割开。那么我们假设这条线的支持向量方程为:
W^T *X + b .接着我们计算下,点m到分割线的距离,则距离为:|wTm+b|/||w| 。
我们假设两条支持向量的距离为2。由于所有点都在支持向量的两侧,所以,我们的目标即转化为了:
最大化,支持向量间的距离,在点都满足在支持向量两侧的前提下的凸优化问题。


image.png

这里要解决这个凸优化问题,可以采用拉格朗日中值定理,也可以用KKT的约束条件。这里的推导有些繁琐,对此感兴趣的同学请自行查找资料。
最终我们会推出一个与参数无关的方程
image.png

但是实际问题中,往往并不是数据凑巧就可分。这个时候往往就需要核函数升维。在低纬不可分的问题,到了高维,往往就可分。实际中也会有个别的数据在高维,因为极个别点不可分。这个时候我们就需要引入松弛变量,来应该极个别的不可分点。

你可能感兴趣的:(机器学习简介6--svm)