1. 程式人生 > 其它 >降維方法介紹整理:SVD,PCA,LDA等

降維方法介紹整理:SVD,PCA,LDA等

SVD降維

SVD(Singular Value Decomposition,奇異值分解)是對矩陣進行分解,假如待分解的矩陣A是一個m*n矩陣,那麼對矩陣A的SVD分解即:A=U∑VT

其中U是一個m*m的矩陣;Σ是一個m*n的矩陣,Σ除了主對角線上的元素以外其他元素全為0,主對角線上元素稱為奇異值;V是一個n*n矩陣。

將A視為一個線性變換,可以將A分解為旋轉+拉伸+旋轉的線性變換【左乘一個正交矩陣是旋轉,左乘一個對角陣是拉伸變換】

→ 

 

如何求解SVD

 

 SVD和PCA主成分的關係

SVD在計算過程中原矩陣的維度其實是不變的 ,但是在取n%的奇異值時,重新計算回去的原矩陣中元素值顯著降低,秩也降低,整體來看資料得到了壓縮和衰減;或許可以理解為一種降維吧。

PCA降維:

  • 兩個矩陣相乘的意義是將右邊矩陣中的每一列向量ai變換到左邊矩陣中以每一行行向量為所表示的空間中去。
  • 如何選擇基才是最優的。一種直觀的看法是:希望投影后的投影值儘可能分散,因為如果重疊就會有樣本消失。當然這個也可以從熵的角度進行理解,熵越大所含資訊越多。
  • 數值的分散程度,可以用數學上的方差來表述。於是上面的問題被形式化表述為:尋找一個一維基,使得所有資料變換為這個基上的座標表示後,方差值最大
  • 在一維空間中我們可以用方差來表示資料的分散程度。對於高維資料,我們用協方差進行約束,協方差可以表示兩個變數的相關性。為了讓兩個變數儘可能表示更多的原始資訊,我們希望它們之間不存線上性相關性,因為相關性意味著兩個變數不是完全獨立,必然存在重複表示的資訊。
  • 降維問題的優化目標:將一組 N 維向量降為 K 維,其目標是選擇 K 個單位正交基,使得原始資料變換到這組基上後,各變數兩兩間協方差為 0,而變數方差則儘可能大(在正交的約束下,取最大的 K 個方差)。
  • 優化目標變成了尋找一個矩陣 P,滿足PCPT是一個對角矩陣,並且對角元素按從大到小依次排列,那麼 P 的前 K 行就是要尋找的基,用 P 的前 K 行組成的矩陣乘以 X 就使得 X 從 N 維降到了 K 維並滿足上述優化條件。

設有 m 條 n 維資料。

  1. 將原始資料按列組成 n 行 m 列矩陣 X;
  2. 將 X 的每一行進行零均值化,即減去這一行的均值;
  3. 求出協方差矩陣  ;
  4. 求出協方差矩陣的特徵值及對應的特徵向量;
  5. 將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前 k 行組成矩陣 P;
  6.  即為降維到 k 維後的資料。

LDA降維(有監督)

思想:將資料投影到低維空間之後,使得同一類資料儘可能的緊湊,不同類的資料儘可能的分散。因此,LDA演算法是一種有監督的機器學習演算法。 LDA有如下兩個假設:(1)原始資料根據樣本均值進行分類。(2)不同類的資料擁有相同的協方差矩陣。當然,在實際情況中,不可能滿足以上兩個假設。但是當資料主要是由均值來區分的時候,LDA一般都可以取得很好的效果。LDA降維最多降到類別數k-1的維數。 假設投影直線是向量ω,則對任意一個樣本xi,它在直線ω的投影為ωTxi,對於我們的兩個類別的中心點μ0,μ1,在在直線ω的投影為ωTμ0,ωTμ1。由於LDA需要讓不同類別的資料的類別中心之間的距離儘可能的大,也就是我們要最大化  ,同時我們希望同一種類別數據的投影點儘可能的接近,也就是要同類樣本投影點的協方差  和  儘可能的小,即最小化  。綜上所述,優化目標為:

類內散度矩陣  為:

類間散度矩陣  為:

優化目標重新定義:

LDA演算法流程

  1. 計算類內散度矩陣Sω

  2. 計算類間散度矩陣Sb
  3. 計算矩陣
  4. 計算  的最大的d個特徵值和對應的d個特徵向量  得到投影矩陣W
  5. 對樣本集中的每一個樣本特徵  ,轉為新的樣本 
  6. 得到輸出樣本集 

ICA降維

動機源自於cocktail party problem(雞尾酒會問題),ICA與被稱為盲源分離(Blind Source Separation,BSS)或盲訊號分離的方法具有非常密切的關係。“源”在此處的意思是指原始訊號,即獨立成分,如雞尾酒會中的說話者;而“盲”表示我們對於混合矩陣所知甚少,僅僅對源訊號做非常弱的假定。

ICA假設的三個條件

  • 獨立成分被假設是統計獨立。對於這一條可以從概率密度以及其他演算法可以判斷。我們說隨機變數y1,y2..yn獨立,是指在i≠j時,有關yi的取值情況對於yj如何取值沒有提供任何資訊。
  • 獨立成分具有非高斯分佈。如果觀測到的變數具有高斯分佈,那麼ICA在本質上是不可能實現的。假定S經過混合矩陣A後,他們的聯合概率密度仍然不變化,因此我們沒有辦法在混合中的得到混合矩陣的資訊。
  • 假設混合矩陣是方陣。這個條件是為了後續ICA演算法求解的便利。當混合矩陣A是方陣時就意味著獨立源的個數和監測訊號的個數數目是一致。

ICA演算法步驟

觀測訊號構成一個混合矩陣,通過數學演算法進行對混合矩陣A的逆進行近似求解分為三個步驟:

1) 去均值。去均值也就是中心化,實質是使訊號X均值是零。
2) 白化。白化就是去相關性。
3) 構建正交系統。在常用的ICA演算法基礎上已經有了一些改進,形成了fastICA演算法。fastICA實際上是一種尋找wTz(即Y=wTz)wTz(即Y=wTz)的非高斯最大的不動點迭代方案。

以上有較多的數學推導,這裡就省略了,下面給出fastICA的演算法流程:

  1. 觀測資料的中心化
  2. 資料白化
  3. 選擇需要估計的分量個數m,設定迭代次數和範圍
  4. 隨機選擇初始權重
  5. 選擇非線性函式
  6. 迭代
  7. 判斷收斂,是下一步,否則返回步驟6
  8. 返回近似混合矩陣的逆矩陣

TSNE降維

t-SNE(TSNE)將資料點之間的相似度轉換為概率。原始空間中的相似度由高斯聯合概率表示,嵌入空間的相似度由“t分佈”表示。

SNE是通過仿射(affinitie)變換將資料點對映到概率分佈上,主要包括兩個步驟:

  • SNE構建一個高維物件之間的概率分佈,使得相似的物件有更高的概率被選擇,而不相似的物件有較低的概率被選擇。
  • SNE在低維空間裡在構建這些點的概率分佈,使得這兩個概率分佈之間儘可能的相似。

t-SNE模型是非監督的降維,他跟kmeans等不同,他不能通過訓練得到一些東西之後再用於其它資料(比如kmeans可以通過訓練得到k個點,再用於其它資料集,而t-SNE只能單獨的對資料做操作,也就是說他只有fit_transform,而沒有fit操作)

儘管SNE提供了很好的視覺化方法,但是他很難優化,而且存在”crowding problem”(擁擠問題)。後續中,Hinton等人又提出了t-SNE的方法。與SNE不同,主要如下:

    • 使用對稱版的SNE,簡化梯度公式
    • 低維空間下,使用t分佈替代高斯分佈表達兩點之間的相似度