验证神经网络模型性能

机器算法验证 机器学习 神经网络 验证 模型评估
2022-04-03 05:33:24

我正在用神经网络做一些实验,我想寻求一些支持来验证我的方法和结果。

我的设置:我将数据分成 5 秒的时隙,即所有时间戳都在 5 秒内。对于每个插槽,我得到大约。1000 个样本。此外,我对每个样本都有 7 个均值归一化的特征。4 是数字,3 是布尔 (0,1)。我的网络拓扑是 7-15-1,训练算法是弹性反向传播(Jordan 循环网络),具有 sigmoid 激活函数和 atan 误差函数。我使用 5 折交叉验证来检查网络。每个样本的目标特征是一个布尔值。

我的目标是用一个时隙(时隙 n)的数据来训练网络,并用它来对来自下一个 (n+1) 时隙的样本进行排序(范围从 0-1,因此是单个输出节点)。我正在使用神经网络,因为我想将其性能与 SVM 和逻辑回归等其他模型进行比较。

以下是我关于设置和结果的问题:

  1. 我能够在时隙内收集具有所有特征的所有样本。我是否需要检查我正在使用的特征的概率分布,或者平均归一化是否足够?
  2. 将单个输出节点的结果作为排名函数是否合理?
  3. 训练误差迅速降至 0.1 以下(经过 20-50 次迭代)。随着更多的迭代(高达 10.000)它不会变得更好,通常它会变得更糟(误差高达 0.4)。错误率下降得这么快可以吗,还是我应该持怀疑态度?
  4. 一般而言,神经网络是否只有在例如 50.000 次迭代之后才真正可用?
  5. 接受 0.1 的错误率是否合理?当然,越少越好,但我无法进一步减少错误。
  6. 交叉验证误差总是大约。训练误差的两倍。这太多了吗?我读到“当 cv 误差远大于训练误差时,你的方差很大” 0.2 已经大还是 0.4 大?
  7. 由于我对每个样本都有一个目标值,因此我还对每个分类器进行了 f-measure 评估。它总是大约。0.75。我选择了0.3作为分类错误阈值,即当理想值(0或1)与预测值之间的差异在0.3以内时,分类是可以的。这个值是不是太大了,或者你会说一个分类阈值应该总是 >0.95?
1个回答

只是为了确保我们在同一页面上:您有一个包含 1000 个样本的序列,每个样本有 7 个特征。那里有一个顺序模式,这就是你用 RNN 处理它们的原因。在每个时间步长:

  1. 这取决于。如果您使用不同的标准化可能会变得更好,这很难说。
  2. 对我来说,这听起来像是分类。我不确定您所说的准确排名是什么意思。
  3. 没有理由怀疑。通常情况下,训练错误会像这样下降——几次迭代非常快,之后非常慢。
  4. 不,绝对不是。对于某些任务,少于 100 次迭代(= 通过训练集)就足够了。
  5. 你是必须说错误是否足够小的人。:) 我们无法在不知道您使用网络的目的的情况下告诉您。
  6. 很难说。您应该改用提前停止。训练网络,直到某些验证集上的错误上升——从那一刻起,你只会过拟合。使用找到的权重在测试集上进行评估。(这使它成为三组:训练、验证、测试集)。

以下是我可以提供的一些提示: