-1

我有一个具有2个特征和10000个样本的数据集。我想将这两个功能转换(集成)为一个功能,以供进一步分析。所以我想使用特征提取方法。由于两个特征之间的关系不是线性的,我想使用传统PCA以外的方法。具有少量特征的autoencoder中的隐藏节点的数量

由于样本数量远远大于特征的数量,我认为autoencoder是特征提取的好方法。但输入特征仅为2,那么自动编码器的形状将仅为2-1-2,这是一种线性提取。

是否有可能设置隐藏节点超过输入的数量,并使堆栈自动编码器,如2-16-8-1-8-16-2节点?

此外,使用autoencoder进行这种数据集成是一个很好的选择吗?如果没有,有没有更好的解决方案?

+1

要求指导设计和培训神经网络的问题对Stack Overflow来说是无关紧要的,除非在解决实现细节时似乎并非如此。另外请注意,要求示例代码也不是一个好问题。如果您在自动编码器背后的理论背景中需要帮助,请参阅[交叉验证](https://stats.stackexchange)。如果您在用TensorFlow实现模型时遇到了具体问题,那么编写一个[MCVE]对于我们理解这个问题非常重要。 –

+0

感谢您的评论。我同意这是交叉验证的恰当问题,因为autoencoder的设计是主要问题。我会移动这个交叉验证。 – ToBeSpecific

回答

0

为什么这是一个线性提取?如果您在隐藏层和输出层中使用任何非规则性,您将在它们之间获得非线性关系。你的编码必须是sigmoid(Ax + b)。

如果你真的想让你的网络更复杂,我建议在单个神经元层之前使用多个2神经元层。所以像这样的2 - 2 - 2 - 1 - 2 - 2 - 2节点。我看不出有什么理由为什么你需要扩大规模。

+0

但我认为如果两个输入节点之间存在关系,那么使用单个节点的单个隐藏层将产生类似于线性PCA的结果。另外,我认为简单地添加隐藏层(例如2-2-1-2-2)不会改变结果,因为更深的隐藏层可以为每个输入选择相同的权重(0.5和0.5)。 – ToBeSpecific

+0

但是通过使用非线性作为激活函数,您将不会得到线性关系,而是非线性关系。如果你想有一个更复杂的函数使用多重S形。我没有看到首先将信息吹起来然后缩小的益处。如果您担心您不需要使用深层网络使用跳过连接。 –

+0

谢谢你的回答。那么你认为除了autoencoder外,还有其他更好的选择吗?事实上,我之前用内核尝试过t-SNE和PCA,但autoencoder的性能要好得多。 – ToBeSpecific