将数据集分解成训练集可以帮助我们理解模型,这对于模型如何泛化到新的未见数据非常重要。如果模型过度拟合,它可能无法很好地泛化到新的看不见的数据。所以也不能做出好的预测。制定验证策略是成功预测使用AI模型的商业价值的第一步,本文概述了一些常见的数据拆分策略。一个简单的训练测试拆分将数据集分为训练和验证两部分,80%的训练和20%的验证。您可以使用Scikit的随机抽样来执行此操作。首先,随机种子需要固定,否则无法比较得到相同的数据拆分,调试时也无法复现结果。如果数据集很小,则无法保证验证拆分与训练拆分不相关。如果数据不平衡,则无法获得相同的分流比。所以简单的拆分只能帮助我们开发和调试,真正的训练还不够完善,所以下面的拆分方法可以帮助我们结束这些问题。K折交叉验证将数据集分成k个分区。在下图中,数据集分为5个分区。选择一个分区作为验证数据集,而其他分区作为训练数据集。这将在每组不同的分区上训练模型。最后,最终会得到K个不同的模型,这些模型在推理和预测的时候会通过集成的方式一起使用。K通常设置为[3,5,7,10,20]如果要检查低偏差的模型性能,请使用更高的K[20]。如果您正在构建一个用于变量选择的模型,k[3,5]较低,则该模型将具有较低的方差。优点:通过对模型预测进行平均,可以改进从同一分布中提取的未见数据的模型性能。这是获得良好生产模型的广泛使用的方法。可以使用不同的集成技术为数据集中的每个数据创建预测,并使用这些预测来改进模型,这称为OOF(out-foldprediction)。问题:如果您的数据集不平衡,请使用Stratified-kFold。如果一个模型在所有数据集上重新训练,其性能无法与任何使用k-Fold训练的模型进行比较。因为这个模型是在k-1上训练的,而不是在整个数据集上训练的。Stratified-kFold可以保留每个折叠中不同类别之间的比率。如果数据集不平衡,假设Class1有10个示例,Class2有100个示例。Stratified-kFold为每个折叠类创建与原始数据集相同的比率。这个想法类似于K折交叉验证,但每个折的比率与原始数据集相同。可以在每次拆分中保留类之间的初始比率。如果你的数据集很大,K-fold交叉验证也可以保留比率,但这是随机的,而Stratified-kFold是确定性的,可以用于小数据集。BootstrapandSubsamplingBootstrapandSubsampling类似于K-Fold交叉验证,但它们没有固定的折叠。它从数据集中随机选择一些数据,并使用其他数据作为验证并重复Bootstrap=alternatesamplingn次,我们在之前的文章中有详细介绍。什么时候用他?Bootstrap和Subsamlping仅应在估计度量误差的标准误差较大时使用。这可能是由于数据集中的异常值。总结通常在机器学习中,k折交叉验证被用作开始。如果数据集不平衡,则使用Stratified-kFold。如果异常值较多,可以使用Bootstrap或其他方法改进数据拆分。
