神经网络在靠近训练集的数据集上表现良好,但在更远的数据集上表现不佳。为什么?

机器算法验证 神经网络 交叉验证 深度学习
2022-04-10 10:44:07

我一直在使用连体神经网络对生物数据进行二元分类。我正在使用的数据集的每个条目都有一个位置坐标。

我的问题是,即使我的神经网络能够对空间上接近训练集的数据集进行出色的预测,它也无法对更远的数据集进行同样的预测。

我正在使用一种保留(无 k 折交叉验证)优化方法:该算法读取输入数据集,并将其拆分为包含 80% 输入元素的训练集和包含剩余 20 个元素的验证集% 的输入元素。

该算法使用训练集训练神经网络,然后将训练好的模型应用于保留的验证集。通过这样做,该算法能够在验证集上获得出色的预测分数(例如Matthews 相关系数>= 0.9)。

相反,当我尝试将训练有素的孪生神经网络应用于与训练集不相邻的测试集时,问题就出现了。在这些情况下,我的预测分数变得非常糟糕(MCC ~= +0.1)。

我还附上了这张简单的图片以更好地解释我的问题: 验证集测试和测试集测试的区别

有人可以帮我弄这个吗? 我应该怎么做才能解决这个问题? 谢谢

3个回答

您的数据中必须有一些自相关。在大多数情况下,如果忽略数据中的相关结构(伪似然),结果是数据中的估计误差太小。假设您考虑连续两天的天气,它们比一年中随机选择的两天的天气更可能相似。

基本上,您错误地进行了测试/培训选择。必须从整个样本中随机选择,而不是从连续的行中选择。这就是为什么简单随机抽样是无偏的,而方便抽样是无偏的。对连续的数据行进行采样,在某种意义上是有序的,实际上是方便采样。

您使用的图形应该是每个训练/测试/验证集的不同颜色的乱码。

假设 1:您错误地应用了交叉验证。

位置编码的信息在某种程度上与结果相关。为了改善这种情况,您可以尝试不选择相邻的集合,而是选择随机分区。这可能足以“平均”位置的影响。

假设 2:通过忽略位置数据,您正在丢弃信息。

但更好的是以某种方式利用位置编码的信息作为模型的特征。我不知道这里会采用什么形式,因为我不明白您要解决什么问题,但是如果您要根据一年中的某一天预测天气,您会想要结合以下知识昨天和明天的温度可以很好地预测今天的温度。在天气类比中,您的模型在预测明天与今天相似方面获得了很好的分数,但未能预测未来三个月。

假设 3:您实际上想要嵌套交叉验证。

你只有一个保留集,它是一个位置间隔。相反,您需要额外的个随机选择的位置分区作为保留。这是假设 1(折叠应该由观察的随机样本组成,而不是方便的样本)对为什么需要交叉验证的概念的自然扩展(使用每个观察来对模型进行评分,而不仅仅是一些观察)。k

我认为您对位置的编码方式有疑问,如上所述,但我的看法有点不同,因为我认为您将其编码为到参考点的绝对距离。如果是这样,您的 NN 只能在最远点的边界内正常工作。为了避免这个问题,一种解决方案是使位置相对,比如测试集的中心或类似的东西。让我知道这是否有助于解决问题。

PS如果您认为这与您的问题无关,我很乐意删除它..只是希望它有助于解决您的问题