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. spring cloud & dubbo

    区别 来源(背景): Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点. Spring Cloud,从命名我们就可以知道,它是Spring Source的产物,Spr ...

  2. Web模块:spring-boot-starter-web

    spring-boot-autoconfigure-1.5.1.RELEASE.jar!/org/springframework/boot/autoconfigure/web 上述jar的web包下, ...

  3. 最大流Dinic算法模板(pascal)

    program rrr(input,output); const inf=; type pointer=^nodetype; nodetype=record t,c:longint; next,rev ...

  4. 【刷题】BZOJ 4573 [Zjoi2016]大森林

    Description 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力.小 ...

  5. 【比赛】HNOI2018 转盘

    通过这题,我发现了我最大的缺陷,就是题目中重要的性质发现不了,所以导致后期根本做不了.还是要多做题,培养思维 对于这道题,来发现性质吧 对于每一条路线,因为它有用的就是最终的时刻,所以我们都可以把它变 ...

  6. 利用script和scriptlet moniker绕过脚本白名单限制

    没事儿看了一下subtee和enigma0x3今年在BSides Nashville 2017上的演讲,觉得这两个猥琐男简直不能再猥琐了 :-)其中有一个猥琐小技巧,又可以让我们好好hunting一番 ...

  7. 在make php-5.5.5时提示没有X11/xpm.h,怎么解决!

    yum install libXpm-devel在查询他的安装位置:#rpm -ql libXpm-devel/usr/bin/cxpm/usr/bin/sxpm/usr/include/X11/xp ...

  8. CDOJ--1550&&1731

    原题链接:http://acm.uestc.edu.cn/problems.php?vol=15 分析:首先筛出sqrt(2^31-1)以内的素数,对于给定的区间[L,R],仍然用筛素数的思想把那些是 ...

  9. tp between

    $a = array( 'time' => array('between',[c,d]) ); c<= time <= d

  10. qq快速登陆

    http://www.cnblogs.com/1996V/p/7481823.html qq快速登陆