机器学习划分训练集和测试集的方法

目前遇到如何划分机器学习中训练集和测试集的问题,找了各方面的资料,发现知乎大佬给出了详细解答,故转载如下(文末附参考链接):

机器学习常见步骤

1.对数据集进行划分,分为训练集测试集两部分;
2.对模型在测试集上面的泛化性能进行度量;
3.基于测试集上面的泛化性能,依据假设检验来推广到全部数据集上面的泛化性能。

三种数据集的含义

在进行机器学习算法之前,通常需要将数据集划分,通常分为训练集和测试集,部分还有验证集。首先介绍这三种数据集的含义:

**训练集(Training Set):**帮助我们训练模型,即通过训练集的数据让我们确定拟合曲线的参数。
**验证集(Validation Set):**用来做模型选择(model selection),即做模型的最终优化及确定的,用来辅助我们的模型的构建,可选;
测试集(Test Set): 为了测试已经训练好的模型的精确度。因为在训练模型的时候,参数全是根据现有训练集里的数据进行修正、拟合,有可能会出现过拟合的情况,即这个参数仅对训练集里的数据拟合比较准确,如果出现一个新数据需要利用模型预测结果,准确率可能就会很差。
所以测试集的作用是为了对学习器的泛化误差进行评估,即进行实验测试以判别学习器对新样本的判别能力,同时以测试集的的测试误差”作为泛化误差的近似。因此在分配训练集和测试集的时候,如果测试集的数据越小,对模型的泛化误差的估计将会越不准确。所以需要在划分数据集的时候进行权衡。

测试集的比例
训练集数据的数量一般占2/3到4/5。在实际应用中,基于整个数据集数据的大小,训练集数据和测试集数据的划分比例可以是6:4、7:3或8:2。对于庞大的数据可以使用9:1,甚至是99:1。具体根据测试集的划分方法有所不同。

常见的划分方法

留出法
直接将数据集D划分为两个互斥的的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S∪T, S ∩ T = 空集。在S上训练出模型后,用T来评估其误差。

需要注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入的额外的偏差而对最终结果产生影响。例如在分类任务中,至少要保持样本的类别比例相似。从”采样”的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”。例如从1000个数据里,分层采样获得70%样本的训练集S和30%样本的测试集T,若D包含500个正例,500个反例,则分层采样得到的S应包含350个正例,350个反例,T应包含150个正例,150个反例;若S、T中样本比例差别很大,则最终拟合的误差将会变大。

一般,在用留出法划分集合的时候,会通过若干次随机划分、重复实验评估后取平均值作为留出法的评估结果,减少误差。留出法还有一个问题就是,到底我们训练集和测试集应该按照什么比例来划分呢?如果我们训练集的比例比较大,可能会导致训练出的模型更接近于用D训练出的模型,同时T较小,评价结果又不够准确;若T的比例比较大,则有可能导致评估的模型与之前有较大的差别,从而降低了评估的保真性。这个问题没有完美的解决方案,常见的做法是将大约2/3~4/5的样本用于训练

交叉验证法

将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk,Di ∩ Dj = 空集(i ≠j) 每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。

交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为了强调这一点,通常把交叉验证法称为”k折交叉验证”(k-fold cross validation),k通常取10—10折交叉验证。

交叉验证的好处就是从有限的数据中尽可能挖掘多的信息,从各种角度去学习我们现有的有限的数据,避免出现局部的极值。在这个过程中无论是训练样本还是测试样本都得到了尽可能多的学习。

交叉验证法的缺点就是,当数据集比较大时,训练模型的开销较大。

自助法

给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次从D中挑选一个样本,将其放入D’,然后再将该样本放回初始数据集D中;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’,取极限为

即通过自助采样,初始数据集D中约有36.8%的样本未出现在采样集D′里。于是 ,实际评估的模型与期望评估的模型都是使用m个样本,而我们仍有数据总量约1/3的没在训练集出现过的样本用于测试。

自助法在数据集较小、难以有效划分训练/测试集时比较有用。然而自助法产生的测试集改变了初始数据集的分布,这会引入误差。

因此在数据集比较大时,采用留出法和交叉验证法较好。

参考文献

zhuanlan.zhihu.com/p/48961179

如何划分测试集和训练集相关推荐

  1. yolov3的训练(五)darknet的VOC测试集和训练集以及训练前准备

    VOC测试集和训练集     ################################## 同学们,这个系列的文件不要直接就跟着我操作了,因为这个是踩坑的记录,不是教程,我只是将整个流程记录下 ...

  2. 测试集和训练集8:2切分

    测试集和训练集8:2切分 最近接到个需求:测试集和训练集8:2切分,翻阅了很多资料封装了一个切分方法. 首先介绍下shuffle()函数 shuffle() 方法将序列的所有元素随机排序. impor ...

  3. 机器学习中,对于数据的预处理是否是测试集和训练集一起进行?

    转载自:https://www.zhihu.com/question/312639136 机器学习中,对于数据的预处理是否是测试集和训练集一起进行? 最近在尝试训练和应用模型,遇上一个问题,就是针对数 ...

  4. R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)

    R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray.F1.偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机) ...

  5. R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比

    R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...

  6. python基于模型对测试集和训练集的预测概率结果文件可视化模型的校准曲线、多个模型的校准曲线(calibration curve)

    python基于模型对测试集和训练集的预测概率结果文件可视化模型的校准曲线.多个模型的校准曲线(calibration curve) 目录

  7. KS检验样本测试集和训练集分布问题

    最初引入KS检验的原因:用SVM 做分类问题时,发现在测试集上跑出来的准确率等参数比在训练集高许多,经过分析,推断可能是由于训练集和测试集上的数据分布情况不一致.所以想通过KS检验一下数据分布情况. ...

  8. 102类花卉分类数据集(已划分,有训练集、测试集、验证集标签)

    102类花卉分类数据集(已划分,有训练集.测试集.验证集标签)+完整运行代码 数据集已经经过处理划分好了,并且附带了训练集,测试集,验证集的txt文本标签.配合完整运行代码即可训练. 数据集链接在文章 ...

  9. 【AI-1000问】训练为什么要分测试集和验证集?

    往期视频(前往有三AI公众号观看) 为什么要分训练集和测试集呢? 在很多的书以及一些公开数据集中,都会将数据集分为训练集,验证集和测试集,看起来验证集和测试集并没有区别,为什么要分这两个呢? 作者/编 ...

最新文章

  1. cv2.matchTemplate()函数的应用,匹配图片后画出矩形
  2. python2 与 python3 语法区别--转
  3. 新RSS reader
  4. Scrapy爬虫中的链接提取器LinkExtractor
  5. mysql 默认page大小_MySQL innodb_page_size
  6. 吐槽贴:用ELECTRA、ALBERT之前,你真的了解它们吗?
  7. iis6 去掉index.php,iis6如何隐藏index.php
  8. android学习笔记---64_ListView数据异步加载与AsyncTask
  9. Silverligth API for ArcGIS应用程序IIS发布
  10. 027. 从从门槛和可复制性聊聊生意模式
  11. csv文件超过104万数据怎么办
  12. 台式计算机国标码,在计算机中,国标码是属于什么码?
  13. Python Gstreamer播放rtsp视频(含音频)(海康IPCAM)
  14. c语言:运输公司对用户计算运输费用
  15. python中列表(list)的基本定义和用法
  16. 计算机桌面上常见的图标有,win10白图标修复的方法是什么_win10电脑桌面图标显示白色方块的解决方法-系统城...
  17. 网卡属性中的巨帧、巨型帧、Jumbo Frame
  18. 软件测试新手入门该学什么?最全整理,照着学就对了
  19. uniapp——轮播图(官方)、卡片轮播图
  20. 十转二进制的转换及其简便方法

热门文章

  1. 华栖云联手阿里云创首个媒体公共云平台
  2. 秒针计时器 html,js实现秒表计时器
  3. 快捷下载中国原创音乐基地音乐(包括金豆和无法下载音乐)
  4. 抖音运营如何提升直播间留存率(短视频老司机为您分享5个要素)
  5. Redis入门指南之复制
  6. ISP-长短曝光融合生成HDR图像
  7. iPhone Plus手机的分辨率到底是多少,是1080×1920还是1242×2208?
  8. 光学神经网络 Optical neural network
  9. 【图形学】【笔记】凹多边形
  10. Java 排序 - 冒泡排序