学习笔记,如有疑问欢迎交流。
一、什么是数据集?
由数据样本组成的集合。
样本之间是独立的(不依赖其他样本),单个样本拿出来仍然可以称为此目标的样本。
(最好)没有必然联系(除目标外),比如飞机和蓝天,如果数据集中的飞机都出现在蓝天里,结果可能将蓝天也分类为飞机,或其他背景中的飞机不会被识别。
详见 数据集-百度百科
二、 什么样的数据集是好的?
- 样本数量足够多
- 分布比较广(尽可能包含目标物体所有情况)
三、 怎样划分数据集?
我们获得数据后要对其进行划分,数据集一般包括:
- 训练集(Training Set):模型用于训练和调整模型参数。
- 验证集(Validation Set):用来验证模型精度和调整模型超参数,选择模型。
- 测试集(Test Set):测试模型的泛化能力,最终对模型评估。
因为训练集和验证集是分开的,所以模型在验证集上面的精度在一定程度上可以反映模型的泛化能力。在划分验证集的时候,需要注意验证集的分布应该与测试集尽量保持一致,不然模型在验证集上的精度就失去了指导意义。
既然验证集这么重要,那么如何划分本地验证集呢。在一些比赛中,赛题方会给定验证集;如果赛题方没有给定验证集,那么参赛选手就需要从训练集中拆分一部分得到验证集。验证集的划分有如下几种方式:
- 留出法(Hold-Out) 直接将训练集划分成两部分,新的训练集和验证集。这种划分方式的优点是最为直接简单;缺点是只得到了一份验证集,有可能导致模型在验证集上过拟合。留出法应用场景是数据量比较大的情况。
- 交叉验证法(Cross Validation,CV)
- K-折交叉验证。 将训练集划分成K份,将其中的K-1份作为训练集,剩余的1份作为验证集,循环K训练。这种划分方式是所有的训练集都是验证集,最终模型验证精度是K份平均得到。这种方式的优点是验证集精度比较可靠,训练K次可以得到K个有多样性差异的模型;CV验证的缺点是需要训练K次,不适合数据量很大的情况。
- 留一法。 K-折交叉验证的特殊情况。K=N,N为数据集的样本数,即每一份有一个样本。
- 自助采样法(BootStrap) 通过有放回的采样方式得到新的训练集和验证集,每次的训练集和验证集都是有区别的。这种划分方式一般适用于数据量较小的情况。
这些划分方法是从数据划分方式的角度来讲的,在现有的数据比赛中一般采用留出法和交叉验证法。如果数据量比较大,留出法还是比较合适的。