理论教育 使用松弛变量处理异常值的方法

使用松弛变量处理异常值的方法

时间:2023-06-17 理论教育 版权反馈
【摘要】:在我们原来的SVM模型里,异常值的存在有可能造成很大的影响,因为超平面本身就是只有少数几个支持向量组成的,如果这些支持向量里又存在异常值的话,其影响就很大了。图4.4带有噪声的线性结构数据为了处理这种情况,SVM允许数据点在一定程度上偏离超平面。图4.5拉格朗日算子取值原来的约束条件为:现在考虑到异常值问题,约束条件变成了:其中ξi≥0称为松弛变量,对应数据点xi允许偏离函数间隔的量。

使用松弛变量处理异常值的方法

对于非线性数据的情况,SVM的处理方法是选择一个核函数k〈·,·〉,来解决在原始空间中线性不可分的问题。当有些数据可能并不是因为数据本身是非线性结构的,而只是因为数据有噪声。对于这种偏离正常位置很远的数据点,我们称之为异常值。在我们原来的SVM模型里,异常值的存在有可能造成很大的影响,因为超平面本身就是只有少数几个支持向量组成的,如果这些支持向量里又存在异常值的话,其影响就很大了。

例如图4.4用黑圈圈起来的那个点是一个异常值,它偏离了自己原本所应该在的那个半空间,如果直接忽略掉它的话,原来的分隔超平面还是挺好的,但是由于这个异常值的出现,导致分隔超平面不得不被挤歪了,变成图中黑色粗线所示(这只是一个示意图,并没有严格计算精确坐标),同时边缘也相应变小了。当然更严重的情况是,如果这个异常值再往右侧移动一些距离的话,我们将无法构造出能将数据分开的超平面来。

图4.4 带有噪声的线性结构数据

为了处理这种情况,SVM允许数据点在一定程度上偏离超平面。例如图4.4中,到黑色实线所对应的距离,就是该异常值偏离的距离,如果把它移动回来,就刚好落在原来的边缘超平面上,而不会使得超平面发生变形了。

对于远离超平面的点值为0;对于边缘上的点值在[0,1/L]之间,通常我们设L为训练数据集个数,即L=n;对于异常值数据和内部的数据值为1/L。如图4.5。

图4.5 拉格朗日算子取值

原来的约束条件为:

现在考虑到异常值问题,约束条件变成了:

(www.daowen.com)

其中ξi≥0称为松弛变量(slack variable),对应数据点xi允许偏离函数间隔的量。当然,如果我们运行ξi任意大的话,那任意的超平面都是符合条件的了。所以,我们在原来的目标函数后面加上一项,使得这些ξi的总和也要最小,即

其中C是一个参数,用于控制目标函数中两项(“寻找间隔最大的超平面”和“保证数据点偏差量最小”)之间的权重。注意,其中ξi是需要优化的变量,而C是一个事先确定好的常量。完整地写出来是这个样子

分析方法和前面一样,转换为另一个问题之后,我们先让拉格朗日函数L(w,b,ξ,α,r)针对w、b和ξ最小化。

将w带入L(w,b,ξ,α,r)并化简,得到和原来一样的目标函数:

不过,由于我们得到C-αi-ri=0,而又有ri≥0(作为拉格朗日乘子的条件),因此有αi≤C,所以得到对偶问题

把前后的结果对比一下,可以看到唯一的区别就是现在对偶问题α多了一个上限C。而核函数的非线性形式也是一样的,只要把〈x(i),x(j)〉换成k〈x(i),x(j)〉即可。

总之,SVM它本质上即是一个分类方法,用wTx+b定义为分类函数,于是求w,b为寻最大间隔,引出1/2‖w‖2,继而引入拉格朗日因子,化为对拉格朗日乘子α的求解(求解过程中会涉及一系列最优化或凸二次规划等问题),如此,求w,b与求α等价。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈