PCA的數學原理推導

PCA的數學推導

PCA(Principle Component Analysis)是一種可以將高維度數據降爲低維度數據的機器學習算法。通過降維,可以有節省存儲空間,數據可視化等優點。之前在Coursera上Andrew Ng的機器學習時瞭解到此算法,但是那個課只涉及了實現,並未闡述其背後的數學原理。之後在Coursera上又找到一門專門講PCA數學原理的課程,才藉此瞭解些許其中的數學原理,在此坐下記錄,以便日後複習。

期望與方差

期望(Expectation):簡單來說,期望能夠反映一組數據的平均值情況。其中一個定義爲: E ( X )   =   1 N i = 1 N x i 。由期望的定義不難得出以下性質:

(1) E ( X + a )   =   E ( X ) (2) E ( a X )   =   a E ( x )

方差(Variance): 方差反映的是一組數據裏各個數據點相對期望值的分散程度的總和。定義如下: V a r ( X )   =     1 N i = 1 N ( x i   E ( X ) ) 2   。從方差的定義也不難推導出如下性質:
(3) V a r ( X + a )   =   V a r ( X ) (4) V a r ( a X ) = a 2 V a r ( X )

協方差

協方差(Covariance): 方差只是放映一個維度內的數據的分散程度,而協方差則用來表示不同緯度之間數據的相關性。
假設有兩組數據X,Y,那他們的協方差定義爲

C o v ( X , Y )   =   1 N i = 1 N ( x i   E ( X ) ) ( y i E ( Y ) ) = E [ ( X E ( X ) ) ( Y E ( Y ) ) ]
.
如果協方差是正數,代表兩組數據正相關,簡單來說就是一組數據若有變大趨勢,另外一組也有變大的趨勢。如果爲負數,就是負相關。爲零,則代表兩組數據不相關。
對於多組數據,協方差通常表示爲協方差矩陣(Covariance matrix)。假設兩組數據X,Y, 那他們的協方差表示爲
S   = ( c o v ( X , X ) c o v ( X , Y ) c o v ( Y , X ) c o v ( Y , Y ) )

協方差矩陣的維度D是數據的維度。例如有在實際應用中,數據會如下存儲 X R N D , 這個說明數據按行存儲,有N行,每個數據的維度D。在這種前提下,根據協方差矩陣定義和矩陣基本運算,協方差矩陣如下:
S   =   1 N ( X E ( X ) ) T ( X E ( X ) )  

不難看出,協方差矩陣是對稱矩陣(symmetric matrix),且主對角線元素全都是大於等於0的。協方差矩陣具備一些良好的性質,可以爲日後的計算帶來很大的便利。關於實對稱矩陣的半正定性質,一起其他性質,在另外一篇博客中記錄。

內積

內積(inner product): 不嚴格的來說,內積可以理解爲在向量空間裏定義的一種計算方法。具體的定義可見維基百科inner product。簡單來說內積滿足一下運算條件:
symmetric:

< x , y >   =   < y , x >

bilinear:
< a x , y >   =   a < x , y > < x + y , z >   =   < x , z > + < y , z >

positive definite:
< x , x >   0 ,   e q u a l i t y   h o l d s   i f   o n l y   i f   x   = 0

有了內積的定義,可以用來定義向量的長度,以及向量之間的夾角
向量的長度:
| | x | |   =   < x , x >

向量之間的角度:
c o s θ = < x , y > | | x | | | | y | |

當向量之間角度爲90度時,兩個向量正交。可以看出向量的長度與向量之間的角度跟內積的具體定義有關係,我們通常所熟悉的點積(dot product)就是內積的一種。

投影矩陣

有了內積的定義,我們就可以繼續定義什麼是投影(projection)。
這裏寫圖片描述
先從一維情況來看,當我們想在向量空間(vector space)U中找到一個向量p, 且希望||p-x||儘量小時,很明顯當向量x-p垂直於向量p時,||p-x||最小。假設向量空間U的基(basis)爲向量b。我們可以推導出一維時,投影矩陣。

p U ,   p   =   λ b ,   λ R   < x p , b >   = 0 ⇔< x λ b ,   b >   =   0 ⇔< x , b > λ < b , b >   =   0 λ = < x , b > | | b | | 2 = x T b | | b | | 2 ,   使 p   =   λ b = x T b | | b | | 2 b x T b b T x p   =   b b T | | b | | 2 x  

關於更一般的投影矩陣推導,求參考 這裏.

正交補和正交分解

正交補(orthogonal complement)和正交分解(orthogonal decomposition)的詳細定義請參照維基百科。關鍵點是以下兩點:

· If we look at an n-dimensional vector space V and a k-dimensional subspace W V , then the orthogonal complement W is an (n−k)-dimensional subspace of V and contains all vectors in V that are orthogonal to every vector in W .

這一點也比較好理解,一個向量空間V總能找到跟這個向量空間等價的一組標準正交基(orthonormal basis),所以在V中的任何向量,都可以分解成這組標準正交基的線性組合。我們可以把這組標準正交基分爲兩組,其中一組就是另外一組的正交補,反之亦然,具體表現爲第二個點。

· Every vector x V can be (uniquely) decomposed into
x   =   i = 1 k λ i b i + j = 1 n k ψ j b j ,   λ i , ψ j R   where b 1 , . . . b k is a basis of W and b 1 , . . . b n k is a basis of W .

PCA要解決的問題

假設我們一組數據 X = { x 1 ,   x 2 ,   . . .   , x n } ,   x i R D , 我們想要在更低的維度找到一組相似的數據來表示原有的數據。因爲原數據的維度是 R D , 所以一下結論是可以推導出來的。

  1. R D 內存在一組標準正交基(orthonormal basis 以後簡稱ONB),所以X可以被重新表示爲: x n     =   i = 1 D B i n b i
  2. 由之前推導的一維投影公式可知, B i n = x n T b i
  3. 由正交分解可得, x   =   i = 1 k β i b i + j = 1 n k ψ j b j ,   λ i , ψ j R   ,我們可以把前半部分ONB看成主要的(Principle basis),後面的正補基看成次要的。PCA簡而言之就是要找到一組主要的ONB( b 1 , . . . b k )和 相應的 B (也叫座標coordinates 或者code),忽略後半部分。然後儘可能的保有原來數據的屬性。所以經過PCA變換後的數據爲: x n ~     =   i = 1 k B i n b i
  4. 損失函數定義如下: J   =   1 N n = 1 N | | x n x n ~ | | 2

計算投影的座標

這部分以後下部分計算會涉及矩陣微分(matrix calculus), 相關參考在這裏。對 B i n 的計算可以對J求偏導數得到,具體計算過程如下:
已知:

(1) x n ~     =   j = 1 M B j n b j (2) J   =   1 N n = 1 N | | x n x n ~ | | 2 (3) B = { b 1 , . . . , b M } , w h e r e   b 1 , . . . , b M   a r e   o r t h o n o r m a l   b a s i s

可得:

J x n ~ = 2 N ( x n x n ~ ) T x n ~ B j n = b j

相關文章
相關標籤/搜索