我有一个 1DCNN 模型,它似乎只能预测接近我的测试数据集中实际值的平均值。这是一个基于实际和预测的分布完全不同这一事实的糟糕模型吗?
Actual vs Predicted density plot
我的问题是:
我试图通过降低 MAE 来改进模型,但随着它的降低,它只会向实际数据的平均值移动,并远离实际分布的分布。你可以看到我的预测的 SD 大约是 9,而实际数据的 SD 大约是 22。用户想要实际单位的结果,这就是我提供 MAE 的原因。另外,我还有其他基线可以与 MAE 进行比较。我觉得这是一个非常具有误导性的指标。
我有大约 30 个天气和土壤特征,都是连续的和按比例缩放的。数千个天气地点的 6 年每日天气数据。在每个地点,我每年都有一个目标值。 1DCNN 架构如下所示。我将我的数据与训练的前 5 年分开,最后一年是测试。数据跨越美国 3 个州,每个州大约有 9 个物理区。我尝试为每个州建立一个模型(只有 3 个模型),但每个州的表现都很差。如果我将其构建到地区级别,我可以获得可以接受的结果。我不期望有很好的结果,但我真的只是想弄清楚为什么它会围绕平均值。
我的模型如下所示:
model = Sequential()
model.add(Conv1D(filters=13, kernel_size=3, activation='relu', input_shape=input_shape))
model.add(Conv1D(filters=13, kernel_size=3, activation='relu'))
model.add(Flatten())
model.add(Dense(32, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='linear'))
opt = Adam(lr=.0001)
model.compile(loss='mean_squared_error', optimizer=opt)
我正在不同大小的数据集上训练模型,以捕捉全年随着添加更多天气数据的结果,每个模型的预测如何相似。
答案 0 :(得分:0)
在问题中,您说您使用的是 MAE(平均绝对误差),但在代码中,您将损失用作 mean_squared_error
。
有什么理由吗?
一些调试思路。