0

數(shù)據(jù)降維是一件困難的事情,而難點(diǎn)通常集中在主成分分析上。此前,我介紹過(guò)一種基于自動(dòng)編碼器的降維方法 。然而,在那一段時(shí)間里,我專(zhuān)注于如何使用自動(dòng)編碼作為預(yù)測(cè)器,而現(xiàn)在我想把它們看作是一種降維技術(shù)。
這篇文章的目的是解釋一下自動(dòng)編碼器是如何工作的。它是從將原始數(shù)據(jù)壓縮成一個(gè)忽略噪聲的短代碼開(kāi)始的。然后,該算法對(duì)該代碼進(jìn)行解壓縮,以生成盡可能接近原始輸入的圖像。

自動(dòng)編碼的過(guò)程
實(shí)際案例
我們來(lái)談?wù)劷鹑诮绲囊粋€(gè)熱門(mén)話(huà)題:利率模型。我們已經(jīng)嘗試了主成分分析技術(shù),發(fā)現(xiàn)總結(jié)起來(lái),利率信息主要有三個(gè)因素,這三個(gè)因素代表零息曲線(xiàn)的等級(jí)、斜率和曲率,它們保留了大約 95% 的信息。
我想知道自動(dòng)編碼器是否能夠通過(guò)只使用「編碼過(guò)程」來(lái)捕獲與 PCA 相同的信息,因?yàn)檫@部分是關(guān)于數(shù)據(jù)壓縮的。那么,讓我們來(lái)演示如何得到一個(gè)降維的自動(dòng)編碼器。
進(jìn)入主題
首先,你應(yīng)該導(dǎo)入一些庫(kù):
from keras.models import Model
from keras.layers import Input, Dense
from keras import regularizers
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
下載完數(shù)據(jù)后,你就可以開(kāi)始了。所以,讓我們看看要使用什么樣的數(shù)據(jù)。記住,這里的想法是使用自動(dòng)編碼器來(lái)減少利率數(shù)據(jù)的維數(shù)。所以,數(shù)據(jù)集是:1995 年至 2018 年美國(guó)的零息曲線(xiàn)。
# Normalise
scaler = MinMaxScaler()
data_scaled = scaler.fit_transform(data)
現(xiàn)在,創(chuàng)建一個(gè)自動(dòng)編碼器模型來(lái)降低利率的維度只需幾秒鐘的時(shí)間。此時(shí),你應(yīng)該確定在「編碼過(guò)程」中需要多少層。由于目標(biāo)是得到三個(gè)成分,以建立與 PCA 的關(guān)系,因此需要分別創(chuàng)建 8(原始序列數(shù)量)、6、4 和 3(我們正在尋找的成分?jǐn)?shù)量)個(gè)神經(jīng)元。
# 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)
在下一步中,你將創(chuàng)建模型并使用它來(lái)預(yù)測(cè)壓縮數(shù)據(jù)。該數(shù)據(jù)應(yīng)包含原始數(shù)據(jù)的所有相關(guān)信息,且忽略噪聲。
# 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']
現(xiàn)在,我留下一些問(wèn)題:自動(dòng)編碼器捕獲的信息比主成分分析多嗎?這種創(chuàng)建自動(dòng)編碼器的方法是降低維度的最佳方法嗎?
降維和自動(dòng)編碼還能干什么?
這種技術(shù)可以用來(lái)降低任何機(jī)器學(xué)習(xí)問(wèn)題的維數(shù)。只要使用它,你就可以處理高維問(wèn)題,降低訓(xùn)練和測(cè)試集的維度。這樣,你就可以減少問(wèn)題的維數(shù),更重要的是,你可以將數(shù)據(jù)集中的噪聲去除。
via:https://quantdare.com/dimensionality-reduction-method-through-autoencoders/
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。