留出法
将数据集 D 拆分为 训练集 S 和测试集 T
正常来说会保留 70% 用作训练,30% 用作测试。采样时采用分层采样(stratified sampling)的方法,即根据样本标签将数据进行分类之后按照对应比例抽取样本
一般来说会重复上述抽取训练测试的步骤 n 次,取最后的平均值当作模型的结果
缺点:取样随机性导致评估结果与模型最终的结果偏差可能会很大
交叉验证法
将数据集 D 拆分成 k 个相似并且互斥的子集,每个子集均通过分层采样得到。称之为 k 折交叉验证
保留其中一份作为测试集,剩余作为训练集。最后返回 k 次的平均值
一般会重复上述操作 n 次,称之为 n 次 k 折交叉验证。最后取这 n 次的均值作为模型的结果
特殊的交叉验证方法:留一法(Leave-One-Out, LOO)
假设数据集 D 中包含一共包含 n 个样本,留一法指的就是将 D 拆成 n 个子集,并继续进行交叉验证的剩余步骤。
优点:评估结果与最终的模型训练结果相似,较准确。
缺点:数据集大时,计算量大
自助法(Bootstrapping)
对有 n 个样本的数据集 D 进行有放回的抽取 n 次,得到新的数据集 D‘
得到的 D’ 中有重复数据,且 D 中不仅包含 D‘ 中所有数据,还存在未出现的数据。可以计算一个样本在 n 次采样过程中不被选取的概率为:, 可以看到有大约36%的数据是不会被选入的。
此时将 D’ 作为训练集进行训练,D\D' 作为测试集(“\” 表示集合减法)。得到的测试结果称为包外估计(out-of-bag estimate)
该方法产生的数据集改变了原始数据集的分布,可能造成估计偏差。此方法适合于数据集较小、难以划分训练集和测试集时,例如应用于集成学习。在数据量充足的时候,应该选用留出法和交叉验证法。