看博客或教材时,总觉得推导写的太简单,所以这里自己推导一下支持向量机的公式。部分推导会写在纸上,贴图上来,因为太长了,用latex敲实在是麻烦,如果哪里看不清楚或者哪里有误,还望评论指出,我及时修改。会不断更新的。
目录
三种基本的SVM:
分类 | 使用场景 | 备注 |
线性可分SVM | 数据完全线性可分 | 最原始、最基本的SVM |
线性SVM | 数据大多线性可分 | 加入一个扰动 |
非线性SVM | 数据线性不可分 | 引入核函数,最一般情况 |
三者关系:
非线性SVM的核函数,其就简化成了线性SVM;
线性SVM的扰动恒等于0时,其就简化成了线性可分SVM;
核技巧:
对于数据线性不可分情况,基本思路是引入映射函数,把数据映射到更高维空间,在更高维空间进行分类,核函数定义为,即两个向量在特征空间(映射后空间)的内积,这种定义内积却不直接定义映射函数的技巧即为核技巧。为何这样定义,看后面推导你就会发现,所有用到映射函数的场景,全是内积。
推导
下面推导最一般情况下的SVM(含有核函数和扰动)。
输入:
数据,i=1,2……m
求解:
超平面,也就是求解和
输出:
证明wT是法向量
推导点到平面距离公式
定义函数间隔为,不难看出这是一个相对距离,去掉了点到超平面的距离公式中的分母,只要该数据点的分类判定正确,与是等价的。
优化函数的构建
要引出带的更一般情况的优化函数,我们需要先讨论一种更简单的场景,若数据在经过映射后,在高维空间完全线性可分,则利用函数间隔设置一个安全距离,该安全距离的值设为1,也就是支持向量(在完全线性可分时,支持向量就是距离分割超平面函数间隔为1的数据点,也是离分割平面最近的点,没什么神秘,就是数据映射的点)到超平面的函数间隔等于1,如下图:
其余点到分割超平面的函数间隔就大于1,即对所有数据点满足下式:
为何不用几何间隔定义也很容易想清楚,几何间隔是个绝对的距离,数据多种多样,根本无法保证支持向量到分割平面的几何间隔等于1,但函数间隔这一相对距离就可以。
由于,故
此时,点到超平面距离
两边支持向量的间隔就是
所以我们得到了我们要优化的目标函数即是,它越大,SVM安全距离越大,容错率越高,SVM越健壮。
等价于
此时我们在进一步考虑,即使进行映射后,少部分数据在高维空间仍然线性不可分,但绝大部分满足,这时我们引入一个扰动,容许函数间隔不完全满足大于等于1,即:
对应的优化函数也应改为:
C为正则化系数,需手动调节,直观来看,我们优化的目标函数要求尽可能的小,同时也要尽可能的小,即我们允许扰动的存在,但越小越好,最好没有。
下面讨论含这一一般情况。
含有不等式约束的优化
这一步用到了拉格朗日乘数法及其对偶问题,KKT条件。
利用拉格朗日乘数法,构造:
注意不等式约束化为小于等于0的标准结构。
求,其原始问题为:
对应对偶问题为:
注意原始问题与等价,同时这里满足原始问题与对偶问题等价的条件,所以对偶问题也与求的优化问题等价,所以下面通过求解对偶问题来求解。注意
现在求等价于求
这里写一下KKT条件有哪些:
9式10式中的两个乘子必有一个为0,同时根据9,10,11,12四个式子以及,我们可以得到如下推论:
的值 | 的值 | 的值 | 的值 | |
=0 | =C | =0 | >1 | 在安全间隔外,数据十分安全,判定很准确 |
(0,C) | (0,C) | =0 | =1 | 为支持向量 |
=C | =0 | (0,1) | (0,1) | 在安全间隔内,判定仍正确 |
=C | =0 | =1 | =0 | 在分割面上 |
=C | =0 | >1 | <0 | 被误判 |
SMO
SMO就是一种继续求解上面的优化问题的的启发式方法,主要包含两个过程,第一步找到两个要优化的和,固定剩余m-2个;第二步通过优化算法优化和。不断迭代这两步,直到所有的满足KKT条件。
的确定为外层循环,选KKT条件被破坏最大的,先遍历,如果都不符合要求,遍历整个数据集。
的确定为内层循环,此时已经确定,要选出使得降幅最大的,若找不到合适的,就换一个,重新走外层循环。
假设和已经选出,下面的思路是,使用旧的和以及固定了的,找出新的和
由于已经固定,不妨令,t为定值(根据,t是由以及确定),下面把和筛出来,同时扔掉不含和的其余项(用直线画出,下一步自动去掉),时刻记着。
由于,所以,进一步得到,带入上面的结果继续化简:
上式对求偏导,令结果等于0,即
下面分情况讨论。
1. 时,
设超平面为,即
进一步化简
我们的目标是用旧的和更新出新的和,且,,由于暂时未考虑用导数得到的是否在作用域内,所以用来表示这一中间状态,把代入上式继续化简,
目前约束的有如下不等式
接下来就要讨论的作用域
2. 时
根据二次函数与一次函数图像,只可能在边界上出现,即上面讨论的L或H,代入计算两点计算L,取最小的那个就可以了
求出之后,由下式计算求出:(牢记,且)
每一次更新和,还要同步更新超平面与
不难看出主要任务就是更新b,b的更新公式推导如下:
至此,所有推导大致讲解完毕,希望没有把你们讲糊涂吧,我个人觉得写得已经很详细了。