因为我们只有一个数据集,既要训练,又要测试,所以我们需要对测试集进行适当处理,从中产生训练集 和测试集 。使用模型在测试集上的测试误差作为泛化误差的近似。
无论什么数据集拆分方法,我们都需要注意:
- 在划分训练集和测试集时,要尽可能保持数据分布的一致性;
- 在确定划分方法后,可以通过若干次划分、重新试验评估取平均值来求得更准确的评估方法。
方法一:留出法(简单交叉验证)
直接将数据集 划分为两个互斥的集合,其中一个集合作为训练集 ,另一个作为测试集 ,即 。一般来说,我们将 -
相关教材:《机器学习》(周志华):2.2.1(留出法);《统计学习方法》(李航):1.5.2.1(简单交叉验证)
方法二:交叉验证法(S 折交叉验证)
先将数据集 划分为 个大小相似的互斥子集,即 ,然后每次利用 个子集的并集作为训练集 ,利用余下的子集作为测试集 。这样就得到了 组训练集和测试集,从而可进行 次训练和测试,最终这
相关教材:《机器学习》(周志华):2.2.2(交叉验证法);《统计学习方法》(李航):1.5.2.2(S 折交叉验证)
方法三:留一法(留一交叉验证)
不妨设交叉验证法中数据集 有 个样本,若令 ,则得到了留一法。
相关教材:《机器学习》(周志华):2.2.2(交叉验证法);《统计学习方法》(李航):1.5.2.3(留一交叉验证)
方法四:自助法
不妨设数据集 有 个样本,从 中有放回地随机抽取 个样本,构成训练集 。此时每个样本不被采到的概率为 ,即通过有放回的随机抽样,约有 36.8% 的样本未出现在训练集之中,这些样本即为测试集 。
相关教材:《机器学习》(周志华):2.2.3(自助法)