S折交叉验证(S-fold cross validation)
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次测评中平均测试误差最小的模型
问题引入
此处引入各种想法
- 目前,根据行业公认的评价方法的所谓准确率等指标,都是对测试集而言的,因此要求测试集不参与模型的训练过程。
十折交叉验证方法中,10份数据轮流作为训练集和验证集。
因此实际上也是全部参加了训练的。因此,理论上为了保证最后测试结果的有效性,应该先将数据分为训练集和测试集,然后对训练集采用十折交叉验证。
链接:https://www.zhihu.com/question/274417233/answer/376476821
- 一般情况下,我会选择先把整个数据集分为训练集合(training set)和测试集合(test set)。训练集用来构建和筛选模型,测试集合用于评估最后确定的模型。 具体言之,我们经常会用cross validation 来进行模型选择和hyperparameter的优化,在确定了最佳模型和hyperparameters之后,再对最终的模型进行评估。而为保证最终的模型评估不被这个优化的过程所影响,评估时所用的数据集(也就是test set)不应该参与过之前的模型选择和参数优化,所以是独立于10-fold cross validation时所用的数据集的。
简而言之,我总结一下训练和评估的大致步骤:- 将数据集合分为训练集合和测试集合;
- 在训练集合中使用k-fold validation来进行模型选择和调参数(hyperparameters),确定最佳模型和参数配置;
- 使用所有的训练集合中的数据来训练这个最佳模型;
- 用测试数据集来评估这个最佳模型。
链接:https://www.zhihu.com/question/274417233/answer/378759200
- 如果是将全部的数据分成10份d1,d2...d10,挑选其中的d1作为测试集,其他的作为训练集,那么在训练之后用模型对d1进行测试。然后下一组实验开始的时候挑选d2作为测试集,其他的作为训练集,训练测试,再依次进行后面的。最后求平均。
为什么测试集参与了训练?每组开始的时候模型的参数应该是重新初始化的吧。模型参数重新初始化,等同于在这一组实验内测试集仅作为测试,并没有参与训练啊。
链接:https://www.zhihu.com/question/274417233/answer/552752196
个人观点
结合 csdn_JasonDing1354或cdsn_liuweiyuxiang以及csdn_aliceyangxi1987的观点和我自己的思考
以下观点仅代表个人观点
- 交叉验证一般是用来表示一个方法比另一个方法好的,或者一个超参数比另一个超参数好的(而不是具体的神经元的偏置和权重) K折交叉验证使用全部的数据,并且会有K个不同的模型,通过计算K个模型对应的测试集上的表现的平均值评价这个方法的好坏。也就是说 每次权重都进行了初始化,是K个不同的模型,评价的是方法
- 即我认同的是知乎上第三个观点:
如果为了提高模型的性能,我大可使用所有的数据进行训练。
如果我真的需要评价模型的好坏,直接给个没见过的数据就好了(毕竟产学研相结合,什么东西都要放在实际生活着中进行检测,人为的提前划分数据集为训练集和测试集,再在训练集上使用K折验证,然后用测试集进行验证,不如直接把训练集上所有数据都用来训练,更多的数据训练效果更好啊!!哈哈哈~) 这样就失去交叉验证的意义了~ 呵呵呵
S折交叉验证(S-fold cross validation)的更多相关文章
- 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)
10折交叉验证 我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: . 该分类器的精确率怎么样? . 该分 ...
- 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集
机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...
- (数据挖掘-入门-6)十折交叉验证和K近邻
主要内容: 1.十折交叉验证 2.混淆矩阵 3.K近邻 4.python实现 一.十折交叉验证 前面提到了数据集分为训练集和测试集,训练集用来训练模型,而测试集用来测试模型的好坏,那么单一的测试是否就 ...
- 机器学习--K折交叉验证和非负矩阵分解
1.交叉验证 交叉验证(Cross validation),交叉验证用于防止模型过于复杂而引起的过拟合.有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法. 于是可以先在一个子集上做 ...
- 小白学习之pytorch框架(7)之实战Kaggle比赛:房价预测(K折交叉验证、*args、**kwargs)
本篇博客代码来自于<动手学深度学习>pytorch版,也是代码较多,解释较少的一篇.不过好多方法在我以前的博客都有提,所以这次没提.还有一个原因是,这篇博客的代码,只要好好看看肯定能看懂( ...
- 小白学习之pytorch框架(6)-模型选择(K折交叉验证)、欠拟合、过拟合(权重衰减法(=L2范数正则化)、丢弃法)、正向传播、反向传播
下面要说的基本都是<动手学深度学习>这本花书上的内容,图也采用的书上的 首先说的是训练误差(模型在训练数据集上表现出的误差)和泛化误差(模型在任意一个测试数据集样本上表现出的误差的期望) ...
- sklearn的K折交叉验证函数KFold使用
K折交叉验证时使用: KFold(n_split, shuffle, random_state) 参数:n_split:要划分的折数 shuffle: 每次都进行shuffle,测试集中折数的总和就是 ...
- k折交叉验证
原理:将原始数据集划分为k个子集,将其中一个子集作为验证集,其余k-1个子集作为训练集,如此训练和验证一轮称为一次交叉验证.交叉验证重复k次,每个子集都做一次验证集,得到k个模型,加权平均k个模型的结 ...
- cross_val_score 交叉验证与 K折交叉验证,嗯都是抄来的,自己作个参考
因为sklearn cross_val_score 交叉验证,这个函数没有洗牌功能,添加K 折交叉验证,可以用来选择模型,也可以用来选择特征 sklearn.model_selection.cross ...
随机推荐
- JS关闭窗口而不提示
使用js关闭窗口而不提示代码: window.opener = null; window.open( '', '_self' ); window.close();
- 「功能笔记」Spacemacs+Evil备忘录
设置代理 (setq url-gateway-method 'socks) (setq socks-server '("Default server" "127.0.0. ...
- 条件GAN论文简单解读
条件GAN(Conditional Generative Adversarial Nets),原文地址为CGAN. Abstract 生成对抗网络(GAN)是最近提出的训练生成模型(g ...
- PAT-1010 Radix
1010 Radix (25 分) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 1 ...
- D. Vasya and Arrays
链接 [http://codeforces.com/contest/1036/problem/D] 题意 给你两个数组长度分别为n,m; 有这么一种操作,用某个数组的某个子区间元素之和代替这个子区间, ...
- Linux内核分析 一二章读书笔记
第一章 Linux内核简介 1.Unix (1)Unix系统很简洁 (2)在Unix中,所以东西都被当作文件对待,通过一套相同的系统调用接口来进行:open(),read(),write(),lsee ...
- Linux内核实验作业四
实验作业:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 20135313吴子怡.北京电子科技学院 [第一部分]使用库函数API来获取用户标识号.库函数为getuid() 代码如下: ...
- 《Linux内核设计与实现》读书笔记——第五章
<Linux内核设计与实现>读书笔记--第五章 标签(空格分隔): 20135321余佳源 第五章 系统调用 操作系统中,内核提供了用户进程与内核进行交互的一组接口.这些接口让应用程序受限 ...
- wc 统计程序
WC项目要求 这个项目要求写一个命令行程序,模仿已有的wc.exe的功能,并加以扩充,给出某程序设计源语言文件的字符数.单词数和行数.给实现一个统计程序,它能正确统计程序文件的字符数.单词数.行数,以 ...
- 关于vue-eslint自动补全代码,以及自动生成雪碧图
一.配置eslint module.exports={ "printWidth": 240, //一行的字符数,如果超过会进行换行,默认为80 "tabWidth&quo ...