1. 程式人生 > >簡述多種降維演算法

簡述多種降維演算法

本文首先給出了七種演算法的一個資訊表,歸納了關於每個演算法可以調節的(超)引數、演算法主要目的等等,然後介紹了降維的一些基本概念,包括降維是什麼、為什麼要降維、降維可以解決維數災難等,然後分析可以從什麼樣的角度來降維,接著整理了這些演算法的具體流程。主要目錄如下:

  • 1. 降維基本概念

  • 2. 從什麼角度出發降維

  • 3. 降維演算法

    • 3.1 主成分分析PCA

    • 3.2 多維縮放(MDS)

    • 3.3 線性判別分析(LDA)

    • 3.4 等度量對映(Isomap)

    • 3.5 區域性線性嵌入(LLE)

    • 3.6 t-SNE

    • 3.7 Deep Autoencoder Networks

  • 4. 小結

這裡autoencoder是否去中心化個人覺得還是有點疑問,在處理影象資料的時候,會對輸入圖片做一個變到0均值的預處理,但是這個操作是針對一張樣本內減均值[1],這裡的去中心化指的是針對某一維資料減均值,並不是一個概念。下面開始具體談談降維相關的內容。

1.降維基本概念

 而為什麼可以降維,這是因為資料有冗餘,要麼是一些沒有用的資訊,要麼是一些重複表達的資訊,例如一張512*512的圖只有中心100*100的區域內有非0值,剩下的區域就是沒有用的資訊,又或者一張圖是成中心對稱的,那麼對稱的部分資訊就重複了。正確降維後的資料一般保留了原始資料的大部分的重要資訊,它完全可以替代輸入去做一些其他的工作,從而很大程度上可以減少計算量。例如降到二維或者三維來視覺化。

2. 從什麼角度出發來降維

一般來說可以從兩個角度來考慮做資料降維,一種是直接提取特徵子集做特徵抽取,例如從512*512圖中只取中心部分,一種是通過線性/非線性的方式將原來高維空間變換到一個新的空間,這裡主要討論後面一種。後面一種的角度一般有兩種思路來實現[2],一種是基於從高維空間對映到低維空間的projection方法,其中代表演算法就是PCA,而其他的LDA、Autoencoder也算是這種,主要目的就是學習或者算出一個矩陣變換W,用這個矩陣與高維資料相乘得到低維資料。另一種是基於流形學習的方法,流形學習的目的是找到高維空間樣本的低維描述,它假設在高維空間中資料會呈現一種有規律的低維流形排列,但是這種規律排列不能直接通過高維空間的歐式距離來衡量

,如下左圖所示,某兩點實際上的距離應該是下右圖展開後的距離。如果能夠有方法將高維空間中流形描述出來,那麼在降維的過程中就能夠保留這種空間關係,為了解決這個問題,流形學習假設高維空間的區域性區域仍然具有歐式空間的性質,即它們的距離可以通過歐式距離算出(Isomap),或者某點座標能夠由臨近的節點線性組合算出(LLE),從而可以獲得高維空間的一種關係,而這種關係能夠在低維空間中保留下來,從而基於這種關係表示來進行降維,因此流形學習可以用來壓縮資料、視覺化、獲取有效的距離矩陣等。

 3. 幾種降維方法流程

3.1 主成分分析PCA

又由於線性代數中對角化是通過求解特徵值與對應的特徵向量得到,因此可以推出PCA演算法流程(流程主要摘自周志華老師的《機器學習》一書,其中加入了目標和假設用於對比後面的演算法。周老師書中是基於拉格朗日乘子法推匯出來,本質上而言與[3]都是一樣的,這裡很推薦這篇講PCA數學原理的部落格[3])。

 此外,PCA還有很多變種kernel PCA, probabilistic PCA等等,本文暫時只考慮最簡單的PCA版本。

3.2 多維縮放(MDS)

MDS的目標是在降維的過程中將資料的dissimilarity(差異性)保持下來,也可以理解降維讓高維空間中的距離關係與低維空間中距離關係保持不變。這裡的距離用矩陣表示,N個樣本的兩

3.3 線性判別分析(LDA)

LDA最開始是作為解決二分類問題由Fisher在1936年提出,由於計算過程實際上對資料做了降維處理,因此也可用作監督線性降維。它通過將高維空間資料投影到低維空間,在低維空間中確定每個樣本所屬的類,這裡考慮K個類的情況。它的目標是將樣本能儘可能正確的分成K類,體現為同類樣本投影點儘可能近,不同類樣本點儘可能遠,這點跟PCA就不一樣,PCA是希望所有樣本在某一個維數上儘可能分開,LDA的低維投影可能會重疊,但是PCA就不希望投影點重疊。它採用的降維思路跟PCA是一樣的,都是通過矩陣乘法來進行線性降維,投影點是

 

3.4 等度量對映(Isomap)

上面提到的MDS只是對資料降維,它需要已知高維空間中的距離關係,它並不能反應出高維資料本身潛在的流形,但是可以結合流形學習的基本思想和MDS來進行降維[5]。也就是高維空間的區域性空間的距離可以用歐式距離算出,針對MDS的距離矩陣A,某兩個相鄰的點之間距離

3.5 區域性線性嵌入(LLE)

 

3.6 t-SNE

t-SNE也是一種將高維資料降維到二維或者三維空間的方法,它是2008年由Maaten提出[6],基於2002年Hinton提出的隨機近鄰嵌入(StochasticNeighbor Embedding, SNE)方法的改進。

 

 

需要注意的是,這個演算法將低維資料作為變數進行迭代,所以如果需要加入插入新的資料,是沒有辦法直接對新資料進行操作,而是要把新資料加到原始資料中再重新算一遍,因此T-sne主要的功能還是視覺化。

3.7 DeepAutoencoder Networks

Autoencoder是神經網路的一種,它是一種無監督演算法,可以用來降維也能用來從資料中自動學習某種特徵,這個神經網路的原理是輸入一組值,經過網路之後能夠獲得一組輸出,這組輸出的值儘可能的跟輸入的值大小一致。網路由全連線層組成,每層每個節點都跟上一層的所有節點連線。Autoencoder的結構如下圖4所示,encoder網路是正常的神經網路前向傳播

 

然而在實際的實現網路過程中,整個網路實際上層數只是圖4中的一半,即4層網路,2000-1000-500-30的全連線結構。因為權重引數實際上在encoder和decoder中是相同的,enocoder過程是上一層的節點值乘以權重得到這一層的節點值,而decoder是這一層節點值與權重矩陣的轉置相乘得到上一層的節點值。下圖[7]更加清晰的展示了每一層實際的結構,包括一次前向傳播和後向傳播,因此可以拿最頂層的值作為網路的降維輸出來進行其他的分析,例如視覺化,或者作為壓縮特徵使用。

06年的時候Hinton在science上發了一篇文章講如何用深度學習中的autoencoder網路來做降維[8],主要是提出了先通過多層RBM來預訓練權重引數,用來解決autoencoder降維後的質量依賴初始化網路權重的問題,即主要目的是提出一種有效的初始化權重的方式。上面的表示式中沒有加入非線性變換,真實網路中每一層跟權重做矩陣乘法之後還需要加上非線性變換。

 

4.小結

本文主要重點放在演算法流程是什麼,每一步具體做了什麼,有的地方可能理論闡述還不夠清晰。但是有意思的是除了t-sne和autoencoder之外,其他的幾種降維演算法都是基於構造某個矩陣,然後對矩陣進行特徵值分解,得到相關的ZZ或者WW。Laplacian Eigenmaps拉普拉斯特徵對映沒有完整研究,但是看演算法最後也是選擇前d個最小非零特徵值,這個很有意思,就是數學功底不好,暫時想不通為什麼基於特徵值的效果這麼好。而比較一層的autoencoder和PCA,假設autoencoder的目標函式是最小化均方誤差,雖然autoencoder沒有PCA那麼強的約束(要求每一維正交),但是autoencoder也許可以學到,因為本身基於最大化協方差的跡與最小均方差估計是等價的。幾種方法總是讓人感覺有著某些潛在的關聯,不知道是不是能夠提取出一種統一的模型能夠把降維這件事情給解決掉。

參考

引用:

1.Data Preprocessing

2.Dimension Reduction: A Guided Tour

3.PCA的數學原理

4.A Tutorial on Data Reduction Linear Discriminant Analysis (LDA)

5.manifold learning with applications to object recognition

5.Visualizing Data using t-SNE

7.A Tutorial on Deep Learning Part 2: Autoencoders, Convolutional Neural Networks and Recurrent Neural Networks

8.Reducing the Dimensionality of Data with Neural Networks

8.CS294A Lecture notes Sparse autoencoder

相關推薦

MARK:簡述多種演算法

最近看了一些關於降維演算法的東西,本文首先給出了七種演算法的一個資訊表,歸納了關於每個演算法可以調節的(超)引數、演算法主要目的等等,然後介紹了降維的一些基本概念,包括降維是什麼、為什麼要降維、降維可以解決維數災難等,然後分析可以從什麼樣的角度來降維,接著整理了這些演算法的具體流程。主要目錄如下:

【機器學習】簡述多種演算法

【轉載請註明出處】chenrudan.github.io 最近看了一些關於降維演算法的東西,本文首先給出了七種演算法的一個資訊表,歸納了關於每個演算法可以調節的(超)引數、演算法主要目的等等,然後介紹了降維的一些基本概念,包括降維是什麼、為什麼要降維、降維可以

簡述多種演算法

本文首先給出了七種演算法的一個資訊表,歸納了關於每個演算法可以調節的(超)引數、演算法主要目的等等,然後介紹了降維的一些基本概念,包括降維是什麼、為什麼要降維、降維可以解決維數災難等,然後分析可以從什麼樣的角度來降維,接著整理了這些演算法的具體流程。主要目錄如下:

機器學習筆記(八):PCA演算法

1 - PCA概述 主成份分析,簡稱為PCA,是一種非監督學習演算法,經常被用來進行 資料降維 有損資料壓縮 特徵抽取 資料視覺化 2 - PCA原理詳解 通過計算資料矩陣的協方差矩陣,然後得到協方差矩陣的特徵值特徵向量,選擇特

淺談PCA(主成分分析)線性演算法用法

sklearn.decomposition.PCA(n_components = None, copy = True, whiten = False) n_components表示需要保留的主成分個數,即需要降低到幾維;若n_components=1,則表

ML-64: 機器學習之線性判別分析(Linear Discriminant Analysis)演算法+程式碼

線性判別分析(Linear Discriminant Analysis)降維演算法 機器學習分為監督學習、無監督學習和半監督學習(強化學習)。無監督學習最常應用的場景是聚類(clustering)和降維(dimension reduction)。聚類演算法包括

一步步教你輕鬆學主成分分析PCA演算法

(白寧超 2018年10月22日10:14:18) 摘要:主成分分析(英語:Principal components analysis,PCA)是一種分析、簡化資料集的技術。主成分分析經常用於減少資料集的維數,同時保持資料集中的對方差貢獻最大的特徵。常常應用在文字處理、人臉識別、圖片識別、自然語言處

一步步教你輕鬆學奇異值分解SVD演算法

摘要:奇異值分解(singular value decomposition)是線性代數中一種重要的矩陣分解,在生物資訊學、訊號處理、金融學、統計學等領域有重要應用,SVD都是提取資訊的強度工具。在機器學習領域,很多應用與奇異值都有關係,比如推薦系統、資料壓縮(以影象壓縮為代表)、搜尋引擎語義層次檢索的

演算法(PCA)

降維方法 1、主成分分析(PCA) 在PCA中,資料從原來的座標系轉換到新的座標系,新座標系的選擇是由資料本身決定的。第一個新座標軸選擇的是原始資料中方差最大的方向,第二個新座標軸選擇和第一個座標軸正交且具有最大方差的方向。該過程一直重複,重複次數為原始資料

四大機器學習演算法:PCA、LDA、LLE、Laplacian Eigenmaps

引言 機器學習領域中所謂的降維就是指採用某種對映方法,將原高維空間中的資料點對映到低維度的空間中。降維的本質是學習一個對映函式 f : x->y,其中x是原始資料點的表達,目前最多使用向量表達形式。 y是資料點對映後的低維向量表達,通常y的維度小於x的維度(當然提

維度打擊,機器學習中的演算法:ISOMAP & MDS

降維是機器學習中很有意思的一部分,很多時候它是無監督的,能夠更好地刻畫資料,對模型效果提升也有幫助,同時在資料視覺化中也有著舉足輕重的作用。 一說到降維,大家第一反應總是PCA,基本上每一本講機器學習的書都會提到PCA,而除此之外其實還有很多很有意思的降維演算

matlab 程式碼 一些常用的 演算法

http://sugiyama-www.cs.titech.ac.jp/~sugi/software/ Software The software available below is free of charge for research and educatio

PCA演算法總結以及matlab實現PCA(個人的一點理解)

轉載請宣告出處。by watkins song 兩篇文章各有側重, 對照看效果更加 o(∩∩)o.. PCA的一些基本資料 最近因為最人臉表情識別,提取的gabor特徵太多了,所以需要用PCA進行對提取的特徵進行降維。 本來最早的時候我沒有打算對提取的gabor特徵

演算法(LASSO、PCA、聚類分析、小波分析、線性判別分析、拉普拉斯特徵對映、區域性線性嵌入)

1、LASSO LASSO全稱least absolute shrinkage and selection operator,本身是一種迴歸方法。與常規迴歸方法不同的是,LASSO可以對通過引數縮減對引數進行選擇,從而達到降維的目的。說到LASSO,就不得不說

詮釋資料演算法:一文講盡t-分佈鄰域嵌入演算法(t-SNE)如何有效利用

摘要: t-分佈領域嵌入演算法(t-SNE, t-distributed Stochastic Neighbor Embedding )是目前一個非常流行的對高維度資料進行降維的演算法, 由Laurens van der Maaten和 Geoffrey Hinton於20

PCA 演算法詳解 以及程式碼示例

%% Initialization clear ; close all; clc fprintf('this code will load 12 images and do PCA for each face.\n'); fprintf('10 images are used to train PCA an

演算法--PCA 與 t-SNE

PCA是大家所熟知的降維演算法,但是線性降維雖然簡單,其侷限性也很明顯,難以實現高維資料在低維空間的視覺化。t-SNE是非線性的降維演算法,能實現高維到低維的視覺化對映,但因為涉及大量的條件概率、梯度下降等計算,時間和空間複雜度是平方級的,比較耗資源。t-SNE幾乎可用於所有

PCA(主成分分析) 演算法詳解 和程式碼

1. 前言  PCA : principal component analysis ( 主成分分析) 最近發現我的一篇關於PCA演算法總結以及個人理解的部落格的訪問量比較高, 剛好目前又重新學習了一下PCA (主成分分析) 降維演算法, 所以打算把目前掌握的做個全面的

機器學習:演算法-主成分分析PCA演算法兩種角度的推導

若把高維空間的樣本點(可以想象是一個3維的)對映到一個超平面,怎樣的超平面可以認為是“好的”,可以想到這個超平面大概有這樣的性質: 最近重構行:樣本點到超平面的距離都足夠近;(樣本點變化儘可能小,丟失的資訊儘可能少) 最大可分性:樣本點在這個超平面上的投影儘可能分開.(樣

機器學習-演算法(MDS演算法)

一,介紹 在現實資料中,很多資料都是高緯度的,在高緯度情況下進行資料處理將會有極大的資料處理量。為了,減少計算量,常常需要緩解這種資料維度災難,這有兩種途徑:降維和特徵選擇。 我們在這裡介紹其中一種降維演算法:MDS演算法。MDS演算法要求原始空間中樣本之間的距離在低維空