
支持向量机是一种比较复杂的人工智能算法,但其中的数据推理是所有的AI算法里面最复杂的。
从17年开始啃的,当时花的时间比其它常用的机器学习算法加在一起还要多。实在太难啃了。好不容易串联起来了,也记了笔记,每过一年重新看的时候又忘了,几乎都得重新啃一遍。这次尽量用普通人能懂的语言记录一遍,帮助自己回忆,也希望能帮到一些人工智能的初学者。
概述
它最基本的想法就是,基于训练集D,在样本空间中找到一个划分超平面,将不同类别的样本分开。
首先基于标记样本,通过模型训练得到划分超平面,再用划分超平面预测未知样本属于哪一类。
支持向量机的整个推理过程便是如何根据已知的样本属性值得到划分超频面。本质是求解出该超平面在多维空间的斜率与截距。该超平面必须能够将两类样本分开,并且使得各类别离该超平面最近的样本到该超平面距离最远。
通过拉格朗日乘子法将限制条件下的最小值问题,转化成非限制条件下的最值问题。可对各个参数求偏导得到结果,但该算法的复杂度跟样本数、属性数都正相关,不适合高维空间的计算。
用对偶问题将最大值的最小值问题转化成最小值的最大值问题,可以先消掉w、b,将算法的复杂度降低到只依赖样本数。
用Smo算法可以先固定其它参数,只选择一个参数进行迭代,直到所有参数都正确,这种方法可以进一步降低算法的复杂度。
核函数将低维空间的属性转化到高维空间,解决样本线性不可分问题。
划分超平面求解
找到位于两类训练样本中间,可将样本正确分类的超平面。如果样本的特征属性是二维,该超平面属于一条直线,如果是三维则属于平面。

但能将训练样本分开的划分超平面有很多个,直观上看,应该去找位于两类分类样本“正中间”的划分超平面。该划分超平面对训练样本的扰动的“容忍性”最好,即对未见示例的泛化能力最强。
所以我们要找到的超平面,需要使得分类间隔最大化。即使到划分超平面最近的样本到划分超平面的距离尽可能做大。各类别向量空间中到划分超平面最近的正负样本称为支持向量(如下图经过虚线的样本点)。
通过正负样本支持向量,且与划分超平面平行的超平面称为正负超平面(下图虚线)。
划分超平面的走向实际上是由支持向量决定的,其它样本怎么分布对划分超平面没有任何影响。确定了支持向量,也就确定了划分超平面,但实际上,一开始并不知道那几个样本才是支持向量。
在做样本训练的时候,算出划分超平面跟找出支持向量是同步进行的。

a) 最大间隔距离公式
设划分超平面:

则正负超平面:

左右都除以c,可将上面两个式子进行简化(方面求解):
划分超平面:

正负超平面:

设支持向量坐标点:

支持向量到划分超平面的距离(点线距离计算公式):

因为支持向量在正负超平面上,

所以

正负超平面间的间隔

最后可将问题转化成在限制条件下求极小值的问题:

其中
为目标函数,
为约束条件。
b) 拉格朗日乘数法
我们知道在无约束条件下求极值,可以分别对各个参数求极值等于0,联立成方程组进行参数求解。但如果要在约束条件下求极值,可以通过拉格朗日乘数法将其转化为无约束求极值问题。
拉格朗日乘数法的原理是,通过引入额外的参数,将目标函数跟约束条件连立在同一等式中,将该等式称为拉格朗日函数。可参考该文详细了解拉格朗日乘数法原理
上述问题的拉格朗日函数为:

拉格朗日函数取到极值时的w、b值跟方程组(1)目标函数取到极小值时的w、b值一致。


c) 对偶问题
对偶问题就是为了解决样本属性维度太多求解难的问题,它可以将算法的复杂度降低到只依赖样本个数。
上面的拉格朗日函数

实际上包含了以下的含义:

对上述方程式对应支持向量分类问题的实际描述,可以做如下直观的解释:


其实整个最大间隔问题的求解,就相当于求最小值的最大值问题,我们要找到离划分超平面最近的样本,再确定划分超平面的参数值,使得离它最近的样本到划分超平面的距离尽可能的远。(这就好比,我们要找到一个班级成绩最差的学生,然后使这些最差学生的成绩尽可能的好些)
当然我们的目标函数

是最大间隔的倒数,拉格朗日函数L跟目标函数变化方向是一致的。所以对目标函数或者拉格朗日函数L来说是求最大值的最小值问题,即

又因为函数

是强对偶函数,可以将最大值的最小值问题转化成最小值的最大值问题,转化后的函数如下:




d) SMO优化
采用对偶问题的思路可以将极大值的计算复杂度降低到只跟训练样本数有关,但如果样本数比较大时,计算的开销也是比较大的,于是又在此的基础上进行优化,提出一种高效的算法SMO。

整个迭代的过程是:








非线性问题
1) 高维空间
现实中,原始样本空间往往并不存在一个能正确划分两类样本的超平面。即训练样本往往是线性不可分的。

针对以上问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

如果原始空间是有限维,那么一定存在一个高维特征空间使样本可分。



2) 如何确定核函数
主要一个对称函数所对应的和矩阵半正定,它就能作为核函数使用,事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射。
若核函数选择不合适,则意味着将样本映射到了一个不合适的特征空间。
几种常用的核函数

核函数可以组合使用



