线性可分:存在一条直线或一个平面或超平面,可以将样本集分开。
非线性可分:不存在......
这里我们假设中间那条直线的方程为:
权重(weight):
偏置(bias):
值得注意的是:在直线的两侧,直线方程分别 大于零 和 小于零 ,这个规定可以是人为的。
假设:有个样本和他们的标签。
其中
规定:如果 ,则 反之,
一个训练样本集在线性可分,是指存在,使得对,有:
(1)若,则
(2)若,则
我们也可以用向量的方式定义线性可分:
(1)若,则
(2)若,则
如果 就取 那么一个训练样本集,在线性可分,是指:
存在,使得对,有:
思考题:
(1)能否给出实际生活中,训练样本集是线性可分和不可分的例子?大多数实际生活中的例子是线性可分还是线性不可分?
(2)请对类别数大于2的情况,给出线性可分与线性不可分的严格数学定义。
(3)请通过数学定义严格证明:在二分类情况下,如果一个数据集是线性可分的,那么一定存在无数多个超平面将这两个类别完全分开。
一、解决线性可分问题;
二、再将线性可分问题中,获得的结论推广到线性不可分的情况
首先解决线性可分问题,对于那无数多个分开各个类别的超平面中,到底哪一个是最好的呢?
结合没有免费午餐定理,我们需要对为什么2号线是最好的做出一定的假设(这种假设可以有很多种):假设训练样本的位置在特征空间上有测量误差,如图:
如果为1号线,则会导致分类错误。而二号线依旧能分类正确。换言之,二号线更能抵御训练样本位置的误差。接下来是个关键的问题,二号线是怎么画出来的?
基于最优化理论,对于任何一条分开圆圈和叉的直线,把这条直线朝一侧平行地移动,直到插到一个或几个训练样本为止,同时也朝另外一侧相同做法,如图所示:
定义那两条直线为数据集的支持向量(support vector),而在其余样本上的平行直线称为:非支持向量把平行线之间地距离称为间隔(margin)。而我们想要求得的二号线是使间隔最大的线。为了使找到的线唯一,还需让这条线在上下两个平行线的中间。
总而言之,支持向量机寻找最优分类直线应满足:
(1)该直线分开了两类。
(2)该直线最大化间隔。
(3)该支线处于间隔的中间,到所有支持向量的距离相等。
思考题:证明:在线性可分的条件下,有且只有唯一一条直线满足上面三个条件。
目标:最小化(Minimize):
限制条件:,
可以看出来 是个凸优化问题( Convex Optimization )中的二次规划问题
二次规划的定义:
(1)目标函数(Objective Function)是二次项。
(2)限制条件是一次项。
凸优化问题要么无解,要么只有唯一的最小值。
——在实际当中,如果一个问题是凸优化问题,那么我们会把它当成一个已经解决的问题,
因为凸优化问题只有唯一的一个全局极值。我们可以应用梯度下降的算法,可以很方便求得它的解。
求解凸优化问题是一门专门的课程。
这里需要注意的是,已知:训练样本集, 待求:
想要推出以上式子,需要知道以下事实:
事实1: 与 是同一个超平面
基于事实1,我们可以用 去缩放 :
最终使在支持向量 上有:
而在支持向量外侧,非支持向量上有:
从而有了限制条件: (其中: 是为了协调超平面的左右。)
值得注意的是如果把上式的 改成 ,那么 会比原来相差一个 ,仍代表同一个平面。
最大化支持向量到超平面的距离 等价于 最小化 ,为了后续求导会更加方便,
把优化问题定为:最小化
思考题:支持向量机的限制条件如果从大于1变成大于等于2,则(w,b)会变成(aw,ab),如果Xi和w都是M维的向量,那么算出a是多少?——我猜是2.
显然无解,这时需要适当地放松限制条件,使上面的最优化问题变得有解。
思路:设置松弛变量 (slack variable)
限制条件改写为:
当然我们还应该加入新的限制使每一个 能够尽量小。
改造后的支持向量机优化版本:
——比例因子C起到了平衡两项的关键作用,是人为设定的,我们把认为事先设定的参数叫做算法的超参数(Hyper Parameter)
一般在实际应用中,会不断变化C的值,同时测试算法的识别率,再选取合适的超参数C。
支持向量机是超参数很少的算法模型。
问题在于:我们的算法模型是线性的,即我们假设分开两类的函数是线性的,但是线性模型的表现力是不够的。因此我们只有扩大可选的函数范围,使它超越线性,才有可能应对各种复杂的线性不可分场景。
思考题:对于上图,需要有一个椭圆,来分开圆圈和叉,另一个方面,我们也可以对特征空间的两个维度x1和x2做某种非线性变换从而把本来线性不可分的线性样本集变为线性可分。这个变换如何设计?
神经网络采取的是多层的非线性函数的组合的方式,而支持向量机的做法则是通过特征空间由低维映射到高维,然后在高位的特征空间当中仍然用线性超平面对数据进行分类。
原本线性不可分的数据集变成了线性可分。
一般结论:
假设在一个M维空间上随机取N个训练样本,随机的对每一个训练样本赋予标签+1或-1,同时假设这些训练样本线性可分的概率为P(M)则有当M趋于无穷大时,P(M)=1.
将训练数据从低维映射到高维,会增大线性可分的概率。
其实很好理解,当我们增加特征空间的维度时,待估参数(w,b)的维度也增加。即整个算法模型的自由度增加。当然就更有可能分开低维时候无法分开的数据集。
如何构造 就成了一个关键性的问题。这里先假设 已经确定,那么原先的优化问题只需改变一点点:
我们仍然可用凸优化理论求解。
理念是这样的:我们可以不用知道的具体形式,取而代之,如果对任意两个向量X1和X2.
我们知道 那么我们仍然能够通过一些技巧获得一个测试样本的类别信息,从而完成对测试样本类别的预测。在这里我们定义为核函数(Kernel Function
并且结果是一个实数。核函数和映射 是一一对应的关系。
——需要指出的是核函数的形式不能随意的取。需要满足一定的条件才能分解为两个内积的形式。
能写成的充要条件:
(1) (交换性)
(2)有 (半正定性)
虽然无法知道的值,但却可以通过核函数有办法知道的值。
引入原问题和对偶问题:
原问题(Prime problem):
最小化: 自变量为: 多维向量
定义该原问题的对偶问题过程如下:
首先定义一个函数:
其中:
对偶问题如下:
最大化::
(意思是:遍历所有定义域内的,找到使最小的,并把这个值赋给)
限制条件:
综合员问题和对偶问题定义得到:
定理一:
如果是原问题的解,是对偶问题的解,则有
其中: ,,
我们把定义为对偶差距(Duality Gap)
强对偶定理:
如果,为凸函数,则有,即对偶差距为0.
换言之,如果原问题的目标函数是凸函数,而限制条件是线性函数,那么原问题的解和对偶问题的解就会相等
KKT条件:
若,则定理一中必然能够推出,对于所有的,
要么,要么
1. 首先证明支持向量机的原问题满足强对偶定理:
为了将限制条件全部写成小于等于0的形式,先将变号,整理一下得到:
可以看到这两个限制条件都是线性的,而目标函数是凸的。所以满足强对偶定理。
值得注意的是这里的 自变量指的是 的组合。
在这个问题当中没有等式约束条件,不存在
对偶问题如下:
因为是遍历每一个的组合,我们可以分别对三个变量求导,并令导数为0。可以得到:
基于此对偶问题给出支持向量机算法的统一流程:
首先把对偶式子中的用代替。解出所有的,
可以根据第一个求导的式子: 得到:
再由第一个对偶问题根据KKT定理得到:
而如果对某个,且,则根据KKT条件,必有;且:
所以只需要找一个 ,就能得到:
算出了b,那么测试样本的类别信息也就知道了
根据之前的式子展开得到:
这一结论被称为核函数戏法(Kernel Trick)
最后得到如下判别标准:
我们一旦知道了所有的和,我们就完成了支持向量机的训练过程。
思考题:推到目标函数中的支持向量机训练和测试流程。
这里gama就是
暂时先想写这么多了。。。