首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多输出回归的神经网络

多输出回归的神经网络
EN

Data Science用户
提问于 2017-02-10 23:17:41
回答 3查看 51.8K关注 0票数 31

我有一个包含34个输入列和8个输出列的数据集。

解决这一问题的一种方法是采用34个输入,并为每个输出列建立单独的回归模型。

我想知道这个问题是否可以用一个模型来解决,特别是使用神经网络。

我使用了多层感知器,但这需要多个模型,就像线性回归一样。序列排序是可行的选择吗?

我正在使用TensorFlow。我有代码,但我认为更重要的是,要理解我在多层感知器理论中遗漏了什么。

我理解在MLP中,如果您有一个输出节点,它将提供一个输出。如果有10个输出节点,那么这是一个多类问题。您可以从10个输出中选择概率最高的类。但在我的例子中,同样的输入肯定会有8个输出。

比如说,对于一组输入,你将得到某样东西的三维坐标(X,Y,Z)。输入= {1,10,5,7}输出= {1,2,1}。因此,对于相同的输入{1,10,5,7},我需要建立X值Y值和Z的模型。一种解决方案是使用MLP建立三个不同的模型。但我想看看我能不能有一个模特。所以我考虑使用seq2seq。因为编码器接受一系列输入,而解码器提供一系列输出。但似乎tensorflow中的seq2seq不能处理浮点值。不过,我可能错了。

EN

回答 3

Data Science用户

发布于 2017-02-11 21:04:34

您所描述的是一个正常的多维线性回归。这种类型的问题通常通过前馈网络来解决,无论是MLP还是任何其他适合问题性质的体系结构。

任何神经网络框架都能做到这样的事情。

这样做的关键是记住,最后一层应该有线性激活(即根本没有激活)。

根据您的要求,输入层的形状将是向量(34 )和输出(8,)。

更新:回归问题通常使用的损失函数是均方误差(MSE)。这里's是使用喀拉斯的多维回归的一个例子;网络不是一个MLP,但是它应该可以说明这个想法。

票数 17
EN

Data Science用户

发布于 2017-11-29 22:05:04

您可以非常简单地在Python中实现这一点。

你的X将是训练x,y,z坐标的集合。

你的Y将是测试x,y,z坐标的集合。

代码语言:javascript
复制
from sklearn import cross_validation                     
from sklearn.neural_network import MLPRegressor   

model = MLPRegressor(solver='lbfgs',alpha=0.001,hidden_layer_sizes=(150,))
cross_validation.cross_val_score(model, X, Y,scoring='mean_squared_error')
票数 4
EN

Data Science用户

发布于 2019-07-24 14:15:38

这比你想象的要容易得多--你可以简单地将输出层设置为向量,而不是单个标量。当然,这里没有魔力,我建议您准备好数据(执行批处理规范化,以便所有输出都是0到1之间的值)。

如果您使用的是Keras,那么这样做的方法是添加一个密集层作为最终输出层:

代码语言:javascript
复制
model.add(Dense(8, activation='linear'))
票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/16890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档