在線性代數(shù)中,奇異值分解(SVD)是實或復矩陣的分解,它在信號處理和統(tǒng)計學中有許多有用的應用蒙兰。[In linear algebra, the singular value decomposition (SVD) is a factorization of a real or complex matrix, with many useful applications in signal processing and statistics.]
形式上來說镜沽,mn階的實或復矩陣M的奇異值分解是形式如下的分解:[Formally, the singular value decomposition of an m×n real or complex matrix M is a factorization of the form]
其中,U是一個mm階的實或復單位陣桨吊,Σ是一個mn階的矩形對角陣威根,在對角線上有非負的實數(shù)值凤巨。V(V的共軛轉置)是一個nn的實或復單位陣。Σ的對角項Σij稱之為M的奇異值洛搀。U的m個列以及對應的V的n個列被分別稱為M的左奇異矢量和右奇異矢量敢茁。[where U is anΣ的對角項 m×m real or complex unitary matrix, Σ is an m×n rectangular diagonal matrix with nonnegative real numbers on the diagonal, and V (the conjugate transpose of V) is an n×n real or complex unitary matrix. The diagonal entries Σi,iof Σ are known as the singular values of M. The m columns of U and the n columns of V are called the left-singular vectors and right-singular vectors of M, respectively.]
奇異值分解和特征值分解密切相關,即:[The singular value decomposition and the eigendecomposition are closely related. Namely:]
- M的左奇異矢量是MM的特征矢量姥卢。[The left-singular vectors of M are eigenvectors of MM.]
- M的右奇異矢量是MM的特征矢量卷要。[The right-singular vectors of M are eigenvectors of MM.]
- M的非零奇異值(可在Σ的對角項上找到)是MM以及MM特征值的非零平方根。[The non-zero-singular values of M (found on the diagonal entries of Σ) are the square roots of the non-zero eigenvalues of both MM* and MM*.]
采用SVD的應用包括計算偽逆局陣独榴、數(shù)據(jù)的最小平方擬合僧叉、矩陣逼近以及確定矩陣的秩、range以及null space等棺榔。[Applications which employ the SVD include computing the pseudoinverse, least squares fitting of data, matrix approximation, and determining the rank, range and null space of a matrix.]
關于SVD的具體原理瓶堕,這里有一篇非常好的中文文章,細致地推導了整個過程——SVD原理詳解
主成分分析PCA
PCA(Principal Components Analysis)即主成分分析症歇,是圖像處理中經(jīng)常用到的降維方法郎笆,大家知道,我們在處理有關數(shù)字圖像處理方面的問題時忘晤,比如經(jīng)常用的圖像的查詢問題宛蚓,在一個幾萬或者幾百萬甚至更大的數(shù)據(jù)庫中查詢一幅相近的圖像。這時设塔,我們通常的方法是對圖像庫中的圖片提取響應的特征凄吏,如顏色,紋理闰蛔,sift痕钢,surf,vlad等等特征序六,然后將其保存任连,建立響應的數(shù)據(jù)索引,然后對要查詢的圖像提取相應的特征例诀,與數(shù)據(jù)庫中的圖像特征對比随抠,找出與之最近的圖片。這里繁涂,如果我們?yōu)榱颂岣卟樵兊臏蚀_率暮刃,通常會提取一些較為復雜的特征,如sift爆土,surf等椭懊,一幅圖像有很多個這種特征點,每個特征點又有一個相應的描述該特征點的128維的向量,設想如果一幅圖像有300個這種特征點氧猬,那么該幅圖像就有300*vector(128維)個背犯,如果我們數(shù)據(jù)庫中有一百萬張圖片,這個存儲量是相當大的盅抚,建立索引也很耗時漠魏,如果我們對每個向量進行PCA處理,將其降維為64維妄均,是不是很節(jié)約存儲空間爸隆?
主成分分析一般過程
特征抽取的目標是根據(jù)原始的d個特征的組合形成k個新的特征丰包,即將數(shù)據(jù)從d維空間映射到k維空間禁熏。在文本分析領域常用的降維方法是主成分分析(Principal Component Analysis, PCA)和奇異值分解(Singular Value Decomposition, SVD)邑彪。 在下文的敘述中瞧毙,將沿襲機器學習的常用符號,使用x表示一個列向量寄症,它是樣本x在d維空間中的點宙彪。而由n個樣本構成的數(shù)據(jù)集可以表示為一個d×n的矩陣XPCA PCA背后的數(shù)學基礎是特征值分析,即Σv=λv有巧,v是特征向量释漆,λ是特征值。PCA的目標是最大化數(shù)據(jù)間累積方差篮迎。PCA的一般過程是:
- 去除平均值:means男图;
- 計算X的協(xié)方差矩陣Σ;
- 計算Σ的特征向量和特征值(特征向量用列向量v_d×1表示)柑潦;
- 將特征值從大到小排序;
- 保留最上面的k個特征向量(這k個特征向量保證了數(shù)據(jù)映射到特征值最大的特征向量的方向時峻凫,數(shù)據(jù)間的累積方差最大渗鬼,數(shù)據(jù)映射到第二大的特征向量時,數(shù)據(jù)間的累積方差次之荧琼,且特征向量之間保持正交)構成的特征向量矩陣V_d×k譬胎;
- 將數(shù)據(jù)轉換到上述k個特征向量構建的新空間中(V^TX=A*_k×n + means,A是一個k×n的矩陣)。
我想用一個簡單的例子來說明主成分分析的能力:
關于SVD和PCA這里我只是通過做一個簡單的介紹命锄,如果大家感興趣可以參考以下更多的博文和資料:
- http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 【強大的矩陣奇異值分解(SVD)及其應用】
- http://www.tuicool.com/articles/BnUVraB 【SVD的計算步驟】
- http://blog.csdn.net/zhongkejingwang/article/details/43053513 【奇異值分解(SVD)原理詳解及推導 】
- http://blog.sina.com.cn/s/blog_50363a7901011ax8.html 【奇異值分解[Singular Value Decomposition]】
- http://www.ams.org/samplings/feature-column/fcarc-svd
- http://blog.csdn.net/misscoder/article/details/51094330 【 PCA (主成分分析)詳解 (寫給初學者) 結合matlab 】