SVD分解與文本挖掘(潛在語義索引LSI)

 

各位高手好!請求PCA與SVD的關係?求解!!!

PCA是獲得協方差矩陣的前K個特徵向量Uk,而後乘以原數據獲得MxK的新數據集以達到降維。我認爲:SVD分解以後取前k個奇異值,那麼有Vk,原始數據乘以Vk:Data(MxN) X Vk(NxK) = Data(MxK) .這裏Vk就是PCA中所求的特徵向量。爲何有寫書直接拿來Uk或者Vk來計算兩條數據的類似度,而不是Data(MxN) X Vk(NxK) = Data(MxK)以後取兩行計算類似度呢?已經困惑好幾天,求解惑!!!php

 

SVD分解算法及其應用

時間 2013-07-16 11:39:27  十一城html

原文  http://elevencitys.com/?p=3923算法

主題 奇異值分解 算法app

矩陣的奇異值分解在矩陣理論的重要性不言而喻,它在最優化問題、特徵值問題、最小乘方問題、廣義逆矩陣問,統計學,圖像壓縮等方面都有十分重要的應用。機器學習

定義: 設A爲m*n階矩陣, A H A 的n個特徵值的非負平方根叫做A的奇異值。記爲 σ i (A)。> 若是把A H A的特徵值記爲λ i (A),則σ i (A)= λ i (A H A)^(1/2)。 

定理 (奇異值分解)設A爲m*n階復矩陣,則存在m階酉陣U和n階酉陣V,使得:ide

A = U*S*V’post

其中S=diag(σ i ,σ 2 ,……,σ r ),σ i >0  (i=1,…,r),r=rank(A) 。 

推論: 設A爲m*n階實矩陣,則存在m階正交陣U和n階正交陣V,使得學習

A = U*S*V’優化

其中S=diag(σ i ,σ 2 ,……,σ r ),σ i >0  (i=1,…,r),r=rank(A) 。ui

奇異值分解提供了一些關於A的信息,例如非零奇異值的數目(S的階數)和A的秩相同,一旦秩r肯定,那麼U的前r 列構成了A的列向量空間的正交基,另外V的從右向左n-r列爲A的kernel的基。

非退化的奇異值具備惟一的左、右奇異向量,若是 A 的全部奇異值都是非退化且非零,則它的奇異值分解是惟一的,由於 U 中的一列要乘以一個單位相位因子且同時 V 中相應的列也要乘以同一個相位因子。

根據定義,退化的奇異值具備不惟一的奇異向量。由於,若是 u 1 和 u 2 爲奇異值σ的兩個左奇異向量,則兩個向量的任意規範線性組合也是奇異值σ一個左奇異向量,相似的,右奇異向量也具備相同的性質。所以,若是 MA 具備退化的奇異值,則它的奇異值分解是不惟一的。

在壓縮圖像應用中,抽象的例子能夠入下圖所示:

上圖中三個矩陣相乘的結果將會是一個接近於A的矩陣,在這兒,r越接近於n,則相乘的結果越接近於A。而這三個矩陣的面積之和(在存儲觀點來講,矩陣面積越小,存儲量就越小)要遠遠小於原始的矩陣A,咱們若是想要壓縮空間來表示原矩陣A,咱們存下這裏的三個矩陣:U、Σ、V就行了。

主要應用領域

1、奇異值與主成分分析(PCA)

PCA的問題實際上是一個基的變換,使得變換後的數據有着最大的方差。方差的大小描述的是一個變量的信息量,咱們在講一個東西的穩定性的時候,每每說要減少方差,若是一個模型的方差很大,那就說明模型不穩定了。可是對於咱們用於機器學習的數據(主要是訓練數據),方差大才有意義,否則輸入的數據都是同一個點,那方差就爲0了,這樣輸入的多個數據就等同於一個數據了。如下面這張圖爲例子:

image    

這個假設是一個攝像機採集一個物體運動獲得的圖片,上面的點表示物體運動的位置,假如咱們想要用一條直線去擬合這些點,那咱們會選擇什麼方向的線呢?固然是圖上標有signal的那條線。若是咱們把這些點單純的投影到x軸或者y軸上,最後在x軸與y軸上獲得的方差是類似的(由於這些點的趨勢是在45度左右的方向,因此投影到x軸或者y軸上都是相似的),若是咱們使用原來的xy座標系去看這些點,容易看不出來這些點真正的方向是什麼。可是若是咱們進行座標系的變化,橫軸變成了signal的方向,縱軸變成了noise的方向,則就很容易發現什麼方向的方差大,什麼方向的方差小了。

通常來講,方差大的方向是信號的方向,方差小的方向是噪聲的方向,咱們在數據挖掘中或者數字信號處理中,每每要提升信號與噪聲的比例,也就是信噪比。對上圖來講,若是咱們只保留signal方向的數據,也能夠對原數據進行不錯的近似了。

PCA的所有工做簡單點說,就是對原始的空間中順序地找一組相互正交的座標軸,第一個軸是使得方差最大的,第二個軸是在與第一個軸正交的平面中使得方差最大的,第三個軸是在與第一、2個軸正交的平面中方差最大的,這樣假設在N維空間中,咱們能夠找到N個這樣的座標軸,咱們取前r個去近似這個空間,這樣就從一個N維的空間壓縮到r維的空間了,可是咱們選擇的r個座標軸可以使得空間的壓縮使得數據的損失最小。

仍是假設咱們矩陣每一行表示一個樣本,每一列表示一個feature,用矩陣的語言來表示,將一個m * n的矩陣A的進行座標軸的變化,P就是一個變換的矩陣從一個N維的空間變換到另外一個N維的空間,在空間中就會進行一些相似於旋轉、拉伸的變化。

image

而將一個m * n的矩陣A變換成一個m * r的矩陣,這樣就會使得原本有n個feature的,變成了有r個feature了(r < n),這r個其實就是對n個feature的一種提煉,咱們就把這個稱爲feature的壓縮。用數學語言表示就是:

image   

可是這個怎麼和SVD扯上關係呢?以前談到,SVD得出的奇異向量也是從奇異值由大到小排列的,按PCA的觀點來看,就是方差最大的座標軸就是第一個奇異向量,方差次大的座標軸就是第二個奇異向量…咱們回憶一下以前獲得的SVD式子:

image    

在矩陣的兩邊同時乘上一個矩陣V,因爲V是一個正交的矩陣,因此V轉置乘以V獲得單位陣I,因此能夠化成後面的式子

image    

將後面的式子與A * P那個m * n的矩陣變換爲m * r的矩陣的式子對照看看,在這裏,其實V就是P,也就是一個變化的向量。這裏是將一個m * n 的矩陣壓縮到一個m * r的矩陣,也就是對列進行壓縮,若是咱們想對行進行壓縮(在PCA的觀點下,對行進行壓縮能夠理解爲,將一些類似的sample合併在一塊兒,或者將一些沒有太大價值的sample去掉)怎麼辦呢?一樣咱們寫出一個通用的行壓縮例子:

image   

這樣就從一個m行的矩陣壓縮到一個r行的矩陣了,對SVD來講也是同樣的,咱們對SVD分解的式子兩邊乘以U的轉置U’

image   

這樣咱們就獲得了對行進行壓縮的式子。能夠看出,其實PCA幾乎能夠說是對SVD的一個包裝,若是咱們實現了SVD,那也就實現了PCA了,並且更好的地方是,有了SVD,咱們就能夠獲得兩個方向的PCA,若是咱們對A’A進行特徵值的分解,只能獲得一個方向的PCA。

2、奇異值與潛在語義索引LSI

潛在語義索引(Latent Semantic Indexing)與PCA不太同樣,至少不是實現了SVD就能夠直接用的,不過LSI也是一個嚴重依賴於SVD的算法,在 矩陣計算與文本處理中的分類問題 中談到:「三個矩陣有很是清楚的物理含義。

  • 第一個矩陣X中的每一行表示意思相關的一類詞,其中的每一個非零元素表示這類詞中每一個詞的重要性(或者說相關性),數值越大越相關。
  • 最後一個矩陣Y中每一列表示同一主題一類文章,其中每一個元素表示這類文章中每篇文章的相關性。
  • 中間的矩陣則表示類詞和文章雷之間的相關性。所以,咱們只要對關聯矩陣A進行一次奇異值分解,w 咱們就能夠同時完成近義詞分類和文章的分類。(同時獲得每類文章和每類詞的相關性)。

下面的例子來自LSA tutorial:

image     

矩陣的一行表示一個詞在哪些title中出現了(一行就是以前說的一維feature),一列表示一個title中有哪些詞,(這個矩陣實際上是咱們以前說的那種一行是一個sample的形式的一種轉置,這個會使得咱們的左右奇異向量的意義產生變化,可是不會影響咱們計算的過程)。好比說T1這個title中就有guide、investing、market、stock四個詞,各出現了一次,咱們將這個矩陣進行SVD,獲得下面的矩陣:

image     

左奇異向量表示「詞」的一些特性,右奇異向量表示「文檔」的一些特性,中間的奇異值矩陣表示左奇異向量的」一行「與右奇異向量的「一列」的重要程序,數字越大越重要。

另外,左奇異向量的第一列表示每個詞的出現頻繁程度,雖然不是線性的,可是能夠認爲是一個大概的描述,好比book是0.15對應文檔中出現的2次,investing是0.74對應了文檔中出現了9次,rich是0.36對應文檔中出現了3次;右奇異向量中一的第一行表示每一篇文檔中的出現詞的個數的近似,好比說,T6是0.49,出現了5個詞,T2是0.22,出現了2個詞。

而後咱們反過頭來看,咱們能夠將左奇異向量和右奇異向量都取後2維(以前是3維的矩陣),投影到一個平面上,能夠獲得:

image    

在圖上,每個紅色的點,都表示一個詞,每個藍色的點,都表示一篇文檔,這樣咱們能夠對這些詞和文檔進行聚類,好比說stock 和 market能夠放在一類,由於他們總是出如今一塊兒,real和estate能夠放在一類,dads,guide這種詞就看起來有點孤立了,咱們就不對他們進行合併了。

按這樣聚類出現的效果,能夠提取文檔集合中的近義詞,這樣當用戶檢索文檔的時候,是用語義級別(近義詞集合)去檢索了,而不是以前的詞的級別。這樣一減小咱們的檢索、存儲量,由於這樣壓縮的文檔集合和PCA是殊途同歸的,二能夠提升咱們的用戶體驗,用戶輸入一個詞,咱們能夠在這個詞的近義詞的集合中去找,這是傳統的索引沒法作到的。


對SVD分解與文本挖掘的理解

一、SVD用在潛在語義索引(Latent Semantic Indexing)的做用是獲取U,(sigma),V三個值;

二、通常不須要對sigma進行前K個變量取值,由於不是作降維,只是在找"行或列各自"之間的相關性;

三、若是維度較高也能夠利用SVD取K個sigma值進行降維,以後在研究"行或列各自"之間的相關性,較低運算複雜度;

  1.  如,SVD(Matrix_10000*5000)=(U_10000*100, E_100*100, V_100*5000), 即原來類似度計算時基於len(Matrix[i])=5000,而如今是基於len(Matrix[i])=100,但行數沒變。

四、總的來講,用SVD矩陣分解解決文本問題,實際解決的是LSI問題。

 

3、圖像壓縮

咱們來看一個奇異值分解在數據表達上的應用。假設咱們有以下的一張 15 x 25 的圖像數據。

如圖所示,該圖像主要由下面三部分構成。

咱們將圖像表示成 15 x 25 的矩陣,矩陣的元素對應着圖像的不一樣像素,若是像素是白色的話,就取 1,黑色的就取 0. 咱們獲得了一個具備375個元素的矩陣,以下圖所示

若是咱們對矩陣M進行奇異值分解之後,獲得奇異值分別是

σ 1  = 14.72 
σ 2  = 5.22 
σ 3  = 3.31

矩陣M就能夠表示成

M = u 1 σ 1   v 1 T  +  u 2 σ 2   v 2 T  +  u 3 σ 3   v 3 T

v i 具備15個元素, u i  具備25個元素,σ i  對應不一樣的奇異值。如上圖所示,咱們就能夠用123個元素來表示具備375個元素的圖像數據了。

4、去除噪聲

前面的例子的奇異值都不爲零,或者都還算比較大,下面咱們來探索一下擁有零或者很是小的奇異值的狀況。一般來說,大的奇異值對應的部分會包含更多的信息。好比,咱們有一張掃描的,帶有噪聲的圖像,以下圖所示

咱們採用跟實例二相同的處理方式處理該掃描圖像。獲得圖像矩陣的奇異值:

σ 1  = 14.15 
σ 2  = 4.67 
σ 3  = 3.00 
σ 4  = 0.21 
σ 5  = 0.19 
… 
σ 15  = 0.05

很明顯,前面三個奇異值遠遠比後面的奇異值要大,這樣矩陣 M 的分解方式就能夠以下:

M      u 1 σ 1   v 1 T  +  u 2 σ 2   v 2 T  +  u 3 σ 3   v 3 T

通過奇異值分解後,咱們獲得了一張降噪後的圖像。

5、數據分析

咱們蒐集的數據中老是存在噪聲:不管採用的設備多精密,方法有多好,老是會存在一些偏差的。若是大家還記得上文提到的,大的奇異值對應了矩陣中的主要信息的話,運用SVD進行數據分析,提取其中的主要部分的話,仍是至關合理的。

做爲例子,假如咱們蒐集的數據以下所示:

咱們將數據用矩陣的形式表示:

通過奇異值分解後,獲得

σ 1  = 6.04 
σ 2  = 0.22

因爲第一個奇異值遠比第二個要大,數據中有包含一些噪聲,第二個奇異值在原始矩陣分解相對應的部分能夠忽略。通過SVD分解後,保留了主要樣本點如圖所示

就保留主要樣本數據來看,該過程跟PCA( principal component analysis)技術有一些聯繫,PCA也使用了SVD去檢測數據間依賴和冗餘信息.

參考資料:

1) http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 
2)A Tutorial on Principal Component Analysis, Jonathon Shlens 
3) http://www.puffinwarellc.com/index.php/news-and-articles/articles/30-singular-value-decomposition-tutorial.html 
4) http://www.puffinwarellc.com/index.php/news-and-articles/articles/33-latent-semantic-analysis-tutorial.html 
5) http://www.miislita.com/information-retrieval-tutorial/svd-lsi-tutorial-1-understanding.html 
6)Singular Value Decomposition and Principal Component Analysis, Rasmus Elsborg Madsen, Lars Kai Hansen and Ole Winther, 2004 
7) http://blog.sciencenet.cn/blog-696950-699432.html

相關文章
相關標籤/搜索