本帖最后由 azure_sky 于 2014-1-17 00:30 编辑

2).K-fold Cross Validation(记为K-CV)

将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标.K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2.K-CV可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性.

--------------------------------------------我是分界线------------------------------------------------------------------------------------

关于交叉验证K-FOLD我有几个问题:

1) 假设是4-fold的交叉验证,需要跑四次SVM,有四个model。我想问,他们的SVM 的参数,比如c和g设置相同么?

2) k-fold CV经常被用作参数选取。这个最佳参数是怎么得到的。

每个model会得到一个c和g的参数

然后对这k个参数加权平均么?

还是说,在进行k-fold cv时,所有模型使用相同的c和g参数。

3)关于k-fold的用法。 我常见的一种情况是,有训练数据traindata和测试数据testdata

在traindata上跑交叉验证,选取最佳参数,然后在testdata上进行预测。

现在的情况是,我只有traindata,我想要用k-fold交叉验证在traindata。我关心的不是准确率,而是具体的预测值。

我知道libsvm中有一个 '-v'选项进行交叉验证。

例如代码     svr_model = svmtrain( data_label, data_scale, '-v','10' );

但是这样获得了一个model。能不能得到fold是怎么分的呢。

每个chunk是对应着哪些训练数据的index?

每一个fold跑完,在那个 对应的1/k * length(traindata) 上预测的label是什么?

4)k-fold在训练数据上进行预测,怎么操作。

比如我现在只有数据traindata。

我想得到k-fold cv在traindata上的预测值。

我可以进行如下操作么:

1) 用k-fold进行参数寻优。得到最好的c和g。使用命令

[bestmse,bestc,bestg]=SVMcgForRegress(train_label ,traindata);

2) 用c和g,用traindata进行k-fold的训练得到模型

cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),'-v 10 -s 3 -p 0.01'];

svr_model = svmtrain( train_label, traindata_scale, cmd );

3)用得到的model在整个traindata得到预测值

[pred_label] = svmpredict(train_label, traindata, svr_model);

这样做感觉很奇怪。我可以在第二步得到对应的 k-fold数据划分,以及在那个1/k chunk上的预测值么?

matlab 交叉验证 代码,交叉验证(Cross Validation)方法思想简介相关推荐

  1. 交叉验证(Cross Validation)方法思想简介

    交叉验证(CrossValidation)方法思想 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(data ...

  2. 交叉验证方法思想简介

    交叉验证方法思想简介 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训 ...

  3. 留一法(交叉验证法,Leave-One-Out Cross Validation)

    交叉验证法 这种方法比较简单易懂,就是把一个大的数据集分为k个小数据集,其中k-1个作为训练集,剩下的一个作为测试集,然后选择下一个作为测试集,剩下的k-1个作为训练集,以此类推.这其中,k的取值就比 ...

  4. 交叉验证(CrossValidation)方法思想简介

    以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train se ...

  5. 机器学习代码实战——K折交叉验证(K Fold Cross Validation)

    文章目录 1.实验目的 2.导入数据和必要模块 3.比较不同模型预测准确率 3.1.逻辑回归 3.2.决策树 3.3.支持向量机 3.4.随机森林 1.实验目的 使用sklearn库中的鸢尾花数据集, ...

  6. php表单服务器验证失败,php 表单验证代码(验证失败显示提示信息)

    搜索热词 感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. 经测试代码如下: /** * 表单验证 * * @param * @arrange (512.笔记) jb51.cc * ...

  7. matlab安装MinGW-64代码C/C++编译器的方法

    一.说明 matlab中编写的m文件转成C/C++代码,以及matlab中执行C/C++带啊,需要用到mex 查看matlab是否支持可以输入mex -setup: 二.安装 如果不支持,没找到,则需 ...

  8. 深度学习:交叉验证(Cross Validation)

    首先,交叉验证的目的是为了让被评估的模型达到最优的泛化性能,找到使得模型泛化性能最优的超参值.在全部训练集上重新训练模型,并使用独立测试集对模型性能做出最终评价. 目前在一些论文里倒是没有特别强调这样 ...

  9. 留一法交叉验证 Leave-One-Out Cross Validation

    交叉验证法,就是把一个大的数据集分为 kkk 个小数据集,其中 k−1k-1k−1 个作为训练集,剩下的 111 个作为测试集,在训练和测试的时候依次选择训练集和它对应的测试集.这种方法也被叫做 kk ...

最新文章

  1. 如何制作一颗CPU? 从石子到管脚绑定
  2. django配置mysql数据库
  3. js 数字,金额 用逗号 隔开。数字格式化
  4. Git Flow分支管理
  5. struct msghdr和struct cmsghdr【转载】
  6. 使用redis保存验证码
  7. 基于WiEngine游戏引擎的Sample
  8. 贾俊平统计学思维导图- 第八章 假设检验
  9. python迅雷远程下载页面_迅雷远程下载
  10. 7-4 查询水果价格 PTA
  11. reactos回顾总结(一)reactos源码编译
  12. python: del函数
  13. C语言简单直观打印二叉树
  14. IOS手机安装完fiddler证书后依然无法上网
  15. src refspec master does not match any问题
  16. 不同计算机用户的区别是什么意思,电脑操作系统的32位和64位分别是什么意思?有什么区别?...
  17. JAVA避免使用魔法数值
  18. 游戏试玩站打码赚钱任务网平台系统源码+可运营
  19. python 实现经纬度与大地2000坐标的转换
  20. IOS 笔记大全 (UI控件到网络协议)

热门文章

  1. Golang库学习笔记 Gin(三)
  2. Hough Transform 的算法思想
  3. 统计学习方法 第一章 学习笔记
  4. linux i217 v网卡驱动,手动安装Intel network I217-LM网卡的Linux驱动
  5. [云炬创业基础笔记] 第三章测试2
  6. USTC English Club Note20171015(5)
  7. [云炬python3玩转机器学习] 6-1什么是梯度下降法
  8. [云炬python3玩转机器学习] 5-3简单线性回归的实现
  9. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170408
  10. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170406