目录
1.1 Logistic回归线性分类器
1.2 SVM概述:
1.3 深入SVM
1.3.1 对偶问题求解的三个步骤
1.3.2 核函数
1.3.3 使用松弛变量处理 outliers 方法
给定一个分类超平面将空间中的数据分为两类,分类超平面为:
使 得,
其中x是n维特征向量,函数g就是logistic函数。
可以看到,将无穷映射到了(0,1)。
也可以对g(z)做一个简化,将其简单映射到y=-1和y=1上。映射关系如下:
一个简单的线性回归分类超平面为:
易知符合1.1的分类器有多个,SVM是要寻找最优的分类器。
定义函数间隔(用表示)为:
求最优超平面问题转化为约束优化为题:
将函数间隔取1,问题转化为:
优化问题可进一步转化为:
因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。
根据拉格朗日对偶性,得到与原问题等价的对偶问题,将约束优化问题转化为无约束优化问题:
把最小和最大的位置交换一下,变成:
因为满足KKT条件所以有d*=p*
(1)、首先固定,要让 L 关于 w 和 b 最小化,我们分别对w,b求偏导数,即令 ∂L/∂w 和 ∂L/∂b 等于零
将以上结果代入之前的L:
(2)利用SMO算法求解对偶问题中的拉格朗日乘子。
(3)求出了,根据,即可求出w,然后通过,即可求出b,最终得出分离超平面和分类决策函数。
注意:所有非Supporting Vector 所对应的系数都是等于零的,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。
Lagrange multiplier得到的目标函数:
注意到如果 xi 是支持向量的话,上式中红颜色的部分是等于 0 的(因为支持向量的 functional margin 等于 1 ),而对于非支持向量来说,functional margin 会大于 1 ,因此红颜色部分是大于零的,而又是非负的,为了满足最大化,必须等于 0 。这也就是这些非Supporting Vector 的点的局限性。
对于一个数据点 x 进行分类,实际上是通过把 x 带入到算出结果然后根据其正负号来进行类别划分的。而前面的推导中我们得到
因此分类函数为:
我们目前求出的f函数还是一个超平面,只能处理线性情况,我们通过引入Kernel函数可以将其推广到非线性情况。
在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一堆数据在二维空间无法划分,从而映射到三维空间里划分:
在我们的分类函数中我们主要是计算内积
有如下线性不可分样本:
显然样本的理想分类超平面为圆
相等于将样本x映射到五维空间(X1,X12,X2,X22,X1X2),后再做分类超平面求解。而求解过程中我们又要计算内积,所以我们直接用一下方法计算高维空间的内积:
我们把这里的计算两个向量在隐式映射过后的空间中的内积的函数叫做核函数:
,
注意:我们之前的计算中先算w,b,再算a。而后将他们带入原式,得到分类函数
b的求解公式为,在整个过程中没有单独计算x。所以我们使用核函数代替内积计算不影响中间任何求解过程。
最终 由如下 dual 问题计算而得:
然后再带入求得w,b。
核函数的精髓就是避开了直接在高维空间中进行计算,而结果却是等价的。
核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。
附:
例如可能并不是因为数据本身是非线性结构的,而只是因为数据有噪音。对于这种偏离正常位置很远的数据点,我们称之为 outlier。outlier 的存在有可能造成很大的影响,
考虑到outlier问题,约束条件由:
变为:
其中称为松弛变量,对应数据点允许偏离的 functional margin 的量。
所以最终的约束优化问题为:
其中 是一个参数,用于控制目标函数中两项(“寻找 margin 最大的超平面”和“保证数据点偏差量最小”)之间的权重。