S折交叉验证(S-fold cross validation)

觉得有用的话,欢迎一起讨论相互学习~Follow Me

仅为个人观点,欢迎讨论

参考文献
https://blog.csdn.net/aliceyangxi1987/article/details/73532651
李航-统计学习方法
https://blog.csdn.net/jasonding1354/article/details/50562513
知乎问题

引用《统计学习方法》

  • S折交叉验证

    • 首先随机地将已给数据切分为S个互补相交的大小相同的子集;然后利用S-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程对所有可能的S种选择重复进行;最后选出S次测评中平均测试误差最小的模型

      问题引入

      此处引入各种想法

  1. 目前,根据行业公认的评价方法的所谓准确率等指标,都是对测试集而言的,因此要求测试集不参与模型的训练过程。
    十折交叉验证方法中,10份数据轮流作为训练集和验证集。
    因此实际上也是全部参加了训练的。因此,理论上为了保证最后测试结果的有效性,应该先将数据分为训练集和测试集,然后对训练集采用十折交叉验证。

链接:https://www.zhihu.com/question/274417233/answer/376476821

  1. 一般情况下,我会选择先把整个数据集分为训练集合(training set)和测试集合(test set)。训练集用来构建和筛选模型,测试集合用于评估最后确定的模型。 具体言之,我们经常会用cross validation 来进行模型选择和hyperparameter的优化,在确定了最佳模型和hyperparameters之后,再对最终的模型进行评估。而为保证最终的模型评估不被这个优化的过程所影响,评估时所用的数据集(也就是test set)不应该参与过之前的模型选择和参数优化,所以是独立于10-fold cross validation时所用的数据集的。
    简而言之,我总结一下训练和评估的大致步骤:

    1. 将数据集合分为训练集合和测试集合;
    2. 在训练集合中使用k-fold validation来进行模型选择和调参数(hyperparameters),确定最佳模型和参数配置;
    3. 使用所有的训练集合中的数据来训练这个最佳模型;
    4. 用测试数据集来评估这个最佳模型。

链接:https://www.zhihu.com/question/274417233/answer/378759200

  1. 如果是将全部的数据分成10份d1,d2...d10,挑选其中的d1作为测试集,其他的作为训练集,那么在训练之后用模型对d1进行测试。然后下一组实验开始的时候挑选d2作为测试集,其他的作为训练集,训练测试,再依次进行后面的。最后求平均。
    为什么测试集参与了训练?每组开始的时候模型的参数应该是重新初始化的吧。模型参数重新初始化,等同于在这一组实验内测试集仅作为测试,并没有参与训练啊。

链接:https://www.zhihu.com/question/274417233/answer/552752196

个人观点

结合 csdn_JasonDing1354cdsn_liuweiyuxiang以及csdn_aliceyangxi1987的观点和我自己的思考

以下观点仅代表个人观点

  1. 交叉验证一般是用来表示一个方法比另一个方法好的,或者一个超参数比另一个超参数好的(而不是具体的神经元的偏置和权重) K折交叉验证使用全部的数据,并且会有K个不同的模型,通过计算K个模型对应的测试集上的表现的平均值评价这个方法的好坏。也就是说 每次权重都进行了初始化,是K个不同的模型,评价的是方法
  2. 即我认同的是知乎上第三个观点:
    如果为了提高模型的性能,我大可使用所有的数据进行训练。
    如果我真的需要评价模型的好坏,直接给个没见过的数据就好了(毕竟产学研相结合,什么东西都要放在实际生活着中进行检测,人为的提前划分数据集为训练集和测试集,再在训练集上使用K折验证,然后用测试集进行验证,不如直接把训练集上所有数据都用来训练,更多的数据训练效果更好啊!!哈哈哈~) 这样就失去交叉验证的意义了~ 呵呵呵

S折交叉验证(S-fold cross validation)的更多相关文章

  1. 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)

    10折交叉验证 我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: . 该分类器的精确率怎么样? . 该分 ...

  2. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  3. (数据挖掘-入门-6)十折交叉验证和K近邻

    主要内容: 1.十折交叉验证 2.混淆矩阵 3.K近邻 4.python实现 一.十折交叉验证 前面提到了数据集分为训练集和测试集,训练集用来训练模型,而测试集用来测试模型的好坏,那么单一的测试是否就 ...

  4. 机器学习--K折交叉验证和非负矩阵分解

    1.交叉验证 交叉验证(Cross validation),交叉验证用于防止模型过于复杂而引起的过拟合.有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法. 于是可以先在一个子集上做 ...

  5. 小白学习之pytorch框架(7)之实战Kaggle比赛:房价预测(K折交叉验证、*args、**kwargs)

    本篇博客代码来自于<动手学深度学习>pytorch版,也是代码较多,解释较少的一篇.不过好多方法在我以前的博客都有提,所以这次没提.还有一个原因是,这篇博客的代码,只要好好看看肯定能看懂( ...

  6. 小白学习之pytorch框架(6)-模型选择(K折交叉验证)、欠拟合、过拟合(权重衰减法(=L2范数正则化)、丢弃法)、正向传播、反向传播

    下面要说的基本都是<动手学深度学习>这本花书上的内容,图也采用的书上的 首先说的是训练误差(模型在训练数据集上表现出的误差)和泛化误差(模型在任意一个测试数据集样本上表现出的误差的期望) ...

  7. sklearn的K折交叉验证函数KFold使用

    K折交叉验证时使用: KFold(n_split, shuffle, random_state) 参数:n_split:要划分的折数 shuffle: 每次都进行shuffle,测试集中折数的总和就是 ...

  8. k折交叉验证

    原理:将原始数据集划分为k个子集,将其中一个子集作为验证集,其余k-1个子集作为训练集,如此训练和验证一轮称为一次交叉验证.交叉验证重复k次,每个子集都做一次验证集,得到k个模型,加权平均k个模型的结 ...

  9. cross_val_score 交叉验证与 K折交叉验证,嗯都是抄来的,自己作个参考

    因为sklearn cross_val_score 交叉验证,这个函数没有洗牌功能,添加K 折交叉验证,可以用来选择模型,也可以用来选择特征 sklearn.model_selection.cross ...

随机推荐

  1. 老项目迁移到 springboot 过程

    打算把detectx迁移,毕竟springboot更适合它, 首先我是用的快速建立的项目,springboot版本为 1.5.19.RELEASE ,官网查了下,这个是GA稳定生产环境版本 然后如果要 ...

  2. [BZOJ2687]交与并[决策单调性]

    题意 给定 \(n\) 个区间,我们定义区间集合 \(S(|S|>1)\) 的权值为 区间交 \(\times\) 区间并,找出权值最大的区间集合. \(n\le 10^6\) 分析 首先排除区 ...

  3. Flask学习-Wsgiref库

    一.前言 前面在Flask学习-Flask基础之WSGI中提到了WerkZeug,我们知道,WerkZeug是一个支持WSGI协议的Server,其实还有很多其他支持WSGI协议的Server.htt ...

  4. Spring+SpringMVC+MyBatis整合基础篇(二)牛刀小试

    前言 承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. 项目展示地址,点这里http://ssm-demo.13blog.site,账号:admin 密码: ...

  5. SpringBoot日记——MQ消息队列整合(二)

    基于第一篇文章搭建好环境以后,我们这篇文章继续介绍如何在springboot中使用RabbitMQ. 1).单播:添加好pom文件和自定义配置后,来看: @Autowired RabbitTempla ...

  6. 软件测试_APP测试_主要测试内容

    最近要测试手机端APP,所以查找了一下有关APP测试需要注意的事项,做了一下总结.如有补充,欢迎评论! 手机APP测试与WEB测试其实相似,但是也有特别需要注意的一些不同点,此处只列出部分注意事项,相 ...

  7. shellcode 编码技术

    在很多漏洞利用场景中, shellcode 的内容将会受到限制. 例如你不能输入 \x00 这个字符,编辑框不能输入 \x0d \x0a这样的字符 所以需要完成 shellcode 的逻辑,然后使用编 ...

  8. VMware下三种网络连接模式介绍

    birdged(桥接) 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于 ...

  9. 机器学习初入门01-numpy的基础用法

    一.numpy基础结构 1. numpy.genformtxt('路径名', delimiter = '分割符', dytype = 读取方式如str ):读取一个文件,返回一个numpy.ndarr ...

  10. PAT甲题题解-1078. Hashing (25)-hash散列

    二次方探测解决冲突一开始理解错了,难怪一直WA.先寻找key%TSize的index处,如果冲突,那么依此寻找(key+j*j)%TSize的位置,j=1~TSize-1如果都没有空位,则输出'-' ...