【发布时间】: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