【机器学习】划分训练集和测试集的方法

2023-11-20 08:55:17 浏览数 (1)

在机器学习中,我们的模型建立完成后,通常要根据评估指标来对模型进行评估,以此来判断模型的可用性。而评估指标主要的目的是让模型在未知数据上的预测能力最好。因此,我们在模型训练之前,要对训练集和测试集进行划分。一般数据集划分的方法有四种:留出法、交叉验证法、留一法、自助法。

注:数据集D划分为两个互斥的的集合,其中一个集合作为训练集S,另一个作为测试集T

数据集的具体划分方法

1.留出法 留出法直接将数据集D划分为两个互斥的部分,其中一部分作为训练集S ,另一部分用作测试集T。用训练集T进行模型训练,测试集S来评估误差。

在此划分数据集上,训练/测试集的划分要尽可能保持数据分布的一致性,避免因为数据的分布差距较大对模型的训练结果产生影响。例如在二分类问题上,要保证数据样本的类别分布均匀,则我们通常采用分层采样对数据进行划分比如,现在有1000个数据样本,其中500个正例,500个反例,如果训练集:测试集为7:3,则我们采用分层采样随机取70%的训练集和30%的测试集。划分结果中训练集中包含350个正例和350个反例;测试集中包含150个正例和150个反例。 留出法在选择划分比例时,常常会出现很多问题,如果训练集的比例较大,可能会导致训练出的模型更接近于用D训练出的模型,同时测试集较小,会使评估结果不准确,模型的方差较大;若测试集的比例较大,则有可能导致训练的模型偏差较大,从而降低了评估的保真性。因此,常见的做法是将大约2/3~4/5的样本用于训练,比例划分两类训练集:测试集可以是6:4、7:3或8:2。 如果是三类训练集:验证集:测试集可以是6.2.2,验证集是可选值,但项目越庞大越需要验证集。

2.交叉验证法 (1)首先将数据集D划分为k个大小相似的互斥子集, 每个子集

都尽可能保持数据分布的一致性,即从D中通过分层采样得到。 (2)其次,每次用k-1个子集的并集作为训练集,剩余下的子集作为测试集。 (3)最后,可获得k组训练/测试集,从而可进行k次训练和测试,取k个测试结果的均值

交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,因此,交叉验证法称为”k折交叉验证”(k-fold cross validation),k通常取10,称10折交叉验证。

与留出法类似,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值,例如常见的10次10折交叉验证。

3.留一法 留一法作为交叉验证法的一种特殊情况,具体方法就是使k等于数据集中数据的个数,每次只使用一个作为测试集,剩余的全部作为训练集,重复采样取平均值。这种方法得出的结果与训练整个测试集的期望值最为接近,具有确定性。但是成本要求较高,没有采用分层采样,存在偏差。

4.自助法 自助法是一种从给定训练集中有放回的均匀抽样,每当选中一个样本,它等可能地被再次选中并被再次添加到训练集中。

自助法以自助采样法为基础,给定包含 m 个样本的数据集 D,每次随机从 D 中挑选一个样本,放入

D'中,然后再将该样本放回初始数据集 D 中,使得该样本在下次采样时仍有可能被采到;重复执行 m 次后,则包含m个样本的数据集 。

自助法中样本在m 次采样中始终不被采到的概率是

,取极限得到: 即 中约有36.8%的样本未出现在 中。于是将 用作训练集, 用作测试集。通过概率计算,经过m次抽样后会有约1/3的样本,始终不会被抽到,这部分数据可以用来测试。

自助法在数据集较小、难以有效划分训练/测试集时很有用;然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。

0 人点赞