支持向量机(SVM)详细推导及理解(1)

支持向量机包含三种:

(1)线性可分支持向量机:当训练数据线性可分时,可通过硬间隔最大化,学习一个线性的分类器,叫线性可分支持向量机,也称硬间隔支持向量机

(2)线性支持向量机:当训练数据近似线性可分时,可通过软间隔最大化,也学习一个线性的分类器,叫线性支持向量机,也称为软间隔支持向量机

(3)非线性支持向量机:当训练数据线性不可分时,通过使用核函数技巧及软间隔最大化,学习一个非线性的支持向量机

线性可分的数据就是代表这些数据能够用一条直线分开(二分类),如下图所示:

                                                                    支持向量机(SVM)详细推导及理解(1)

近似线性可分的数据如下图所示,即绝大多数的样本都能被准确分类,只有少数样本出现错误:

                                                                        

                                                                     支持向量机(SVM)详细推导及理解(1)

所以对软间隔和硬间隔的理解:当训练数据是线性可分的,能够找到一个平面百分百的将数据分类正确,此时训练数据到超平面的距离就叫做硬间隔(粗俗的讲就是实打实的距离);如果训练数据近似线性可分,同样可以找到一个超平面能够将绝大部分的数据分类正确,只有少数的样本分类错误,如果能容忍这种错误的存在,此时训练数据到超平面的距离就是软间隔(粗俗理解就是不在意这些细节)。简言之,硬间隔就是不能容忍错误分类点的存在,软间隔就是允许错误分类点的存在。

 

线性可分支持向量机

定义:给定线性可分训练数据集,由数据集训练得到超平面为

                                                  支持向量机(SVM)详细推导及理解(1)

决策函数为

                                                   支持向量机(SVM)详细推导及理解(1)

成为线性支持向量机。

点到直线的距离:

有直线支持向量机(SVM)详细推导及理解(1),点(支持向量机(SVM)详细推导及理解(1)支持向量机(SVM)详细推导及理解(1))到该直线的距离为:

                                            支持向量机(SVM)详细推导及理解(1)                        (1)

即:

                                              支持向量机(SVM)详细推导及理解(1)                   (2)

如果数据是 n 维时,此时直线就变成了平面,用 支持向量机(SVM)详细推导及理解(1) 表示平面的法向量得:

                                                    支持向量机(SVM)详细推导及理解(1)                             (3)

线性可分支持向量机建立超平面:

给定训练数据集支持向量机(SVM)详细推导及理解(1)支持向量机(SVM)详细推导及理解(1)是标签,因为是二分类,取值只有-1,+1。

                                                          支持向量机(SVM)详细推导及理解(1)

假设数据分布如上图所示,我们想找一条直线能够把数据分开,有无数条直线可以做到,但是这么多直线中选哪一个最好呢?

线性支持向量机的原理就是几何间隔最大化,从而确定这条直线,即上图中粗的黑线。

于SVM的超平面定义为:支持向量机(SVM)详细推导及理解(1),其中支持向量机(SVM)详细推导及理解(1)是超平面的法向量,支持向量机(SVM)详细推导及理解(1)为训练数据,由上文(3)式可知数据点到超平面的距离为(此处公式标号依然为3):

                                                                 支持向量机(SVM)详细推导及理解(1)                                (3)       

函数间隔:           

如果此时我们想比较两个点 支持向量机(SVM)详细推导及理解(1)支持向量机(SVM)详细推导及理解(1)到超平面的距离,把 支持向量机(SVM)详细推导及理解(1)支持向量机(SVM)详细推导及理解(1)带入(3)式后发现分母都是相同的,所以想要比较两个点到平面的距离时,只需要比较分子就可以了,所以 支持向量机(SVM)详细推导及理解(1) 能够相对表示点到平面的远近,而支持向量机(SVM)详细推导及理解(1)的符号与类别标签的符号是否一致表示了分类正确与否(因为在做分类时,带入数据点计算支持向量机(SVM)详细推导及理解(1),当支持向量机(SVM)详细推导及理解(1)为正时 支持向量机(SVM)详细推导及理解(1) 也为正,然后跟 支持向量机(SVM)详细推导及理解(1) 对应的标签 支持向量机(SVM)详细推导及理解(1) 对比,如果 支持向量机(SVM)详细推导及理解(1) 和 支持向量机(SVM)详细推导及理解(1) 的符号相同说明分类正确,否则分类错误)。所以可以用支持向量机(SVM)详细推导及理解(1)来表示分类的正确性,我们把支持向量机(SVM)详细推导及理解(1)称为函数间隔。

定义样本点 支持向量机(SVM)详细推导及理解(1) 到超平面 支持向量机(SVM)详细推导及理解(1) 的函数间隔为:

                                                     支持向量机(SVM)详细推导及理解(1)                      (4)

而对于整个数据集 支持向量机(SVM)详细推导及理解(1),我们选取所有样本点中最小的函数间隔作为整个数据集到超平面的函数间隔,即

                                                        支持向量机(SVM)详细推导及理解(1)

几何间隔:

函数间隔衡量的是点到超平面的远近,但是无法决定所要选择的超平面是哪一个。因为当我们把 支持向量机(SVM)详细推导及理解(1) 和 支持向量机(SVM)详细推导及理解(1) 都扩大2倍,那么函数间隔也会跟着扩大2倍,但是超平面并没有发生改变,还是原来的超平面。所以需要对法向量加某些约束,对 支持向量机(SVM)详细推导及理解(1) 使用L2范数进行规范化,使得间隔是确定的。

定义样本点 支持向量机(SVM)详细推导及理解(1) 到超平面 支持向量机(SVM)详细推导及理解(1) 的几何间隔为:

                                                    支持向量机(SVM)详细推导及理解(1)                  (5)

而对于整个数据集 支持向量机(SVM)详细推导及理解(1),我们选取所有样本点中最小的几何间隔作为整个数据集到超平面的几何间隔,即

                                                     支持向量机(SVM)详细推导及理解(1)

函数间隔和几何间隔的关系:

可以看出函数间隔和几何间隔的关系为:

                                                       支持向量机(SVM)详细推导及理解(1)                                          (6)

上文说了,我们找到了这个几何间隔之后,因为几何间隔 支持向量机(SVM)详细推导及理解(1) 是所有样本点中距离超平面最小的值,所有其他样本点距到超平面的距离肯定都不小于 支持向量机(SVM)详细推导及理解(1),即  支持向量机(SVM)详细推导及理解(1)

注:其实这些几何间隔为 支持向量机(SVM)详细推导及理解(1) 就是支持向量。

同时我们希望能够找到一组 支持向量机(SVM)详细推导及理解(1) 使这个几何间隔最大,即 支持向量机(SVM)详细推导及理解(1)

所以问题转化成:

                                      支持向量机(SVM)详细推导及理解(1)        (7)

支持向量机(SVM)详细推导及理解(1)表示约束条件。

因为把(6)式带入(7)得:

                                       支持向量机(SVM)详细推导及理解(1)                  (8)

由于函数间隔的取值对优化问题没有影响,因为无论函数间隔取值多少,最终我们想要找到的是支持向量机(SVM)详细推导及理解(1),所以可以令函数间隔为1,即 支持向量机(SVM)详细推导及理解(1) 。注意到最大化 支持向量机(SVM)详细推导及理解(1) 就等于最小化  支持向量机(SVM)详细推导及理解(1),所以优化问题转化成:

                                        支持向量机(SVM)详细推导及理解(1)                  (9)

注:这里我们令支持向量机(SVM)详细推导及理解(1),也就意味着到超平面的距离为1的点都是支持向量,即下图中画圈的点,如下图所示:

                                               支持向量机(SVM)详细推导及理解(1)

最终问题转化成了在一个线性约束下的二次优化问题,采用拉格朗日乘子法:

                           支持向量机(SVM)详细推导及理解(1)          (10)

现在需要最大化 支持向量机(SVM)详细推导及理解(1),所以问题变成  支持向量机(SVM)详细推导及理解(1).

根据拉格朗日的对偶性,原始的极小极大问题变成了现在的极大极小问题 支持向量机(SVM)详细推导及理解(1).


 (1) 求  支持向量机(SVM)详细推导及理解(1)

让 支持向量机(SVM)详细推导及理解(1)  分别对 支持向量机(SVM)详细推导及理解(1) 求偏导,使导数为 0:

                             支持向量机(SVM)详细推导及理解(1)   得          支持向量机(SVM)详细推导及理解(1)       (11)

                             支持向量机(SVM)详细推导及理解(1)                 得            支持向量机(SVM)详细推导及理解(1)          (12)

把式(11),(12)带入式(10)得:

         支持向量机(SVM)详细推导及理解(1)  支持向量机(SVM)详细推导及理解(1)

                              支持向量机(SVM)详细推导及理解(1)  支持向量机(SVM)详细推导及理解(1)

                             支持向量机(SVM)详细推导及理解(1)

                             支持向量机(SVM)详细推导及理解(1)

所以   支持向量机(SVM)详细推导及理解(1)


(2) 求 支持向量机(SVM)详细推导及理解(1) 对 支持向量机(SVM)详细推导及理解(1) 的极大值:

问题变为:  支持向量机(SVM)详细推导及理解(1)

约束条件为: 支持向量机(SVM)详细推导及理解(1), 支持向量机(SVM)详细推导及理解(1)

所以只要知道 支持向量机(SVM)详细推导及理解(1)支持向量机(SVM)详细推导及理解(1) 也就知道了,假设最优解为 支持向量机(SVM)详细推导及理解(1)

由式(11)可知  支持向量机(SVM)详细推导及理解(1),假设此时得到的 支持向量机(SVM)详细推导及理解(1) 的最优解为 支持向量机(SVM)详细推导及理解(1),根据KKT条件可以得到(KKT定理可以参考李航老师的《统计学习方法》):

至少存在一个 支持向量机(SVM)详细推导及理解(1) 使:

                                                   支持向量机(SVM)详细推导及理解(1)    

反证法,假设支持向量机(SVM)详细推导及理解(1) ,由式(11)可知支持向量机(SVM)详细推导及理解(1) ,而 支持向量机(SVM)详细推导及理解(1) 时,带入式(9)可得

                                                      支持向量机(SVM)详细推导及理解(1)                         (13)

因为 支持向量机(SVM)详细推导及理解(1) 的取值只有+1和-1,要使上式成立,支持向量机(SVM)详细推导及理解(1) 的取值是个不定值,说明超平面有多个,与原始问题矛盾,故至少存在一个 支持向量机(SVM)详细推导及理解(1) ,对此 支持向量机(SVM)详细推导及理解(1) 有:

                                                   支持向量机(SVM)详细推导及理解(1)         (14)

因为 支持向量机(SVM)详细推导及理解(1),所以可得:

                                                       支持向量机(SVM)详细推导及理解(1)                   (15)

把式(11)带入式(15),因为 支持向量机(SVM)详细推导及理解(1) ,所以  支持向量机(SVM)详细推导及理解(1),进而得到:

                                                    支持向量机(SVM)详细推导及理解(1)

至此  支持向量机(SVM)详细推导及理解(1) 和 支持向量机(SVM)详细推导及理解(1) 都已经得到,所以可以得到超平面: 支持向量机(SVM)详细推导及理解(1)

分类决策函数为:支持向量机(SVM)详细推导及理解(1)

注:其实由上面的式(15)可以看出,一定存在一些点使使(15)成立,即 支持向量机(SVM)详细推导及理解(1),这个式子不就是代表函数间隔为1嘛,就是一定会存在支持向量,有了支持向量才能支撑起超平面。

上面我们只是假设已经求得了支持向量机(SVM)详细推导及理解(1),所以关键问题就是如何求 支持向量机(SVM)详细推导及理解(1) ,支持向量机中求 支持向量机(SVM)详细推导及理解(1) 的方法是SMO(Sequential Minimal Optimization)即序列最小最优化,感觉SMO其实不属于支持向量机算法的一部分,只是一种优化方法,所以没怎么着重看(手动捂脸),下面是自己的理解。

SMO的思想是因为拉格朗日乘子由许多个,即 支持向量机(SVM)详细推导及理解(1) 有许多个,每次只选择其中两个变量作为未知量,其他乘子作为已经量,将N个问题转变成两个变量的求解问题。比如对于线性可分支持向量机的目标函数:

                                   支持向量机(SVM)详细推导及理解(1)

                                   约束条件为: 支持向量机(SVM)详细推导及理解(1), 支持向量机(SVM)详细推导及理解(1)

一开始选取两个变量 支持向量机(SVM)详细推导及理解(1) 作为未知量,其他因子 支持向量机(SVM)详细推导及理解(1)当作已经的来求目标函数的最小值,求出支持向量机(SVM)详细推导及理解(1)再带入进去,再选取支持向量机(SVM)详细推导及理解(1)求目标函数最小值,求出后继续带入,直到所有 支持向量机(SVM)详细推导及理解(1) 都得到(中间过程其实挺复杂的,个人理解手动捂脸)。

参考:

1.李航《统计学习方法》

2.机器学习之深入理解SVM