数据集的训练集和测试集划分
留出法(hold-out)
留出法,直接将数据集 划分为两个互斥的集合,其中一个集合作为训练集 ,另一个作为测试集 ,一般做法是将2/3~4/5的样本作为训练集,其余部分作为测试集;
在使用留出法时,一般采用多次随即划分、重复进行实验评估后,取平均值作为留出法的评估结果。
交叉验证法(cross validation)
交叉验证法,或 折交叉验证法(k-fold cross validation),先将数据集 划分为大小相似的 个互斥子集,然后进行 次实验,每次实验使用 个子集作为训练集,剩下的1个子集作为测试集,其中,每个子集都作为测试集进行过一次实验;
在使用交叉验证法时,通常要随机使用不同划分重复 次,最终的评估结果是 次 折交叉验证结果的平均值。
例如,10次10折交叉验证法,进行了100次实验。
特别地,当 时( 为样本数), 折交叉验证法,即为留一法(Leave-one-out),此方法只有一种划分子集的划分方式,即每个子集包含一个样本。
自助法(bootstrapping)
自助法,对于包含 个样本的数据集 ,每次随机抽取一个样本作为训练样本,又放回地抽取,执行 次抽取操作,得到训练样本集,剩余部分则为测试集;
当m趋于无穷时,样本在测试集中出现的概率趋于
,即约0.368,如下面公式所示:
自助法适用于数据集较小,难以有效划分训练集和测试集的情况;
自助法产生的数据集改变了初始数据集的分布,引入了估计偏差;
因此,在数据量足够的情况下,一般使用留出法或交叉验证法。
注意事项
测试集至少包含30个样例;
测试集/训练集划分时,要尽可能保持数据分布的一致性,例如,分类任务中保持样本类别比例相似(分层采样,stratified sampling)。