S折交叉验证(S-fold cross validation)
S折交叉验证(S-fold cross validation)
觉得有用的话,欢迎一起讨论相互学习~
仅为个人观点,欢迎讨论
参考文献
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折验证,然后用测试集进行验证,不如直接把训练集上所有数据都用来训练,更多的数据训练效果更好啊!!哈哈哈~) 这样就失去交叉验证的意义了~ 呵呵呵
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)