松弛变量

  • 更新时间: 2018-09-17
  • 来源: 原创或网络
  • 浏览数: 17次
  • 字数: 7760
  • 发表评论

1 Slack Variables

Slack variables are defined to transform an inequality expression into an equality expression with an added slack variable. The slack variable is defined by setting a lower bound of zero (>0).

Inequality Constraint Form

x > b

Equality Constraint Form with Slack Variable

x = b + slack
slack > 0

当样例线性不可分时,我们可以尝试使用核函数来将特征映射到高维,这样很可能就可分了。然而,映射后我们也不能100%保证可分。那怎么办呢,我们需要将模型进行调整,以保证在不可分的情况下,也能够尽可能地找出分隔超平面

看下面两张图:

松弛变量,by 5lulu.com

可以看到一个离群点可能是噪声)可以造成超平面的移动,间隔缩小,可见以前的模型对噪声非常敏感。再有甚者,如果离群点在另外一个类中,那么这时候就是线性不可分了

这时候我们应该允许一些点游离并在在模型中违背限制条件函数间隔大于1)。我们设计得到新的模型如下(也称软间隔):

松弛变量,by 5lulu.com

引入非负参数后(称为松弛变量),就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,或者函数间隔是负数,即样本点在对方的区域中。而放松限制条件后,我们需要重新调整目标函数,以对离群点进行处罚,目标函数后面加上的松弛变量,by 5lulu.com就表示离群点越多,目标函数值越大,而我们要求的是尽可能小的目标函数值。

这里的C是离群点的权重,C越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。我们看到,目标函数控制了离群点的数目和程度,使大部分样本点仍然遵守限制条件。

引入松弛变量惩罚因子)后,有一种很常用的变形可以用来解决分类问题中样本的“偏斜”问题。

先来说说样本的偏斜问题,也叫数据集偏斜unbalanced),它指的是参与分类的两个类别(也可以指多个类别)样本数量差异很大。比如说正类有10000个样本,而负类只给了100个,这会引起的问题显而易见,可以看看下面的图:

松弛变量,by 5lulu.com

方形的点是负类。是根据给的样本算出来的分类面,由于负类的样本很少很少,所以有一些本来是负类的样本点没有提供,比如图中两个灰色的方形点,如果这两个点有提供的话,那算出来的分类面应该是松弛变量,by 5lulu.com,他们显然和之前的结果有出入,实际上负类给的样本点越多,就越容易出现在灰色点附近的点,我们算出的结果也就越接近于真实的分类面。但现在由于偏斜的现象存在,使得数量多的正类可以把分类面向负类的方向“推”,因而影响了结果的准确性。

对付数据集偏斜问题的方法之一就是在惩罚因子上作文章,那就是给样本数量少的负类更大的惩罚因子,表示我们重视这部分样本,因此我们的目标函数中因松弛变量而损失的部分就变成了:

松弛变量,by 5lulu.com

其中是正样本,松弛变量,by 5lulu.com是负样本。libSVM这个算法包在解决偏斜问题的时候用的就是这种方法

怎么确定呢?它们的大小是试出来的(参数调优),但是他们的比例可以有些方法来确定。咱们先假定说是5,那确定的一个很直观的方法就是使用两类样本数的比来算,对应到刚才举的例子,松弛变量,by 5lulu.com就可以定为500(因为10,000:100=100:1)。

但是这样并不够好,回看刚才的图,你会发现正类之所以可以“欺负”负类,其实并不是因为负类样本少,真实的原因是负类的样本分布的不够广(没扩充到负类本应该有的区域)。所以给松弛变量,by 5lulu.com确定比例更好的方法应该是衡量他们分布的程度。比如可以算算他们在空间中占据了多大的体积,例如给负类找一个超球——就是高维空间里的球啦——它可以包含所有负类的样本,再给正类找一个,比比两个球的半径,就可以大致确定分布的情况。显然半径大的分布就比较广,就给小一点的惩罚因子。

但是这样还不够好,因为有的类别样本确实很集中,这不是提供的样本数量多少的问题,这是类别本身的特征,这个时候即便超球的半径差异很大,也不应该赋予两个类别不同的惩罚因子。这样应该怎么解决呢……实际中,完美的方法是没有的,只要根据需要,选择实现简单又合用的就好了


标签: 核函数 线性 超平面 松弛变量 c

我来评分 :6
0

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议