Press "Enter" to skip to content

自编码器数据降维实践

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

数据降维是一件困难的事情,而难点通常集中在主成分分析上。此前,我介绍过 一种基于自动编码器的降维方法 。然而,在那一段时间里,我专注于如何使用自动编码作为预测器,而现在我想把它们看作是一种降维技术。

 

这篇文章的目的是解释一下自动编码器是如何工作的。它是从将原始数据压缩成一个忽略噪声的短代码开始的。然后,该算法对该代码进行解压缩,以生成尽可能接近原始输入的图像。

 

 

自动编码的过程

 

实际案例

 

我们来谈谈金融界的一个热门话题:利率模型。我们已经尝试了主成分分析技术,发现总结起来,利率信息主要有三个因素,这三个因素代表零息曲线的等级、斜率和曲率,它们保留了大约 95% 的信息。

 

我想知道自动编码器是否能够通过只使用「编码过程」来捕获与 PCA 相同的信息,因为这部分是关于数据压缩的。那幺,让我们来演示如何得到一个降维的自动编码器。

 

进入主题

 

首先,你应该导入一些库:

 

from keras.models import Model
from keras.layers import Input, Dense
from keras import regularizers
from sklearn.preprocessing import MinMaxScaler
import pandas as pd

 

下载完数据后,你就可以开始了。所以,让我们看看要使用什幺样的数据。记住,这里的想法是使用自动编码器来减少利率数据的维数。所以,数据集是:1995 年至 2018 年美国的零息曲线。

 

# Normalise
scaler = MinMaxScaler()
data_scaled = scaler.fit_transform(data)

 

现在,创建一个自动编码器模型来降低利率的维度只需几秒钟的时间。此时,你应该确定在「编码过程」中需要多少层。由于目标是得到三个成分,以建立与 PCA 的关系,因此需要分别创建 8(原始序列数量)、6、4 和 3(我们正在寻找的成分数量)个神经元。

 

# Fixed dimensions input_dim = data.shape[1]  # 8 encoding_dim = 3 # Number of neurons in each Layer [8, 6, 4, 3, ...] of encoders input_layer = Input(shape=(input_dim, )) encoder_layer_1 = Dense(6, activation="tanh", activity_regularizer=regularizers.l1(10e-5))(input_layer) encoder_layer_2 = Dense(4, activation="tanh")(encoder_layer_1) encoder_layer_3 = Dense(encoding_dim, activation="tanh")(encoder_layer_2)

 

在下一步中,你将创建模型并使用它来预测压缩数据。该数据应包含原始数据的所有相关信息,且忽略噪声。

 

# Crear encoder model encoder = Model(inputs=input_layer, outputs=encoder_layer_3) # Use the model to predict the factors which sum up the information of interest rates. encoded_data = pd.DataFrame(encoder.predict(data_scaled)) encoded_data.columns = ['factor_1', 'factor_2', 'factor_3']

 

现在,我留下一些问题:自动编码器捕获的信息比主成分分析多吗?这种创建自动编码器的方法是降低维度的最佳方法吗?

 

降维和自动编码还能干什幺?

 

这种技术可以用来降低任何机器学习问题的维数。只要使用它,你就可以处理高维问题,降低训练和测试集的维度。这样,你就可以减少问题的维数,更重要的是,你可以将数据集中的噪声去除。

 

via: https://quantdare.com/dimensionality-reduction-method-through-autoencoders/

 

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注