为什么测试精度高于训练精度

时间:2016-06-01 20:21:31

标签: machine-learning tensorflow conv-neural-network

我正在使用TensorFlow来实现对象识别。我遵循了本教程,但使用了我自己的数据集。 https://www.tensorflow.org/versions/r0.8/tutorials/mnist/pros/index.html#deep-mnist-for-experts

我使用212个阳性样本和120个阴性样本进行训练。测试集包含100个阳性样品和20个阴性样品。 训练精度仅为32.15%,但测试精度为83.19%

我想知道是什么让测试精度高于训练精度,我的数据集还不够大?数据没有显示任何统计意义?或者这是一般性的事情,因为我看到一些人说训练精度没有任何意义。但那为什么呢?

1 个答案:

答案 0 :(得分:2)

这里有两个问题。

首先,当类不平衡时,精度不是衡量性能的一个很好的指标。

其次,更重要的是,您在测试集中的负面与正面的不良比率。您的测试集应该来自与训练集相同的过程,但在您的情况下,负数约为训练集的40%,但仅为测试集的约17%。不是很令人惊讶 - 分类器简单地回答" true"对于每个输入,测试集的精度将达到83%(正数为整个数据的83%)。

因此,这不是测试样本数量的问题,而是训练/测试数据集的错误构造的问题。我还可以想象,这种分裂存在更多问题,可能在训练和测试中存在完全不同的结构。