自編碼器數據降維實踐

2020-11-24 雷鋒網

數據降維是一件困難的事情,而難點通常集中在主成分分析上。此前,我介紹過一種基於自動編碼器的降維方法 。然而,在那一段時間裡,我專注於如何使用自動編碼作為預測器,而現在我想把它們看作是一種降維技術。

這篇文章的目的是解釋一下自動編碼器是如何工作的。它是從將原始數據壓縮成一個忽略噪聲的短代碼開始的。然後,該算法對該代碼進行解壓縮,以生成儘可能接近原始輸入的圖像。

自動編碼的過程

實際案例

我們來談談金融界的一個熱門話題:利率模型。我們已經嘗試了主成分分析技術,發現總結起來,利率信息主要有三個因素,這三個因素代表零息曲線的等級、斜率和曲率,它們保留了大約 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/

雷鋒網雷鋒網(公眾號:雷鋒網)雷鋒網

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 基於TensorFlow理解三大降維技術:PCA、t-SNE 和自編碼器
    自編碼器(Auto Encoders)PCA 和 t-SNE 是方法,而自編碼器則是一系列的方法。自編碼器是一種神經網絡,其目標是通過使用比輸入節點更少的隱藏節點(在編碼器一端)預測輸入(訓練該網絡使其輸出儘可能與輸入相似),為此該網絡需要儘可能多地將信息編碼到隱藏節點中。
  • 簡單易懂的自動編碼器
    作者:葉虎編輯:田旭自動編碼器是一種無監督的神經網絡模型,它可以學習到輸入數據的隱含特徵,這稱為編碼(coding),同時用學習到的新特徵可以重構出原始輸入數據,稱之為解碼(decoding)。從直觀上來看,自動編碼器可以用於特徵降維,類似主成分分析PCA,但是其相比PCA其性能更強,這是由於神經網絡模型可以提取更有效的新特徵。除了進行特徵降維,自動編碼器學習到的新特徵可以送入有監督學習模型中,所以自動編碼器可以起到特徵提取器的作用。
  • 深度學習自動編碼器還能用於數據生成?這篇文章告訴你答案
    什麼是自動編碼器自動編碼器(AutoEncoder)最開始作為一種數據的壓縮方法,其特點有:到了2012年,人們發現在卷積網絡中使用自動編碼器做逐層預訓練可以訓練更加深層的網絡,但是很快人們發現良好的初始化策略要比費勁的逐層預訓練有效地多,2014年出現的Batch Normalization技術也是的更深的網絡能夠被被有效訓練
  • StyleGAN的對手來了:西維吉尼亞大學推出自編碼器StyleALAE
    一張普通的臉在自編碼網絡中可以誕生各種可能,效果直逼StyleGAN合成器。一般而言,自編碼網絡會比對抗式生成網絡的應用範圍要小,然而ALAE自解碼器卻打破了大家的刻板印象,將栩栩如生的人臉合成效果呈現在大眾眼前。自解碼器是如何打破GAN對圖像生成風格的「壟斷性」控制,達成如此優異的人臉合成效果的呢?什麼是ALAE自編碼器?
  • 研究成果|基於偽逆學習自編碼器的射頻幹擾信號消除方法
    為了提高FAST脈衝星搜尋效率,我們提出了基於偽逆學習自編碼器(Pseudoinverse Learning AutoEncoders, PILAE) 的射頻幹擾信號消除方法。通常望遠鏡所接收的幹擾信號要強於天體信號,因此使用自編碼器來重構射電數據中的主要成分——RFI信號,自編碼器重構輸出的數據主要包含這些幹擾信號,將原始輸入數據減去重構數據就得到了脈衝星信號。
  • 數據分析領域中最為人稱道的七種降維方法
    近來由於數據記錄和屬性規模的急劇增長,大數據處理平臺和並行數據分析算法也隨之出現。於此同時,這也推動了數據降維處理的應用。實際上,數據量有時過猶不及。有時在數據分析應用中大量的數據反而會產生更壞的性能。最新的一個例子是採用 2009 KDD Challenge 大數據集來預測客戶流失量。
  • 用 PCA 方法進行數據降維
    在進行數據分析時,我們往往會遇到多維數據,多維數據在處理時由於維度較大計算起來非常麻煩,這時我們需要對數據進行降維。而在所有降維方法中,PCA是我們最常用的方法之一,其在使用時可以消除指標間的相互影響,同時也不用考慮數據的分布,而且降維效果非常明顯,所以PCA可以在絕大多數情況下使用。而本文就是用python來解釋一下如何用PCA方法進行降維。
  • 機器學習數據降維方法:PCA主成分分析
    PCA在機器學習中很常用,是一種無參數的數據降維方法。將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣PY=PX即為降維到k維後的數據1.PCA的推導PCA通過線性變換將原始數據變換為一組各維度線性無關的表示,可用於提取數據的主要特徵分量,常用於高維數據的降維。我們知道PCA是一種數據降維的方法,在降低維度的過程中,我們當然想要保留更多的特徵,PCA就是經過數學推導,保留最多特徵同時降維的方法。
  • Biss磁編碼器
    它定義了適用於致動器和傳感器(如旋轉編碼器或位置編碼器)的數字雙向串行接口。BiSS允許單向或雙向模式(被稱為BiSS-C連續模式)下的串行同步數據通信。BiSS接口與串行同步接口(SSI)硬體兼容。       BiSS磁編碼器的電氣接口是基於開放的BiSS Line和BiSS-C通訊標準的。
  • 降維算法讓腦神經大數據處理變簡單
    據物理學家組織網8月25日(北京時間)報導,美國卡內基·梅隆大學(CMU)和哥倫比亞大學(CU)的兩位科學家在最近一期的《自然—神經科學》雜誌上聯合發表了一篇評論文章,談到為何要研究大量神經元的共同活動,並提出一種名為降維算法的機器學習算法,可以有效處理大量記錄數據,幫助解釋大量神經元的活動。
  • 經典的開源編碼器X264/X265是否真的無法超越?
    其最大的優勢是具有很高的數據壓縮比率,在同等圖像質量的條件下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。X264開發者團隊也頗為神秘,自2003年開始,初創十幾位成員中,僅有ChenMin一位華人,Dark Shikari加入開發後,X264逐漸成為了最好的視頻編碼器。
  • 如何使用特徵提取技術降低數據集維度
    使用t-SNE降維子集測試隨機森林的準確度,從而證實分類可以很容易地分離。自動編碼器指一類可用作降維技術的機器學習算法。它與其他降維技術的主要區別在於:自動編碼器使用的是非線性轉換,將數據從高維投影到低維。
  • 陳陟原:數據降維與可視化| AI 研習社第 53 期猿桌會
    數據降維的基本原理是將樣本點從輸入空間通過線性或非線性變換映射到一個低維空間,從而獲得一個關於原數據集緊緻的低維表示。它一方面可以解決「維數災難」,緩解「信息豐富、知識貧乏」現狀,降低複雜度;另一方面可以更好地認識和理解數據。 截止到目前,數據降維的方法很多。
  • 光電編碼器
    光電編碼器簡介  光電編碼器(Optical Encoder)俗稱「單鍵飛梭」,其外觀好像一個電位器,因其外部有一個可以左右旋轉同時又可按下的旋鈕,很多設備(如顯示器、示波器等)用它作為人機互動接口。
  • 編碼器原理
    編碼器原理--簡介  編碼器是將信號或數據編制、轉換為可用以通訊、傳輸和存儲之形式的設備。編碼器是把角位移或直線位移轉換成電信號的一種裝置,是一種具有編碼功能的邏輯電路。編碼器有若干個輸入,在某一時刻只有一個輸入信號被轉換成為二進位碼。如果一個編碼器有N個輸入端和n個輸出端,則輸出端與輸入端之間應滿足關係N≤2n。
  • 電動汽車編碼器原理,編碼器知識介紹
    編碼器(encoder)是將信號(如比特流)或數據進行編制、轉換為可用以通訊、傳輸和存儲的信號形式的設備。編碼器把角位移或直線位移轉換成電信號,前者稱為碼盤,後者稱為碼尺。按照讀出方式編碼器可以分為接觸式和非接觸式兩種;按照工作原理編碼器可分為增量式和絕對式兩類。。
  • 編碼器應用問答
    3 使用PLC採集數據,可選用高速計數模塊;在工控自動化的如今,使用工控機採集數據,可選用高速計數板卡;使用單片機採集數據,建議選用帶光電耦合器的輸入埠。  4 建議B脈衝做順向(前向)脈衝,A脈衝做逆向(後向)脈衝,Z原點零位脈衝。  5 在電子裝置中設立計數棧。
  • 哈工大碩士生用 Python 實現了 11 種經典數據降維算法,原始碼庫已...
    這裡有個 GitHub 項目整理了使用 Python 實現了 11 種經典的數據抽取(數據降維)算法,包括:PCA、LDA、MDS、LLE、TSNE 等,並附有相關資料、展示效果;非常適合機器學習初學者和剛剛入坑數據挖掘的小夥伴。
  • 自監督、半監督和有監督全涵蓋,四篇論文遍歷對比學習的研究進展
    自監督學習意思是使用非人工標記數據進行學習。在機器學習中,比較著名的自監督方法就是自然語言處理中的 。由此可見,與無監督學習不同,自監督中仍然存在標記,只不過,這些標記不是人類參與生成的,而是從輸入數據中生成的,通常可以使用啟發式算法生成標記。
  • 編碼器的作用
    編碼器的作用--簡介  編碼器(encoder)是一種將模擬視頻信號(如比特流)或數據編制、轉換為可用以通訊、傳輸和存儲的數位訊號的硬體/軟體設備。編碼器的應用十分廣泛,主要用來檢測機械運動的速度、位置、角度、距離或計數,除了應用在機械外,許多的馬達控制如伺服馬達均需配備編碼器以供馬達控制器作為換相、速度及位置的檢出。