为什么神经网络会一直低估它的目标?

数据挖掘 神经网络 喀拉斯 毫升
2022-03-03 18:24:17

我有一个神经网络 (MLP),它始终低估了验证集、测试集和训练集上的目标变量(与验证集和测试集的数量大致相同)。换句话说,神经网络回归输出列 (Y_hat) 中的条目总和比目标变量列 (Y) 中的条目总和少 10%。目标列中的条目大于或等于零,并且有相当数量的零条目。目标变量分布的右侧尾部很长。

使用许多随机种子拟合神经网络始终会导致相似的结果(神经网络都以相同的方向和相似的量偏置)。

这个问题似乎对重要超参数的变化相当稳健,包括: - 提前停止 - 学习率计划 - 模型复杂性 - 正则化(dropout,batch norm)

对于低容量的神经网络,这个问题不太严重。

有没有人知道为什么会发生这种持续的低估?

2个回答

始终低估目标可能是由于目标变量的分布。如果目标分布具有负偏态(即,向较低值的长尾),则神经网络只是模式匹配以最小化这些错误。例如,如果网络有一个平方损失函数,那么尾部的大估计误差比头部的小估计误差的权重更大,即使尾部的数据点较少。该模型试图最小化整体损失函数,并且通过持续低估来“欺骗取胜”。

我在尝试预测安装 free-2-play 游戏的玩家的 LTV 时遇到了同样的问题,在尝试了所有不同的架构、权重、不同的损失函数进行优化等之后,我意识到 DNN 并不是解决此类问题的最佳解决方案,并且一直低估,因为它们只是试图拟合各种连续函数。

(尝试不同的损失函数,如平均绝对误差、均方对数误差等会使情况变得更糟)

最后,我使用了 RandomForest Regressor 并为尾部提供了更多训练数据,以确保我的随机森林在尾部学习得更好,因为我知道尾部是问题严重的地方。当然,经过一些微调后,这个解决方案就像一个魅力。