数据集划分的三种常见方式!

3b6d9aeb45f9571a774c20009de8a4d0.png关注+星标,听说他有点东西ef25c12725bd206c263dc77f6762ca4d.png

全文共 1929 ,阅读全文需 6 分钟

大家好,我是小一087812e785708b69076bae56293b7c7b.png

今天分享一个比较简单的问题:数据集划分的三种方法。

数据集划分算是在数据分析建模中比较重要的,模型的好坏不但和训练数据有关,还和测试数据有关,当然,也和评估指标有关,不过今天先来看前者。


▶什么是数据集和它的划分?

对于模型来说,其在训练集上面的误差我们称之为 训练误差 或者 经验误差,而在测试集上的误差称之为 测试误差

因为测试集是用来测试学习器对新样本的学习能力,因此我们可以把测试误差作为 泛化误差 的近似(泛化误差:在新样本上的误差)。

对于我们来说,我们更关心的是模型对于新样本的学习能力,即我们希望通过对已有样本的学习,尽可能的将所有潜在样本的普遍规律学到手,而如果模型对训练样本学的太好,则有可能把训练样本自身所具有的一些特点当做所有潜在样本的普遍特点,这时候我们就会出现 过拟合 的问题。

因此在这里我们通常将已有的数据集划分为训练集和测试集两部分,其中训练集用来训练模型,而测试集则是用来评估模型对于新样本的判别能力。

对于数据集的划分,我们通常要保证满足以下两个条件:

  1. 训练集和测试集的分布要与样本真实分布一致,即训练集和测试集都要保证是从样本真实分布中独立同分布采样而得;

  2. 训练集和测试集要互斥

对于数据集的划分有三种方法:留出法,交叉验证法和自助法,下面挨个介绍


▶留出法

留出法 是直接将数据集 D 划分为两个互斥的集合,其中一个集合作为训练集 S,另一个作为测试集 T

我们需要注意的是在划分的时候要尽可能保证数据分布的一致性,即避免因数据划分过程引入额外的偏差而对最终结果产生影响。

为了保证数据分布的一致性,通常我们采用 分层采样 的方式来对数据进行采样。

假设我们的数据中有 m1 个正样本,有 m2 个负样本,而 S 占 D 的比例为 p,那么 T 占D 的比例即为 1−p,我们可以通过在 m1 个正样本中采 m1∗p 个样本作为训练集中的正样本,通过在 m2 个负样本中采 m2∗p 个样本作为训练集中的负样本,其余的作为测试集中的样本。

注意:样本的不同划分方式会导致模型评估的相应结果也会有差别

例如:

如果我们把正样本进行了排序,那么在排序后的样本中采样与未排序的样本采样得到的结果会有一些不同

因此通常我们都会进行多次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。


缺点:

对于留出法,如果我们的对数据集 D 划分后,训练集 S 中的样本很多,接近于 D,其训练出来的模型与 D 本身训练出来的模型可能很接近,但是由于 T 比较小,这时候可能会导致评估结果不够准确稳定;

如果 S 样本很少,又会使得训练出来的样本与 D 所训练出来的样本相差很大。

通常,会将 D 中大约 2/3~4/5 的样本作为训练集,其余的作为测试集


▶交叉验证法

k 折交叉验证:通常将数据集 D 分为 k 份,其中的 k-1 份作为训练集,剩余的那一份作为测试集,这样就可以获得 k 组训练/测试集,可以进行 k 次训练与测试,最终返回的是 k 个测试结果的均值。

这里数据集的划分依然是依据 分层采样 的方式来进行。

对于交叉验证法,其 k 值的选取往往决定了评估结果的稳定性和保真性,通常 k 值选取 10

与留出法类似,通常我们会进行多次划分得到多个 k 折交叉验证,最终的评估结果是这多次交叉验证的平均值。

当 k=1的时候,我们称之为留一法

我们可以发现留一法并不需要多次划分,其划分方式只有一种

因为留一法中的 S 与 D 很接近,所以 S 所训练出来的模型应该与 D 所训练出来的模型很接近,因此通常留一法得到的结果是比较准确的

但是当数据集很大的时候,留一法的运算成本将会非常的高以至于无法忍受。


▶自助法

留出法与交叉验证法都是使用 分层采样 的方式进行数据采样与划分,而自助法则是使用 有放回重复采样 的方式进行数据采样

自助法:我们每次从数据集D中取一个样本作为训练集中的元素,然后把该样本放回,重复该行为 m 次,这样我们就可以得到大小为m的训练集,在这里面有的样本重复出现,有的样本则没有出现过,我们把那些没有出现过的样本作为测试集。

进行这样采样的原因是因为在D中约有 36.8% 的数据没有在训练集中出现过(取极限后求得)

这种方法对于那些数据集小、难以有效划分训练/测试集时很有用,但是由于该方法改变了数据的初始分布导致会引入估计偏差。

随机森林算法中用到的就是自助法,具体可看随机森林篇:大话系列 | 集成算法之随机森林


▶总结一下

对于数据量充足的时候,通常采用 留出法 或者 k折交叉验证法 来进行训练/测试集的划分;

对于数据集小且难以有效划分训练/测试集时使用 自助法

对于数据集小且可有效划分的时候最好使用 留一法 来进行划分,因为这种方法最为准确 最常用』

当数据集划分完毕后,就需要建立相关模型,具体的模型算法可选的就很多了,前面都有介绍过。

模型建立好之后我们需要对模型的的泛化能力进行衡量,而衡量模型的评价标准有:错误率与精准率、查准率、查全率与F1、ROC与AUC、错误率和代价曲线 等等

下篇将会分享《模型评估指标》

往期文章

数据处理中的标准化、归一化,究竟是什么?

做数据处理,你连 fit、transform、fit_transform 都分不清?

千万级别数据 de 筛选过滤,小一教你一招

我是小一,坚持向暮光所走的人,终将成为耀眼的存在!

期待你的 连!我们下节见

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值