编码机

机器学习使用自编码器进行降维示例

发布时间:2024/8/9 12:19:30   

想象一下,在你的机器学习数据集中有超过数千个输入特征,当我们进行机器学习模型训练时,我们希望能把数据集压缩为更少的特征。我们可以用一种叫做自编码器的神经网络来做到这一点。

本文将简要介绍一下自动编码器,并用简单示例进行说明其使用方法。

自编码器到底是什么?

自编码器是神经网络的一个分支,它基本上是将输入变量的信息压缩到一个小的维度空间中,然后重新创建输入数据集以再次训练它。

自编码器由3个主要部分组成

编码器(Encoder)

编码(Code)

解码器(Decoder)

Encoder:编码器是一个前馈、全连接的神经网络,它将输入压缩为潜在空间表示,并将输入图像编码为降维图像,并生成代码。代码的大小越小,压缩越高。

自编码器的表示Code:网络的这一部分包含馈入解码器的输入的简化表示。

Decoder:解码器也是一种前馈神经网络,类似于编码器,但表示是编码器的镜像。解码器从代码中将输入重建回原始维度。

注意:输入和输出的维度必须相同。

首先,输入通过编码器(这是一个全连接的人工神经网络)产生代码。具有类似ANN结构的解码器仅使用代码生成输出,目标是得到与输入相同的输出。注意,解码器架构是编码器的镜像。这不是必需的,但通常是这样。唯一的要求是输入和输出的维度需要相同。

超参数

Code大小:中间层中的节点数。越小,压缩越大。

层数:自动编码器可以按照我们喜欢的深度。在上图中,我们在编码器和解码器中都有两层,不考虑输入和输出。

每层的节点数:我们正在研究的自编码器架构被称为堆叠式自编码器,因为层是一个接一个堆叠的。每一层的节点数随着编码器的每一后续层而减少,并在解码器中增加。此外,就层结构而言,解码器对编码器是对称的。如上所述,这不是必需的,我们可以完全控制这些参数。

损失函数:我们使用均方误差(mse)或二元交叉熵。如果输入值在[0,1]范围内,那么我们通常使用交叉熵,否则,我们使用均方误差。

Python示例

让我们看看如何使用自编码器进行降维。让我们以一个拥有12个特征和行的数据集为例。现在我们的目标是将数据集压缩为6个特征。

包含12个特征的原始数据集让我们缩放数据,使所有数据点都位于相同的范围内

缩放后的数据集让我们构建一个自编码器,Python代码如下

具有6个特征的数据集我们可以看到编码器的输出,它将我们的数据集压缩为6个特征。

输入与重建红色阴影部分显示原始数据与重建数据之间的误差。



转载请注明:http://www.aideyishus.com/lktp/6475.html
------分隔线----------------------------