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

相关文章
相关标签/搜索