神经网络用于多重输出回归


12

我有一个包含34个输入列和8个输出列的数据集。解决问题的一种方法是采用34个输入并为每个输出列建立单独的回归模型。我想知道是否可以仅使用一种模型(特别是使用神经网络)解决该问题。

我使用了多层感知器,但是像线性回归一样需要多个模型。顺序学习1可以可行吗?我尝试使用TensorFlow,它似乎无法处理浮点值。

任何通过仅使用一个统一模型(特别是使用神经网络)解决该问题的建议将不胜感激。

  1. Ilya Sutskever,Oriol Vinyals和Quoc V.Le(2014)。使用神经网络进行序列学习。神经信息处理系统进展,27。(pdf

什么是问题?
TEG-恢复莫妮卡

1
(对任何潜在的亲密投票者:这不是程序设计问题。在Stack Overflow上将不作讨论。)
gung-Reinstate Monica

您能否在此处阐明“顺序排列”选项?我不知道使用NN的人是否会熟悉它,但是对我来说不是。
gung-恢复莫妮卡

使用RNN进行序列到序列建模。 papers.nips.cc/paper/…–
sjishan

您可以尝试MultiOutputRegressor()。这适用于此类问题
Subham Sarkar,

Answers:


7

具有多个结果的神经网络的形式为

ÿ=γ+V1个Γ1个+ϵV1个=一个γ2+V2Γ2V2=一个γ3+V3Γ3V大号-1个=一个γ大号+XΓ大号
如果你的结果具有尺寸,那么[ γ 1Γ 1 ]将具有尺寸p V 1 + 1 × 8ñ×8[γ1个Γ1个]pV1个+1个×8

也就是说,您将假设每个结果共享隐藏层中的所有参数,并且只有不同的参数才能获取最上面的派生变量并将其与结果关联。

这是针对您的情况的现实假设吗?


5

起初,我以为generic_user的评论很容易,但是我只是意识到不是:

如果我在d个不同的输出上训练d个不同的网络,则每个网络都将适合该维度,而无需考虑其他维度。

但是,如果我训练一个具有d个输出的网络并将所有输出用于反向传播,则将调整网络中每一层的每个权重,以便所有d个输出都更加准确。

也就是说:每个网络参数都将通过梯度的总和进行调整(每个输出如何在此参数中以“ 摆动 ” 变化),使得在选定的向上或向下方向上进行调整都会导致整体上更加准确的输出-即使调整那样的权重会使输出的某些尺寸不太准确。

因此,是的,最终区分每个输出的东西只是在最后一层编码的线性方程式,但是在训练一个多输出网络时,一层在呈现最后一层更好的表现时会变得更好。 。因此,可以得出结论,此体系结构将解释输出之间的关系。

通过使体系结构反映输出中的任何已知关系,您可能比完全连接的网络做得更好,就像深层网络通过利用输入之间的“组成”关系比浅层网络做得更好


多元回归假设存在一些(未知)协方差矩阵,将目标变量彼此关联。您是否建议仅具有一个密集层就足以捕获此协方差,而无需显式包括隐藏层?
thecity2

我建议隐藏层必须捕获某些协方差。仅一个密集的输出层就是一串并行的线性线性回归函数。如果没有隐藏层可以相互调整并作为输入/传递作为对其他输出节点的输入,则无法在输出之间建立关系。
Pavel Komarov

0

您只能使用一个神经网络来实现。但是您的神经网络应如下所示:
输入层:34个节点(每个输入列一个)
输出层:8个节点(每个输出列一个)

您可以在神经网络中添加任意数量的隐藏层。因此,神经网络输出8个预测值,每个值将是输入的不同回归。


哪种语言支持哪个包?
Arpit Sisodia

0

我在想同样的事情。这是我的想法:

我想如果输出共享某些隐藏模式,则可以从同时学习所有输出的回归中受益于训练。

尝试在其中为每个输出构建神经网络的体系结构会很有趣,但是所有神经网络都共享一些层(例如,前半层)。然后,您可以同时训练每个神经网络:在学习循环中,每个神经网络都按一个步骤(一批)进行训练。

这将类似于知识转移,但是不同之处在于,在知识转移中,每个神经网络在重用一部分神经网络来训练另一个神经网络之前都经过了充分的训练。

我敢打赌有人曾经考虑过这一点,但我没有提及。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.