术语准确性和验证准确性之间有什么区别

时间:2018-07-15 02:46:19

标签: python keras lstm

我已经使用Keras的LSTM构建了一个模型,该模型可以检测Stack Overflow上的两个问题是否重复。运行模型时,我会在时代中看到类似的东西。

Epoch 23/200
727722/727722 [==============================] - 67s - loss: 0.3167 - acc: 0.8557 - val_loss: 0.3473 - val_acc: 0.8418
Epoch 24/200
727722/727722 [==============================] - 67s - loss: 0.3152 - acc: 0.8573 - val_loss: 0.3497 - val_acc: 0.8404
Epoch 25/200
727722/727722 [==============================] - 67s - loss: 0.3136 - acc: 0.8581 - val_loss: 0.3518 - val_acc: 0.8391

我试图理解每个术语的含义。以上哪个值是我的模型的准确性。我是机器学习的新手,所以任何解释都会有所帮助。

2 个答案:

答案 0 :(得分:13)

在训练机器学习模型时,您要避免的主要事情之一就是过拟合。这是您的模型很好地适合训练数据的时候,但是它不能对以前从未见过的数据进行概括和准确预测。

为了找出模型是否过度拟合,数据科学家使用了一种称为交叉验证的技术,该技术将数据分为两部分-训练集和验证集。训练集用于训练模型,而验证集仅用于评估模型的性能。

训练集上的指标可让您查看模型在训练方面的进展情况,而验证集上的指标可让您衡量模型的质量-能否做出新的预测基于之前从未见过的数据。

牢记这一点,损失和acc是训练集上损失和准确性的量度,而val_loss和val_acc是验证集合上损失和准确性的量度。

目前,您的模型在训练集上的准确度约为86%,在验证集上的准确度约为84%。这意味着您可以期望模型在新数据上的准确度达到〜84%。

我注意到,随着您的时代从23到25,您的acc指标会增加,而val_acc指标会减少。这意味着您的模型更适合训练集,但失去了对新数据进行预测的能力,这表明您的模型已开始适应噪声并且开始过拟合。

因此,这是有关验证指标及其解释方式的简要说明。

答案 1 :(得分:0)

RNN(LSTM)与CNN不同,因此可能有不同的原因。对于Keras的LSTM模型,我将修改两个LSTM参数。

  • 单位:下降
  • 状态:错误

通常,这些都是神经网络训练和验证数据集准确性差异中的可能性。我从互联网上收集答案

Sourosh

  • 对训练集或验证集进行预处理(零含义,规范化等),但不能同时进行两者处理
  • 一些表现不同的图层 在训练和从头开始推断的过程中,您的模型可能未正确实现
  • 过度拟合

dk14

  • 数据点不足,容量太大
  • 订购
  • 否/错误的特征缩放/归一化
  • 学习率太大