PCA的數學推導
PCA(Principle Component Analysis)是一種可以將高維度數據降爲低維度數據的機器學習算法。通過降維,可以有節省存儲空間,數據可視化等優點。之前在Coursera上Andrew Ng的機器學習時瞭解到此算法,但是那個課只涉及了實現,並未闡述其背後的數學原理。之後在Coursera上又找到一門專門講PCA數學原理的課程,才藉此瞭解些許其中的數學原理,在此坐下記錄,以便日後複習。
期望與方差
期望(Expectation):簡單來說,期望能夠反映一組數據的平均值情況。其中一個定義爲:
E(X) = 1N∑Ni=1xi
。由期望的定義不難得出以下性質:
E(X+a) = E(X)E(aX) = aE(x)(1)(2)
方差(Variance): 方差反映的是一組數據裏各個數據點相對期望值的分散程度的總和。定義如下:
Var(X) = 1N∑Ni=1(xi −E(X))2
。從方差的定義也不難推導出如下性質:
Var(X+a) = Var(X)Var(aX)=a2Var(X)(3)(4)
協方差
協方差(Covariance): 方差只是放映一個維度內的數據的分散程度,而協方差則用來表示不同緯度之間數據的相關性。
假設有兩組數據X,Y,那他們的協方差定義爲
Cov(X,Y) = 1N∑i=1N(xi −E(X))(yi−E(Y))=E[(X−E(X))(Y−E(Y))]
.
如果協方差是正數,代表兩組數據正相關,簡單來說就是一組數據若有變大趨勢,另外一組也有變大的趨勢。如果爲負數,就是負相關。爲零,則代表兩組數據不相關。
對於多組數據,協方差通常表示爲協方差矩陣(Covariance matrix)。假設兩組數據X,Y, 那他們的協方差表示爲
S =(cov(X,X)cov(Y,X)cov(X,Y)cov(Y,Y))
協方差矩陣的維度D是數據的維度。例如有在實際應用中,數據會如下存儲
X∈RN∗D
, 這個說明數據按行存儲,有N行,每個數據的維度D。在這種前提下,根據協方差矩陣定義和矩陣基本運算,協方差矩陣如下:
S = 1N(X−E(X))T(X−E(X))
不難看出,協方差矩陣是對稱矩陣(symmetric matrix),且主對角線元素全都是大於等於0的。協方差矩陣具備一些良好的性質,可以爲日後的計算帶來很大的便利。關於實對稱矩陣的半正定性質,一起其他性質,在另外一篇博客中記錄。
內積
內積(inner product): 不嚴格的來說,內積可以理解爲在向量空間裏定義的一種計算方法。具體的定義可見維基百科inner product。簡單來說內積滿足一下運算條件:
symmetric:
<x,y> = <y,x>
bilinear:
<ax,y> = a<x,y><x+y,z> = <x,z>+<y,z>
positive definite:
<x,x> ⩾0, equality holds if only if x =0
有了內積的定義,可以用來定義向量的長度,以及向量之間的夾角
向量的長度:
||x|| = <x,x>‾‾‾‾‾‾‾‾√
向量之間的角度:
cosθ=<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=xTb||b||2, 內積使用點積定義p = λb=xTb||b||2b∵xTb是標量,所以可以寫成bTx∴p = bbT||b||2x
關於更一般的投影矩陣推導,求參考
這裏.
正交補和正交分解
正交補(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 = ∑ki=1λibi+∑n−kj=1ψjb⊥j, λi,ψj∈R
where
b1,...bk
is a basis of
W
and
b⊥1,...b⊥n−k
is a basis of
W⊥
.
PCA要解決的問題
假設我們一組數據
X={x1, x2, ... ,xn}, xi∈RD
, 我們想要在更低的維度找到一組相似的數據來表示原有的數據。因爲原數據的維度是
RD
, 所以一下結論是可以推導出來的。
-
RD
內存在一組標準正交基(orthonormal basis 以後簡稱ONB),所以X可以被重新表示爲:
xn = ∑Di=1Binbi
- 由之前推導的一維投影公式可知,
Bin=xTnbi
- 由正交分解可得,
x = ∑ki=1βibi+∑n−kj=1ψjb⊥j, λi,ψj∈R
,我們可以把前半部分ONB看成主要的(Principle basis),後面的正補基看成次要的。PCA簡而言之就是要找到一組主要的ONB(
b1,...bk
)和 相應的
B
(也叫座標coordinates 或者code),忽略後半部分。然後儘可能的保有原來數據的屬性。所以經過PCA變換後的數據爲:
xn˜ = ∑ki=1Binbi
- 損失函數定義如下:
J = 1N∑Nn=1||xn−xn˜||2
計算投影的座標
這部分以後下部分計算會涉及矩陣微分(matrix calculus), 相關參考在這裏。對
Bin
的計算可以對J求偏導數得到,具體計算過程如下:
已知:
xn˜ = ∑j=1MBjnbjJ = 1N∑n=1N||xn−xn˜||2B={b1,...,bM},where b1,...,bM are orthonormal basis(1)(2)(3)
可得:
∂J∂xn˜=−2N(xn−xn˜)T∂xn˜∂Bjn=bj
∂J∂Bjn=∂J∂xn˜∗∂xn˜∂Bjn=−2N(xn−xn˜)Tbj=(1)−2N(xTnbj−(∑j=1MBjnbTj)bj)nbj−(∑j=1MBjnbTj)bj)=(3)−2N=1MBjnbTj)bj)=(3)−2N(xTbj)