• AI数据集全解析:掌握训练集、验证集与测试集的秘密

    发布日期:2025-01-25 01:04    点击次数:89

    首先,让我们通过一个比喻来解释三种数据集之间的关系:

    训练集好比是课堂上学习的知识。验证集就像是课后练习题,帮助我们纠正错误并巩固所学知识。测试集则相当于期末考试,用来衡量我们最终的学习成效。什么是训练集?

    训练集(Training Dataset)主要用于模型的训练过程。

    在模型构建阶段,主要依赖训练集来进行学习和优化。

    什么是验证集?

    当模型完成初步训练后,我们可能对其性能不太确定。这时可以使用验证集(Validation Dataset)来评估模型在未见过的新数据上的表现,并通过调整超参数使模型达到最佳状态。

    验证集有两个重要作用:

    用于评估模型效果,以便于调整超参数。帮助找到最佳的超参数设置,使得模型在验证集上表现最好。

    说明:

    与训练集和测试集不同,验证集不是必需的。如果不需要调整超参数,可以直接跳过验证步骤,仅使用测试集进行评估。需要注意的是,验证集的结果并不代表模型的最终性能,它只是用来辅助超参数的选择;真正的模型效果应以测试集的结果为准。什么是测试集?

    一旦确定了合适的超参数,接下来就是利用测试集(Test Dataset)对模型进行全面评估。通过这一步骤可以获得诸如准确率、精确率、召回率及F1分数等关键指标。

    如何合理地划分数据集?

    下面介绍的是针对留出法验证策略下的数据集划分方法。

    虽然没有硬性规定,但通常遵循以下原则:

    对于较小规模的数据(几万条记录),一般建议按照60%训练集、20%验证集、20%测试集的比例分配。对于大规模数据(百万级别以上),只要保证验证集和测试集中有足够的样本即可,如从100万条数据中抽取1万条作为验证集和测试集。如果超参数较少或易于调整,则可以减少验证集所占比例,将更多资源投入到训练集中。交叉验证法为什么要采用交叉验证法?

    就像教孩子学加法一样,“1个苹果+1个苹果=2个苹果”。

    当我们再次提问时,可能会问:“1个香蕉+1个香蕉等于几个香蕉?”

    如果孩子能够回答正确,并且无论换成什么物品都能给出正确答案,那么我们就可以认为他已经掌握了“1+1=2”的概念。

    同样地,为了判断一个模型是否真正学会了某项技能,也需要引入新的数据来进行检验,而不是仅仅依赖于训练过程中使用的数据。这就是所谓的交叉验证法。

    三种常见的交叉验证方法

    留出法(Holdout Cross Validation)

    正如前面提到的那样,按照固定比例将整个数据集静态地分为训练集、验证集以及测试集的方法被称为留出法。

    留一法(Leave One Out Cross Validation)

    每次只选取单个样本作为测试对象,重复m次实验。这种方法因为每次只移除一个样本而保留了几乎所有原始信息,所以最接近实际情况下的分布情况。但由于需要执行大量计算操作,因此通常只在数据量不足时才会考虑采用。

    k折交叉验证(k-Fold Cross Validation)

    静态分割可能会导致结果不稳定,因此引入了动态分割技术——k折交叉验证。其具体流程如下:

    首先将全部数据分为两部分:一部分作为测试集暂存不动;另一部分继续细分为k个子集。每次选取其中一个子集作为当前轮次的验证集,剩余部分合并起来形成新的训练集。经过k次迭代后得到k个不同的模型。最后根据这些模型的表现选择最优配置,并应用该配置重新训练整个数据集以获得最终版本。通常情况下,k值设为10较为常见;但对于小样本来说,可以适当增加k值以提高训练效率;反之亦然。

    k值的选择取决于具体情况,一般情况下取值为10较为合适;对于小型数据集而言,增大k值有助于提高训练效率;相反地,对于大型数据集,则可以适当减小k值以节省资源。