支持向量机SVM(4)
来源:互联网 发布:ife矩阵结果分析 编辑:程序博客网 时间:2024/06/04 17:41
之前推导的Kernal SVM算法带来了很多好处,但是存在过拟合问题。分析这个问题产生的原因有2个:
1) 核函数表达能力太强,too powerful
2) 我们坚持要求每个样本点都要分对,不允许有错误,这样一些噪音样本会导致过拟合。
如上图,虽然第一个分类有某些点分类错误,但直觉上我们认为这是一种更合理的方式,而第二个图坚持分类正确,但是边界太复杂。
如和解决这个问题,自然而然的想法是容许一些错误,也就是我们放弃一些噪音点。寻找一个次优解。以前是怎么解决的。回想PLA算法,当数据线性不可分的时候,我们有Pocket PLA算法,寻求误差最小的解。将这个思想和hard SVM结合起来,或许就能解决这个问题。
可见最小化目标变成了2项,第一项是力求margin最大化,第二项是我们犯错的大小,C这是权衡二者的权重。C很大,最小化的话第二项必须很小,说明我们力求少犯错,反之,这是力求margin最大。
注意在条件中我们把样本分成了两部分。正确的和不正确的。为了方便我们将上面的最优化问题换个表达方式,如下:
我们称这样的模型为:soft SVM。
观察上面的模型,它是非线性的,也不是一个Qp问题,没办法求解。还有一个问题是,对于犯错误的我们就定义误差为1,否则为0,不能表达误差的大小。比如举例margin越近的误差值应该越小,反之越大。于是我们引入一个新的变量表示第n个样本引入的误差,替换掉原来errorcount的方式。于是Soft SVM为题变为:
这样就变成了一个含有二次项和线性项的二次目标。
Dual Problem
为了消除最优化问题对于d的依赖,回想以前是怎么做的,没错通过朗格朗日乘子引出对偶问题。
不同的是,这里约束表达式有2个,所以有2个乘子,分别是αn和βn.转化后的等价问题是:
为了简化αn和βn ,推导如下:
简化后为题变为:
这个表达式我们很熟悉,没错,就是前面的Hard SVM,用和前面相
将这些条件代入就得到了标准的Soft SVM Dual:
Kernel Soft-Margin SVM
引入Kernal并运用二次规划问题得到KernelSoft-Margin SVM的算法步骤如下:
基本上和Hard SVM相同,注意还有第三步没有解决,之前我们求解b是根据互补松弛性,推出只需要一个SVS就可以计算出b。
Soft-MarginGaussian SVM的实例:
αn的物理意义:
1) 不是支持向量,图中的×和o,对应于αn=0
2) Free SV,这些向量处于margin的边界上,图中用□表示,对应0< αn <C
3) Bounded SV,位于margin内部,是受到惩罚的向量,对应αn=C
Practical Need: Model Selection
我们的模型中都有很多参数,比如对于高斯核的SOFT SVM算法,我们有参数γ和C,该如何选择?
不同参数下的分类边界,横轴代表C,纵轴代表γ
其实前面已经有了方法,这就是cross validation——ECV
不同参数下的ECV
用Leave-One-Out CV Error for SVM。我们有以下结论:
不同参数下支持向量的个数
nSV : oftenused as a safety check if computing Ecv is too time-consuming
- 支持向量机SVM(4)
- 支持向量机SVM
- SVM支持向量机
- svm支持向量机
- SVM支持向量机
- [SVM]支持向量机
- SVM 支持向量机
- 支持向量机SVM
- SVM 支持向量机
- svm支持向量机
- 支持向量机SVM
- svm支持向量机
- SVM (支持向量机)
- SVM支持向量机
- SVM支持向量机
- 支持向量机SVM
- 支持向量机(SVM)
- 支持向量机-SVM
- C++ primer 标准库类型
- 在Unity3D中使用泛型(上)
- STM32中中断优先级理解
- 元信息标记<meta>
- Linux下nohup日志输出过大问题解决方案
- 支持向量机SVM(4)
- 保险项目(特批名额维护功能)
- 【数据库】sql server中的作业
- iOS开发,plist文件读写那些事
- Cocos Code IDE 1.2.0 下载地址
- python重复list中元素中的字母次数
- 近5年133个Java面试问题列表
- mybatis插入与取出 blob clob字段
- 【JDK集合框架源码分析】-集合框架概述