3.1.3模型检验
仅仅使用默认配置的模型与不经处理的数据特征,在大多数任务下是无法得到最佳性能表现的。因此,在最终交由测试集进行性能评估之前,我们自然希望可以尽可能利用手头现有的数据对模型进行调优,甚至可以粗略地估计测试结果。
在这里需要强调的是:尽管本书在许多章节中所使用的测试数据是由我们从原始数据中采样而来,并且多数知晓测试的正确结果;但是这仅仅是为了学习和模拟的需要。一些初学者因此经常拿着测试集的正确结果反复调优模型与特征,从而可以发现在测试集上表现最佳的模型配置和特征组合。这是极其错误的行为!
因此我们要充分使用现有数据,通常的做法是对现有数据进行采样分割:一部分用于模型参数训练,叫做训练集;另一部分数据集合用于调优模型配置和特征选择,并且对未知的测试性能做出估计,叫做开发集或者验证集,根据验证流程复杂度的不同,模型检验方式分为留一验证与交叉验证。
3.1.3.1留一验证
留一验证是从任务提供的数据中,随机采样一定比例作为训练集,剩下的“留做”验证。通常,我们取这个比例为7:3,即70%作为训练集,剩下的30%作为模型验证。不过,通过这一验证方法优化的模型性能也不稳定,原因在于对验证集合随机采样的不确定性。因此,这一方法被使用在计算能力较弱,而相对数据规模较大的机器学习发展的早期。当我们拥有足够的计算资源之后,这一验证方法进化成为更加高级的版本:交叉验证。
3.1.3.2交叉验证
交叉验证可以理解为从事了多次留一验证的过程。只是需要强调的是,每次检验所使用的验证集之间是互斥的,并且要保证每一条可用数据都被模型验证过。因此,就以5折交叉验证为例。
全部可用数据被随机分割为平均数量的5组,每次迭代都选取其中的1组数据作为验证集,其他4组作为训练集。
交叉验证的好处在于,可以保证所有数据都有被训练和验证的机会,也尽最大可能让优化的模型性能表现得更加可信。
网友评论