读童话的狼

2020-06-30   阅读量: 1546

机器学习是否需要验证集?

扫码加入数据分析学习群

最标准, 最严谨的交叉验证应该有三组数据: 训练集、 验证集和测试集。 当我们获取一组数据后, 先将数据集分成整体的训练集和测试集, 然后我们把训练集放入交叉验证中, 从训练集中分割更小的训练集( k-1份) 和验证集( 1份) , 此时我们返回的交叉验证结果其实是验证集上的结果。 我们使用验证集寻找最佳参数, 确认一个我们认为泛化能力最佳的模型, 然后我们将这个模型使用在测试集上, 观察模型的表现。
通常来说, 我们认为经过验证集找出最终参数后的模型的泛化能力是增强了的, 因此模型在未知数据( 测试集) 上的效果会更好, 但尴尬的是, 模型经过交叉验证在验证集上的调参之后, 在测试集上的结果没有变好的情况时有发生。 原因其实是: 我们自己分的训练集和测试集, 会影响模型的效果; 同时, 交叉验证后的模型的泛化能力增强了, 表示它在未知数据集上方差更小, 平均水平更高, 但却无法保证它在现在分出来的测试集上预测能力最强。 如此说来, 是否有测试集的存在, 其实意义不大了。如果我们相信交叉验证的调整结果是增强了模型的泛化能力的, 那即便测试集上的测试结果并没有变好( 甚至变坏了) , 我们也认为模型是成功的。 如果我们不相信交叉验证的调整结果能够增强模型的泛化能力, 而一定要依赖测试集来进行判断, 我们完全没有进行交叉验证的必要, 直接用测试集上的结果来跑学习曲线就好了。 所以, 究竟是否需要验证集, 其实是存在争议的, 在严谨的情况下, 大家还是使用有验证集的方式。

47.7275 10 4 关注作者 收藏

评论(0)


暂无数据

推荐课程