SVMtrain的参数c和g的优化

在svm训练过程中,需要对惩罚参数c和核函数的参数g进行优化,选取最好的参数

知道测试集标签的情况下

是让两个参数c和g在某一范围内取离散值,然后,取测试集分类准确率最佳的参数

不知道测试集标签的情况下

(1)利用交叉验证的方法:(k-fold cross validation)

  1. Start 

  2. bestAccuracy = 0 

  3. bestc = 0 

  4. bestg = 0 


  5. //n1 , n2 ,k都是事先给定的值 

  6. for c = 2^(-n1) : 2^(n1) 

  7. for g = 2^(-n2) : 2^(n2) 

  8. 将训练集平均分为k部分,设为 

  9. train(1),train(2), ... ,train(k). 

  10. 分别让每一部分作为测试集进行预测(剩下的k-1部分作为训练集对分类器进行训练)取得最后得到的所有分类的准确率的平均数,设为cv 

  11. if(cv>bestAccuracy) 

  12. bestAccuracy = cv; bestc = c; bestg = g 

  13. end 

  14. end 

  15. end 

  16. over 

(2)leave-one-out cross validation(loo交叉验证)

设原始数据有N个样本,那么LOO-CVj就是N-CV,即每一个样本作为验证集,其余的N-1个样本作为训练集,所以在LOO-CV下会得到N个模型,用N个模型的最终验证集的分类准确率的平均数做为在LOO-CV下分类器的性能指标

** 但是LOO-cv计算量太大,每个样本都要建立一个模型,计算成本太大

当计算出所有的c和g时,这时候这些c和g有可能会出现的是:某些成对出现的c和g验证准确率一样高,这时候选择的是惩罚参数最小的c和g,认为c小的那个对象是最佳的选择

伪代码如下

bestAccuracy = 0

bestc = 0

bestg = 0

//将c和g划分为网格进行搜索

for c = 2 (cmin):2(cmax)

for c = 2 (gmin):2(gmax)

%%采用K-CV方法

将train大致分为K组,记为train(1)train(2)…train(k)

相应的标签也要分离出来记为train_label(1),train_label(2)…train_label(k)

for run = 1:k

让train(run),作为验证集,其他的作为训练集,记录此时的验证准确率为acc(run)

end

cv = (acc(1)+acc(2)+…acc(k))/k

if (cv>bestAccuracy)

bestAccury = cv;bestc=c;bestg=g;

end

end

end

over

SVMtrain的参数c和g的优化的更多相关文章

  1. Deep Learning.ai学习笔记_第二门课_改善深层神经网络:超参数调试、正则化以及优化

    目录 第一周(深度学习的实践层面) 第二周(优化算法) 第三周(超参数调试.Batch正则化和程序框架) 目标: 如何有效运作神经网络,内容涉及超参数调优,如何构建数据,以及如何确保优化算法快速运行, ...

  2. DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法

    1. Mini-batch梯度下降法 介绍 假设我们的数据量非常多,达到了500万以上,那么此时如果按照传统的梯度下降算法,那么训练模型所花费的时间将非常巨大,所以我们对数据做如下处理: 如图所示,我 ...

  3. svmtrain输入参数介绍【转】

    -s svm类型:SVM设置类型(默认0) 0 -- C-SVC 1 --v-SVC 2 – 一类SVM 3 -- e -SVR 4 -- v-SVR -t 核函数类型:核函数设置类型(默认2) 0 ...

  4. gcc/g++ -O 优化选项说明

    查查gcc手册就知道了,每个编译选项都控制着不同的优化选项 下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0.-O1.-O2.-O3和-Os. 除了-O0以外,每一 ...

  5. Andrew Ng - 深度学习工程师 - Part 2. 改善深层神经网络:超参数调试、正则化以及优化(Week 2. 优化算法)

    ===========第2周 优化算法================ ===2.1 Mini-batch 梯度下降=== epoch: 完整地遍历了一遍整个训练集 ===2.2 理解Mini-bat ...

  6. [NOI2009]诗人小G 四边形优化DP

    题目传送门 f[i] = min(f[j] + val(i,j); 其中val(i,j) 满足 四边形dp策略. 代码: #include<bits/stdc++.h> using nam ...

  7. PyTorch官方中文文档:torch.optim 优化器参数

    内容预览: step(closure) 进行单次优化 (参数更新). 参数: closure (callable) –...~ 参数: params (iterable) – 待优化参数的iterab ...

  8. 优化Linux内核参数提高服务器负载能力

    首先,编辑一下/etc/sysctl.conf 文件,调整一下以下参数,如果没有经过优化的Linux内核可能没有这些参数,那么把需要补充的复制添加进去即可,其他设置默认即可,不需要理解. 记得修改完成 ...

  9. linux内核参数注释与优化

    目录 1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 参数解释由网络上收集整理,常用优化参数对比了网上多个实际应用进行表格化整理,使查看更直观. 学习linux也有不少 ...

随机推荐

  1. Delphi中的ADOquery 用法以及ADOquery的自有方法Append 和Delete和 Edit 和Post

    Delphi在数据库操作是非常好用的,delphi把ADO一些方法属性都集成了,以下是我的一些总结:*******************************通过sql的存储过程来实现:添加Wit ...

  2. 记一次Spring配置事故

    在引入Spring的Validated时,需要声明如下bean:   @Beanpublic MethodValidationPostProcessor methodValidationPostPro ...

  3. FZU2127_养鸡场

    题目的意思为要你求出满足三边范围条件且周长为n的三角形的数目. 其实做法是直接枚举最短边,然后就可以知道第二条边的取值范围,同时根据给定的范围缩小范围. 同时根据第二条边的范围推出第三条边的范围,再次 ...

  4. BZOJ4899 记忆的轮廓(概率期望+动态规划+决策单调性)

    容易发现跟树没什么关系,可以预处理出每个点若走向分叉点期望走多少步才能回到上个存档点,就变为链上问题了.考虑dp,显然有f[i][j]表示在i~n中设置了j个存档点,其中i设置存档点的最优期望步数.转 ...

  5. 洛谷 P1576 最小花费

    题目戳 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. ...

  6. [您有新的未分配科技点]博弈论入门:被博弈论支配的恐惧(Nim游戏,SG函数)

    今天初步学习了一下博弈论……感觉真的是好精妙啊……希望这篇博客可以帮助到和我一样刚学习博弈论的同学们. 博弈论,又被称为对策论,被用于考虑游戏中个体的预测行为和实际行为,并研究他们的应用策略.(其实这 ...

  7. BZOJ2331:[SCOI2011]地板——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2331 题面复制于洛谷 题目描述 lxhgww的小名叫”小L“,这是因为他总是很喜欢L型的东西.小L家 ...

  8. HDU3507 print article【斜率优化dp】

    打印文章 时间限制:9000/3000 MS(Java / Others)内存限制:131072/65536 K(Java / Others) 总共提交:14521已接受提交:4531 问题描述 零有 ...

  9. 【bzoj2006】【NOI2015】超级钢琴

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4292  Solved: 2195[Submit][Statu ...

  10. NYOJ--139

    原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=139 分析:cantor展开,康托展开用于计算一个排列的序数.公式为: X=a[n]*n! ...