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. 【计算机基础】当你在浏览器中输入Google.com并且按下回车之后发生了什么?

    本文转载自:https://github.com/skyline75489/what-happens-when-zh_CN#id9 按下"g"键 接下来的内容介绍了物理键盘和系统中 ...

  2. Centos7安装完毕后联网-设置ip地址(VMware虚拟机)

    VMware虚拟机中安装了Centos7,为了让Centos能够访问外网及设置固定的ip地址以方便本地通过SSH访问Centos,做以下几步.本文来自osfipin note. 1.确认虚拟机网络链接 ...

  3. python的N个小功能之正则匹配

    1.. 匹配任意除换行符“\n”外的字符:2.*表示匹配前一个字符0次或无限次:3.+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复,惰性匹配:4. .*? 表示匹配任意 ...

  4. 线段树之Sum

    题面: 给定一数列,规定有两种操作,一是修改某个元素,二是求区间的连续和. Input: 输入数据第一行包含两个正整数n,m(n<=100000,m<=500000),以下是m行, 每行有 ...

  5. [洛谷P5190][COCI 2010] PROGRAM

    题目大意:给你$k(k\leqslant10^6)$个数,$f(x)$表示$x$的约数在$k$个数中出现的次数,在这任何数都是$0$的约数.$m(m\leqslant10^6)$次询问,每次给出$l, ...

  6. vector 一边遍历一边删除

    for(std::vector<int>::iterator it = m_ConnectId.begin();it!=m_ConnectId.end();){ ) < ){ m_C ...

  7. Linux HugePage 特性

    HugePage,就是指的大页内存管理方式.与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效.本文描述了什么是HugePage,以及HugePage的一些特性. ...

  8. Python中scatter()函数--转载

    原博地址:http://blog.csdn.net/anneqiqi/article/details/64125186 最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意 ...

  9. laravel调试神器tinker

    一直以来,想调试框架中的某些东西,如想知道 Elpquent 的 create 方法返回值是个什么东西, 以前的话,应该就是在 create 方法调用之后,使用 dd 或者 var_dump 之类的函 ...

  10. shiro的原理理解

    1.shiro原理图如下: 框架解释: subject:主体,可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证.授权. securityManager:安全管理器,主体进行认证和授权都 ...