欢迎光临散文网 会员登陆 & 注册

机器学习数据划分完全解读-train训练集、validation验证集和test测试集

2023-09-19 14:29 作者:python风控模型  | 我要投稿

本文旨在为那些在训练机器学习模型时需要了解各种数据集分割划分的学习者提供简短的入门概述。

训练数据集

训练数据集:用于拟合模型的数据样本。

我们用来训练模型的实际数据集(神经网络的权重和偏差)。该模型查看这些数据并从中学习。训练集得到的模型结果容易比测试集或验证集结果偏高,极少数情况出现相反情况。

验证数据集

验证数据集:用于在调整模型超参数时对训练数据集上的模型拟合情况进行无偏评估的数据样本。随着验证数据集的技能被纳入模型配置中,评估变得更加有偏差。

验证集用于评估给定的模型,但这是为了频繁评估。作为机器学习工程师,我们使用这些数据来微调模型超参数。因此,模型偶尔会看到这些数据,但永远不会从中“学习”。我们使用验证集结果,并更新更高级别的超参数。因此验证集会影响模型,但只是间接影响。验证集也称为开发集或开发集。这是有道理的,因为该数据集在模型的“开发”阶段很有帮助。

测试数据集

测试数据集:用于对训练数据集上的最终模型拟合进行公正评估的数据样本。

测试数据集提供了用于评估模型的黄金标准。仅在模型完全训练后(使用训练集和验证集)才使用它。测试集通常用于评估竞争模型(例如在许多 Kaggle 竞赛中,验证集最初与训练集一起发布,实际测试集仅在竞赛即将结束时发布,并且是决定获胜者的测试集上的模型结果)。很多时候验证集被用作测试集,但这不是一个好的做法。测试集通常都经过精心策划。它包含仔细采样的数据,涵盖模型在现实世界中使用时将面临的各种类别。


关于数据集分割比

既然您知道这些数据集的用途,您可能正在寻找有关如何将数据集拆分为训练集、验证集和测试集的建议。

这主要取决于两件事。首先是数据中的样本总数,其次是您正在训练的实际模型。

某些模型需要大量数据进行训练,因此在这种情况下,您需要针对更大的训练集进行优化。具有很少超参数的模型将很容易验证和调整,因此您可以减少验证集的大小,但如果您的模型有很多超参数,您也希望拥有一个大的验证集(尽管您也应该考虑交叉验证)。此外,如果您碰巧有一个没有超参数或无法轻松调整的模型,您可能也不需要验证集!

总而言之,与机器学习中的许多其他事物一样,训练-测试-验证分割比也非常适合您的用例,并且当您训练和构建越来越多的模型时,做出判断会变得更容易。


关于交叉验证的注意事项:很多时候,人们首先将数据集分为 2 个部分——训练和测试。之后,他们保留测试集,并随机选择训练数据集的 X% 作为实际训练集,其余 (100-X)% 作为验证集,其中 X 是固定数字(例如 80%) ),然后在这些不同的集合上迭代训练和验证模型。有多种方法可以做到这一点,通常称为交叉验证。基本上,您使用训练集来生成训练集和验证集的多个分割。交叉验证可以避免过度拟合,并且越来越流行,其中 K 折交叉验证是最流行的交叉验证方法。有兴趣同学可以阅读之前发布文章《StratifiedKFold分层K折交叉验证》。

Toby老师提醒一下,机器学习和深度学习建模数据划分比例是有差异的。机器学习train和validation(风控领域为相同时间段的取数数据)数据划分一般是七三开或四六开,深度学习划分比例有差异,具体比例以具体项目实验结果为准。


机器学习数据划分就为大家介绍到这里,《从0到1 Python数据科学之旅》有大量数据科学建模实际案例,大家扫一扫下面二维码,记得收藏课程。

版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

机器学习数据划分完全解读-train训练集、validation验证集和test测试集的评论 (共 条)

分享到微博请遵守国家法律