【问题标题】:Tensorflow neural network has very high error with simple regressionTensorflow 神经网络的简单回归误差非常高
【发布时间】:2019-02-05 07:55:04
【问题描述】:

我正在尝试构建一个神经网络,以便在 Tensorflow 中使用 Keras 进行回归。

我试图根据一组特征来预测歌曲的排行榜排名,我发现低特征 1、高特征 2 和高特征 3 与高特征之间存在很强的相关性图表上的位置(低输出排名,例如位置 1)。

但是,在训练我的模型之后,MAE 在训练集和测试集上都达到了大约 3500(非常非常高)。投入一些值,对于所有 3 个特征中值较低的观测值,它似乎给出了最低的输出排名。

我认为这可能与我标准化数据的方式有关。将其放入每个功能都有一列的 pandas 数据框后,我使用以下代码进行规范化:

def normalise_dataset(df):
    return df-(df.mean(axis=0))/df.std()

我正在使用一个顺序模型,其中一个密集输入层有 64 个神经元,一个密集输出层有一个神经元。这是它的定义代码:

model = keras.Sequential([
    keras.layers.Dense(64, activation=tf.nn.relu, input_dim=3),
    keras.layers.Dense(1)
])
optimizer = tf.train.RMSPropOptimizer(0.001)
model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])

我是一名软件工程师,而不是数据科学家,所以我不知道这个模型设置是否适合我的问题,我非常愿意就如何使其更适合我的使用提出建议案子。

谢谢

编辑:这是我的训练数据的前几个整体,大约有 100,000 个整体。最后的 col (finalPos) 包含标签,即我要预测的字段。

chartposition,tagcount,artistScore,finalPos
256,191,119179,4625
256,191,5902650,292
256,191,212156,606
205,1480523,5442
256,195,5675757,179
256,195,933171,7745

【问题讨论】:

  • 你能举例说明你的数据(输入和输出)是什么样的吗? “高低特征”没有帮助。
  • @DocDriven,用示例编辑了原始帖子。谢谢
  • 尝试用 Tensorboard 可视化你的模型训练,看看你是否能从那里得到任何线索。
  • 你的规范化看起来不对,应该是 (df - mean)/std,注意括号。
  • 您尝试过不同的拓扑和/或激活函数吗?此外,您的第四个数据样本似乎错过了一个条目。另外,您说您使用的是 MAE,但在您的编译步骤中您似乎使用了 MSE。请澄清这一点。

标签: python tensorflow machine-learning keras data-science


【解决方案1】:

第一个明显的事情是您以错误的方式规范化数据。正确的做法是

return (df - df.mean(axis=0))/df.std()

我只是更改了括号,但基本上是(数据 - 均值)除以标准差,而您将均值除以标准差。

【讨论】:

  • 好的报告回来,这有趣地增加了 MAE!猜猜我的问题出在其他地方。
猜你喜欢
  • 2018-05-08
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 2017-02-26
  • 2019-01-07
  • 2021-02-03
相关资源
最近更新 更多