22

自编码器数据降维实践

 4 years ago
source link: https://www.leiphone.com/news/201912/vJ7FrwIWKefjw9SP.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

mY3aiaY.jpg!web

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

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

NZjEraB.png!web

自动编码的过程

实际案例

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

雷锋网雷锋网雷锋网 (公众号:雷锋网)

雷锋网版权文章,未经授权禁止转载。详情见 转载须知

b6Zvmyn.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK