1. 程式人生 > >降維方法小結

降維方法小結

  資料的形式是多種多樣的,維度也是各不相同的,當實際問題中遇到很高的維度時,如何給他降到較低的維度上?前文提到進行屬性選擇,當然這是一種很好的方法,這裡另外提供一種從高維特徵空間向低緯特徵空間對映的思路。

資料降維的目的

  資料降維,直觀地好處是維度降低了,便於計算和視覺化,其更深層次的意義在於有效資訊的提取綜合及無用資訊的擯棄

資料降維的方法

  主要的方法是線性對映和非線性對映方法兩大類。

線性對映

  線性對映方法的代表方法有:PCA(Principal Component Analysis),LDA(Discriminant Analysis)

PCA方法簡介

  主成分分析的思想,就是線性代數裡面的K-L變換,就是在均方誤差準則下失真最小的一種變換。是將原空間變換到特徵向量空間內,數學表示為Ax=λx
  特徵向量和特徵值的意義:分別表示不同頻率及其幅度。
  特徵向量和特徵值的直白理解:想在特徵空間內找到某個向量x
  A[β1,β2,...,βk]=[λ1β1,λ2β2,...,λkβk]
  當然在實際用時,取最大的前幾個足矣。
  PCA計算是用的協方差矩陣U的分解特徵向量。
  1. 樣本矩陣去中心化(每個資料減去對應列的均值),得到Am,n維的資料。
  2. U即協方差)
  E(XX0)(YY0)=mi

=11m(xix0)(yiy0)
  期望的定義:E(x)=xip(xi)
  3. U=[β]Λ[β]1
  4.A大的特向對映)。
  U=cov(1,1)cov(2,1)............cov(n,1)cov(1,2)cov(2,2)cov(n,2).........cov(1,n)cov(2,n)cov(n,n)
  其中數字表示相應第幾個屬性。
  為什麼要用協方差矩陣來特向分解呢?
  協方差矩陣表徵了變數之間的相關程度(維度之間關係)。
  對資料相關性矩陣的特向分解,意味著找到最能表徵屬性相關性的特向(最能表徵即誤差平方最小)。PCA一開始就沒打算對資料進行特向分解,而是對資料屬性的相關性進行分析,從而表示出最能代表屬性相關性的特向,然後將原始資料向這些特向上投影。
所以,有的地方說PCA去相關。
  PCA的原理推導:由最小誤差平方準則引入,比(無)較(法)蛋(理)疼(解),暫時不做推導了(參考《模式分類》3.8節)。
  PCA優缺點:
  優點:1)最小誤差。2)提取了主要資訊
  缺點:1)計算協方差矩陣,計算量大
  上述PCA中的特向分解,必須為方陣,這個條件是很苛刻的。有沒有直接對任意矩陣的分解呢,答案是有的,他的名字叫SVD分解。
  SVD分解用來找到矩陣的主要部分。可以直接對資料矩陣進行分解
  BmnUmkkkVTnk
  其中UmkVnk是正交矩陣。
  BmnVnkUmkkkVTnkVnk
  BmnVnkUmkkkA^mk實現了降維。
  UTmkBmnUTmkUmkkkVTnkkkVTnkA^kn實現了壓縮資料。
  SVD怎麼跟這個PCA結合到一起的呢?
  SVD是對ATA,中間是奇異值對角陣。
  U的特向組成。
  因此,可以用SVD求解特向,然後取前幾個大的特值對應的特向進行降維。
  PCA想對協方差矩陣特徵向量求解,而AAT的特向,於是PCA的協方差求解特向就變成了樣本矩陣的SVD分解。
  兩個引理:
  引理1:對於任何一個矩陣Amn都有:
  rank(AAT)=rank(ATA)=rank(A)
  引理2:對於任何一個矩陣A是半正定的Hermite矩陣。
  定理1:ATA的特值,反之亦然。
  定理2:A的非零特徵值的模長。
  定理3:δ1δ2...δr,滿足:
  A=UDVT=U[Δ000]VT
  其中, Δ=diag(δ1,δ2,...,δr)
  定理3證明過程表明U的特徵向量。此處略去證明,請自行查閱線性代數。
  定理4:δ1δ2...δr滿足:
  A=UmrΔVTnr
  其中 Δ=diag(δ1,δ2,...,δr)
  特徵值和奇異值怎麼對應起來?
  ATAβi=λiβi
  σi=λi
  μi=1σiAβi
  這個地方跟上面稍微有所不同,這裡條件更寬鬆了。

LDA方法簡介

非線性對映

  非線性對映方法的代表方法有:核方法(核+線性),二維化和張量化(二維+線性),流形學習(ISOMap,LLE,LPP)

基於核的非線性降維

  代表方法有:KPCA,KFDA。
  KPCA的基本思想:通過Kernel trick將PCA投影的過程通過內積的形式表達出來。將高維向量ϕ(x)β的內積轉換成低維的核函式表示。

KPCA

  KPCA
  基於核的非線性降維方法的優缺點:
  優點:具有核方法的優點。
  缺點:核的不同選擇影響效果。
  (自己對KPCA這地方並不是完全搞懂了,需要再仔細看看)

二維化和張量化

  將資料對映到二維空間上,常見演算法比如二維主分量分析、二維線性判別分析、二維典型相關分析。
  二維化和張量化優缺點:
  優點:
  1)計算效率高。
  2)有些資料二維降維效果要明顯好於一維降維。
  缺點:
  1)原理機制研究不透徹。

流形學習

  流形學習的主要演算法有:ISOMap(等距對映)、LE(拉普拉斯特徵對映)、LLE(區域性線性嵌入)。
  流形:直線或者曲線是一維流形,平面或者曲面是二維流形,更高維之後是多維流形。一個流形好比是d)被扭曲之後的空間。流形並不是一個“形狀”,而是一個“空間
  流形學習的假設:資料取樣於某一流形上。

ISOMap

  ISOMap是一種非迭代的全域性優化演算法。ISOMap對MDS(Multidimensional Scaling-多維尺度分析)進行改造,用測地線距離(曲線距離)作為空間中兩點距離,原來是用歐氏距離,從而將位於某維流形上的資料對映到一個歐氏空間上。
  ISOMap將資料點連線起來構成一個鄰接Graph來離散地近似原來流形,而測地距離則相應地通過Graph上的最短路徑來近似了。
  比如:我們將球體曲面對映到二維平面上。
  此部落格寫得通俗易懂:http://blog.pluskid.org/?p=533
  幾點注意:
  1)ISOMap適用的流形:適合於內部平坦的低維流形,不適合於學習有較大內在曲率的流形。
  2)近鄰數的選擇:近鄰數應足夠大以便能夠減少在路徑長度和真實測地距離之間的不同,但要小到能夠預防“短路”現象。
  3)所構造圖的連通性:要求所構造的圖示連通的,否則有兩種處理辦法,一種是放寬臨界點選擇的限制,另一種是對於每一連通部分分別使用ISOMap演算法,得到不同部分的降維結果。
  資料到底是否分佈於一個流形上?這是個暫時難以回答的問題。
  MDS是一種降維方法,它在降維時使得降維之後的兩點間的歐氏距離儘量保持不變(用歐氏距離矩陣來表示高維向量的兩兩之間的相似度尋找同樣數量的對映維度的向量,使得對映維度下兩兩間距離約等於原高維下兩兩間距離,變為了優化問題)。維基百科對MDS的介紹https://en.wikipedia.org/wiki/Multidimensional_scaling

LLE

  前提假設:資料沒有形成一個封閉的超曲面,區域性資料點是線性的。
  LLE(Locally Linear Embedding-區域性線性嵌入)用區域性線性反映全域性的非線性的演算法,並能夠使降維的資料保持原有資料的拓撲結構。(在流形上使用區域性線性,並用有限區域性樣本的互相線性表示,得到幾何特性的構造權重矩陣,在低維下找到滿足高維時樣本間構造權重的樣本集)
  
  LLE步驟如下:
  1.計算或者尋找資料點xi的臨近資料點。
    假設資料區域性為平面,故可以用線性組合表示xi,其誤差為:
    e(w)=mi=1||xiKj=1wijxj||2
    其中wij時的貢獻比例。
    找到每個樣本點的K個最近鄰點。
  2.計算構造權重並重構資料
    通過約束計算wij個最近鄰點中的構造權重都為0.
    重構權重使得重構的資料點與臨近點間的旋轉、縮放、平移特性保持不變,即幾何特性不依賴於特定的參考框架。
  3.由重構樣本向低維對映。(求低維嵌入)
    設z是低維空間,找到同樣數量的低維對映樣本,使得:
    e=mi=1||ϕ(xi)Kj=1wijϕ(xij)||2
    e=mi=1||ziKj=1wijzij<