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