`
cloudtech
  • 浏览: 4578471 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

【svm学习笔记】svm_理论基础5

 
阅读更多

【线性不可分问题 之 松弛变量】


经过核函数变换,原则上已经能把绝大多数样本分开了(如果还不能大规模分开,那要查一查特征选择那块儿了,是不是抽取特征太少,或者抽取方法不对),剩下的少量样本还不能分开,怎么办?

这里的办法是特殊样本特殊对待,如果样本很“离群”,我们就认为是噪声,不加理会;如果不太“离群”,我们就要多花精力去看看。不过思路是这样,怎么体现在目标优化函数上?这就引入了松弛变量。当我们用固定间隔去分类的时候,叫做“硬分类”;如果对每个训练样本一个不同的间隔,不就可以解决上面的问题么,这叫做软分类。

为了方便对比,我们把原来优化的目标函数也列出来,如下:

min pow (||w||, 2.0) / 2

subject to y(i) ( <w * x(i)> + b ) -1 >= 0

新的目标函数调整如下:

min pow (||w||, 2.0) / 2 + C * SUM_i ( eps(i) )

subject to y(i) ( <w * x(i)> + b ) >= 1 - eps(i)

又一次感受到了在这里面输入公式的痛苦。简单解释一下,先看约束条件部分的修改,对于样本i,增加了它对应的松弛变量 eps(i),eps是epsilon的缩写,是希腊的第五个字母。这里面,知道他是一个比较小的实数就可以了,至少比1小。再看一下目标函数,变化也不大,加上了所有样本的松弛变量的和,同时乘以一个系数C。

据说,变换后的问题,依然是有解的,也是可以解的。至于是怎么解的?没说。不过线性可分的时候也没说完么。对于我们来讲,直到它有解就可以了。

那么这一节我的收获是什么呢?仅仅是知道线性不可分问题通过核函数和松弛变量可以转化为线性可分问题?我个人的收获是:

1. 松弛变量不重要,但是C很重要。在svm中被称为惩罚因子。

2. 其作用是在建模的时候以多大程度来重视那些离群点。C越大,表示惩罚越大,越重视,模型会尽量迎合这些点;否则,越不重视。

3. 可以有不止一个C,例如:对于每个类别都有不同的C。这很有现实意义,当某些样本点在现实中需要更加重视的时候,或者说对这类样本点的误分会造成较大影响时,C要设置的比较大。通常,不同C的取值可以简单的按照样本之间的比例来,如:正反例样本比例失衡(这也被称为样本集偏斜问题——unbalanced,在垃圾文本过滤的时候就是这样),比例为500:1,即每500个正例样本,只对应1个反例样本。此时反例样本更加珍贵。那么,整理惩罚之间的比例与样本数目之间成反比。如:C+设置为1,C-就设置为500(样本比例是N+:N- == 500:1)。


好了,把我这两天看懂的,都说了,接下来要看看那个凸二次规划到底怎么解决的?模型是怎么训练出来的。有的看了。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics