使用keras和回归预测高值

Predicting high values with keras and regression

我正在尝试建立一个回归模型,但 mse 和 mae 非常高。我过滤并规范化数据(输入和输出,以及测试和训练集)。我认为问题来了,因为我在一列中有非常高的值:最小值是 1,最大值是 9100000(没有标准化),但我实际上需要预测这些高值。

模型如下所示:我有 6 个输入列和 800000 行。我尝试了更多的神经元和层,或者改变了 sigmoid 函数,但是 mse 的损失和误差保持在 0.8 左右,mae 保持在 0.3 左右。预测值也远低于应有值,从未达到高值。

model = Sequential()

model.add(Dense(7, input_dim=num_input, activation='relu'))
model.add(Dense(7, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mse', optimizer='rmsprop', metrics=['mse', 'mae'])

history = model.fit(x_train, y_train, epochs=epochs, batch_size=batch_size, validation_data=(x_val, y_val))

几个remarks/advices:

  • RMSProp 一般不用于全连接层,我建议改用 Adam 或 SGD。

  • 如果您有一个包含许多大值的偏态分布,您可以考虑改用这些值的对数。

  • 首先尝试使用神经元较少的浅层模型。然后逐渐增加神经元的数量以过度拟合数据集。你应该能够在训练集上达到满分。那时你可以开始减少神经元的数量并添加带有 dropout 的层以提高泛化能力。

  • 正如评论中已经提到的,回归的输出激活应该是“线性的”。 Sigmoid 用于二进制分类。