验证准确度大于 cnn 中的训练准确度
数据挖掘
机器学习
美国有线电视新闻网
准确性
过拟合
python-3.x
2022-03-07 05:17:31
2个回答
正如@Suren 所避免的那样,由于类在训练和验证集上的分布,您的验证准确度可能高于您的训练准确度。如果训练集包含较高比例的特定类,并且验证类也包含该特定类的示例,那么您当然会看到验证准确度很高。
建议是平衡训练、验证和集合的类。您可以进行这种数据扩充,因为您可以人为地增加示例的数量,而不是您已经拥有的数据。看看这篇论文,它评估了使用数据增强的不同类平衡方法对 CNN 泛化性能的影响: https ://arxiv.org/pdf/1710.05381.pdf
正如@shepan6 所提到的,这可能是因为您在验证集中的班级平衡。您应该在训练集和验证集上打印出混淆矩阵。您可能会发现一个高错误类别在您的验证集中的代表性不足。您可能还会发现您的算法经常混淆两个类。例如,对于 MNIST,3 和 8 经常被混淆,因为它们在编写时看起来很相似。使用此示例,如果您的验证集中没有很多 3 和/或 8,那么验证集中的准确度将高于测试集中。
尽管 950 个样本的 1% 差异仅为 9.5 个样本,但从 97% 到 98% 的变化可能不仅仅是随机性。n = 950 和 p = 0.97 的二项式大于或等于 950*0.98=931 的概率约为 3.7%,因此在统计上这是一个不错的跳跃。(这里我忽略了来自训练集准确度测量不确定性的随机性,但是对于 3800 个样本,没有什么可担心的,尤其是在验证误差普遍上升的情况下。)
当然,您可能还想检查您的验证代码是否存在错误。也许您只是交换了训练集和验证集。
最后,您可能已经过度调整您的算法以在验证集上表现良好,并且您可能需要考虑收集新的验证数据(如果可能)。
