SVM 参数选择

-g g :设置核函数中的g ,默认值为1/ k ;其中-g选项中的k是指输入数据中的属性数。

惩罚因子

在式子1中

注意其中C的位置,也可以回想一下C所起的作用(表征你有多么重视离群点,C越大越重视,越不想丢掉它们)。这个式子是以前做SVM的人写的,大家也就这么用,但没有任何规定说必须对所有的松弛变量都使用同一个惩罚因子,我们完全可以给每一个离群点都使用不同的C,这时就意味着你对每个样本的重视程度都不一样,有些样本丢了也就丢了,错了也就错了,这些就给一个比较小的C;而有些样本很重要,决不能分类错误,就给一个很大的C。
对付数据集偏斜问题的方法之一就是在惩罚因子上作文章,想必大家也猜到了,那就是给样本数量少的负类更大的惩罚因子,表示我们重视这部分样本(本来数量就少,再抛弃一些,那人家负类还活不活了),因此我们的目标函数中因松弛变量而损失的部分就变成了:

其中i=1…p都是正样本,j=p+1…p+q都是负样本。libSVM这个算法包在解决偏斜问题的时候用的就是这种方法。

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

  但是这样并不够好,回看刚才的图,你会发现正类之所以可以“欺负”负类,其实并不是因为负类样本少,真实的原因是负类的样本分布的不够广(没扩充到负类本应该有的区域)。说一个具体点的例子,现在想给政治类和体育类的文章做分类,政治类文章很多,而体育类只提供了几篇关于篮球的文章,这时分类会明显偏向于政治类,如果要给体育类文章增加样本,但增加的样本仍然全都是关于篮球的(也就是说,没有足球,排球,赛车,游泳等等),那结果会怎样呢?虽然体育类文章在数量上可以达到与政治类一样多,但过于集中了,结果仍会偏向于政治类!所以给C+和C-确定比例更好的方法应该是衡量他们分布的程度。比如可以算算他们在空间中占据了多大的体积,例如给负类找一个超球——就是高维空间里的球啦——它可以包含所有负类的样本,再给正类找一个,比比两个球的半径,就可以大致确定分布的情况。显然半径大的分布就比较广,就给小一点的惩罚因子。

但是这样还不够好,因为有的类别样本确实很集中,这不是提供的样本数量多少的问题,这是类别本身的特征(就是某些话题涉及的面很窄,例如计算机类的文章就明显不如文化类的文章那么“天马行空”),这个时候即便超球的半径差异很大,也不应该赋予两个类别不同的惩罚因子。

http://blog.csdn.net/zhzhl202/article/details/7583464

参考文献以及进一步阅读:

1. http://www.blogjava.net/zhenandaci/archive/2009/03/15/259786.html 讲解了SVM引入松弛变量的原因及好处

2. http://www.blogjava.net/zhenandaci/archive/2009/03/06/258288.html SVM中核函数的特性以及在SVM中的作用

3. http://blog.pluskid.org/?tag=support-vector-machine Kid的关于SVM经典文章

时间: 2025-01-03 22:22:48

SVM 参数选择的相关文章

机器学习 libsvm交叉验证与网格搜索(参数选择)

首先说交叉验证. 交叉验证(Cross validation)是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize), 能够避免过拟合问题. 交叉验证一般要尽量满足: 1)训练集的比例要足够多,一般大于一半 2)训练集和测试集要均匀抽样 交叉验证主要分成以下几类: 1)Double cross-validation Double cross-validation也称2-fold cross-validation(2-CV),作法是将数据集分成两个相等大小的子集

libSVM 参数选择

libSVM 参数选择 [预测标签,准确率,决策值]=svmpredict(测试标签,测试数据,训练的模型); 原文参考:http://blog.csdn.net/carson2005/article/details/6539192 关于SVM参数c&g选取的总结帖[matlab-libsvm]:http://www.ilovematlab.cn/thread-47819-1-1.html  原文见下方 需要提醒的是,libSVM支持多类分类问题,当有k个待分类问题时,libSVM构建k*(k-

机器学习中的范数规则化 L0、L1与L2范数 核范数与规则项参数选择

http://blog.csdn.net/zouxy09/article/details/24971995 机器学习中的范数规则化之(一)L0.L1与L2范数 [email protected] http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个部分分成两篇博文.知识有限,以下都是我一些浅显

OpenCV中的SVM参数优化

OpenCV中的SVM参数优化 标签: svm参数优化opencv SVMSVR参数优化CvSVMopencv CvSVM 2014-08-19 10:31 2995人阅读 评论(8) 收藏 举报  分类: 机器学习(11)  opencv(18)  版权声明:本文为博主原创文章,未经博主允许不得转载. SVM(支持向量机)是机器学习算法里用得最多的一种算法.SVM最常用的是用于分类,不过SVM也可以用于回归,我的实验中就是用SVM来实现SVR(支持向量回归). 对于功能这么强的算法,OpenC

paper 36 :[教程] 基于GridSearch的svm参数寻优

尊重原创~~~ 转载出处:http://www.matlabsky.com/thread-12411-1-1.html 交叉验证(Cross Validation)方法思想简介http://www.matlabsky.com/forum-v ... -fromuid-18677.html 以下内容摘自<MATLAB 神经网络30个案例分析>第13章: 关于SVM参数的优化选取,国际上并没有公认统一的最好的方法,现在目前常用的方法就是让c和g在一定的范围内取值,对于取定的c和g对于把训练集作为原

libsvm交叉验证与网格搜索(参数选择)

首先说交叉验证.交叉验证(Cross validation)是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize), 能够避免过拟合问题.交叉验证一般要尽量满足:1)训练集的比例要足够多,一般大于一半2)训练集和测试集要均匀抽样 交叉验证主要分成以下几类: 1)Double cross-validationDouble cross-validation也称2-fold cross-validation(2-CV),作法是将数据集分成两个相等大小的子集,进行两回

SVM→8.SVM实战→3.调节SVM参数

.card { font-family: arial; font-size: 20px; text-align: left; color: black; background-color: white } .cloze { font-weight: bold; color: red } .myCode { font-family: droid sans mono; background-color: #f2f2f2; padding-left: 5px; padding-right: 5px }

桥堆的参数选择以及滤波电容的选择

1.桥堆的参数选择: 2.滤波电容选择:对于整流电压的输出电压大小,大家一定不陌生.很多人会说,输出平均值全波0.9倍,半波0.45倍的交流有效.但是在设计中,我们常常发现一个事实,例如在半波整流后,输出电压得到的不止0.45倍,9V交流整流后可能有11-12V.之前我一直很困惑,是我记错了计算倍数吗?翻了很多书籍,公式当然是没错的.那到底怎么回事? 可能之前我们在学校学这个方面知识点的时候太过注重整流电路,而忽略了脉动比的概念,所以造成我们现在很多人对这一简单的知识不是很清晰.其实这里是由于整

paper 27:机器学习中的范数规则化之(二)核范数与规则项参数选择

机器学习中的范数规则化之(二)核范数与规则项参数选择 [email protected] http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮叨下核范数和规则项参数选择.知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正.谢谢. 三.核范数 核范数||W||*是指矩阵奇异值的和,英文称呼叫Nuclear Norm.这个相对于上面火热的L1和L2来说,可能大家就会陌生点.那它是干嘛用的呢?霸气登场:约束Low-Ra