训练集trainning set和验证集validation set的划分策略
留出法hold-out
1将数据集划分成两个互斥的集合训练集和验证集,利用训练集进行训练模型,利用验证集进行模型和超参的选择。在使用留出法时候,通常使用分层采样stratified sampling来保证训练集和验证集的独立同分布(independent and identical distribution),所谓的分层采样指的是划分出的训练集和验证集的各个类别的分布是一样的。
交叉验证法cross-validation
如图所示,将数据集划分成k份,留出一份作为验证集,其余作为训练集,将模型训练k次,最后将训练的平均误差返回。常见的有10次10这交叉验证。
留一法Leave-One-Out
这是k折交叉验证的一个特例,将m个样本的数据集划分为m个数据集,每个数据集只有一个样本,将m-1个数据集分别训练模型,用最后一个数据集验证模型。数据量较大时留一法计算量是巨大的,每一个样本就得训练一次模型,不能像k折交叉一样可以利用并行计算,假如有100万数据则需要训练100万-1个模型,在数据量不时,留一法评估结果往往比较准确。
自助法bootstrapping
每次随机从数据集D挑选一个样本,将其拷贝到训练集D’中,然后再将数据放回到初始数据集D中,使得样本在下次采样中仍有机会被采到。重复执行m次后得到训练集D’,显然D中一部分样本会在D’中重复多次,而有一些样本不出现。做一个简单的评估,样本在m次时钟不被采到的概率是次,取极限得
即通过自助采样,初始数据集D中大约有36.8%的样本没有出现在训练集D’中,
于是我们将D-D’用作测试集,我们仍然后大概1/3的的没在训练集中出现的样本用于测试,这样的测试结果成为包外测试out-of-bag estimate。
总结
- 在数据集较小时,难以有效的划分训练集验证集,此时自助法能从初始数据集产生多个不同的训练集,这对集成学习有好处。
- 在数据足够时,留出法和交叉验证则更常用。
-
周志华 机器学习 ↩︎