主成分分析(Principal components analysis, PCA) 是最重要的降维方法之一,在数据压缩、消除冗余和数据噪音消除等方面有广泛的应用。通常我们提到降维算法,最先想到的就是PCA,下面我们对PCA原理进行介绍。
1. PCA思想
PCA就是找出数据中最主要的方面,用数据中最重要的方面来代替原始数据。假如我们的数据集是n维的,共有m个数据(x1,x2,…,xm),我们将这m个数据从n维降到r维,希望这m个r的数据集尽可能的代表原始数据集。
我们知道从n维降到r维肯定会有损失,但是希望损失尽可能的小,那么如何让这r维的数据尽可能表示原来的数据呢?首先来看最简单的情况,即将二维数据降到一维,也就是n=2,r=1。数据如下图所示,我们希望找到某一个维度方向,它可以代表这两个维度的数据。图中列了两个向量,也就是u1和u2,那么哪个向量可以更好的代表原始数据集呢?
直观上看u1比u2更好,为什么呢?可以有两种解释,第一种解释是样本点在这个直线上的投影尽可能的分开,第二种解释是样本点到这个直线的距离足够近。假如我们把r从1维推广到任意维,则我们希望降维的标准为样本点在这个超平面上的投影尽可能分开,或者说样本点到这个超平面的距离足够近。基于上面的两种标准,我们可以得到PCA的两种等价推导。
2. PCA推导:基于最大投影方差
2.1 基变换
一般来说,想要获得原始数据的表示空间,最简单的方式是对原始数据进行线性变换(基变换),即Y=PX。其中Y是样本在新空间的表达,P是基向量,X是原始样本。我们可知选择不同的基能够对一组数据给出不同的表示,同时当基的数量少于原始样本本身的维数时,则可以达到降维的效果,矩阵表示如下
( p 1 p 2 . . . p r ) ( x ( 1 ) x ( 2 ) . . . x ( m ) ) = ( p 1 x ( 1 ) p 1 x ( 2 ) . . . p 1 x ( m ) p 2 x ( 1 ) p 2 x ( 2 ) . . . p 2 x ( m ) . . . . . . . . . . . . p r x ( 1 ) p r x ( 2 ) . . . p r x ( m ) ) \begin{pmatrix} p_1\\ p_2\\ .\\ .\\ .\\ p_r \end{pmatrix} \begin{pmatrix} x^{(1)} & x^{(2)} & ... & x^{(m)} \end{pmatrix} =\begin{pmatrix} p_1x^{(1)} & p_1x^{(2)} &... &p_1x^{(m)} \\ p_2x^{(1)}& p_2x^{(2)} & ... & p_2x^{(m)} \\ .& .& .& .\\ .& .& .& .\\ .& .& .& .\\ p_rx^{(1)}& p_rx^{(2)} &... & p_rx^{(m)} \end{pmatrix} ⎝⎜⎜⎜⎜⎜⎜⎛p1p2...pr⎠⎟⎟⎟⎟⎟⎟⎞(x(1)x(2)...x(m))=⎝⎜⎜⎜⎜⎜⎜⎛p1x(1)p2x(1)...prx(1)p1x(2)p2x(2)...prx(2)............p1x(m)p2x(m)...prx(m)⎠⎟⎟⎟⎟⎟⎟⎞
2.2 方差
那么考虑,如何选择一个方向或者基才是最优的呢? 观察上图,我们将所有的点分别向两条直线做投影,基于前面PCA最大可分的思想,我们要找的方向是降维后损失最小,可以理解为投影后的数据尽可能的分开。那么这种分散程度可以用数学上的方差进行表示,方差越大数据越分散,方差公式如下所示
V a r ( x ) = 1 m ∑ i = 1 m ( x i − μ ) 2 Var(x) = \frac{1}{m}\sum_{i=1}^{m}(x_i - \mu)^2 Var(x)=m1i=1∑m(xi−μ)2
对数据进行中心化后得到
V a r ( x ) = 1 m ∑ i = 1 m ( x i ) 2 Var(x) = \frac{1}{m}\sum_{i=1}^{m}(x_i)^2 Var(x)=m1i=1∑m(xi)2
现在我们知道以下几点
- 对原始数据进行基变换可以对原始数据给出不同表示。
- 基的维度小于数据的维度可以起到降维的效果。
- 对基变换后新的样本进行求方差,选择使其方差最大的基。
2.3 协方差
基于上面提到的几点,我们来探讨如何寻找计算方案。从上面可以得到,二维降到一维可以使用方差最大,来选出能使基变换后数据分散最大的方向(基),但如果遇到高维的变换,怎么办呢?
针对高维情况,数学上采用协方差来表示
C o v ( X , Y ) = E ( ( X − μ ) ( Y − ν ) ) = E ( X ⋅ Y ) − μ ν Cov(X,Y) = E((X-\mu)(Y-\nu)) = E(X\cdot Y) - \mu\nu Cov(X,Y)=E((X−μ)(Y−ν))=E(X⋅Y)−μν
例如,二维已中心化数据 ( x ( 1 ) , x ( 2 ) ) (x^{(1)},x^{(2)}) (x(1),x(2))的协方差为
C o v ( x ( 1 ) , x ( 2 ) ) = E ( x ( 1 ) ⋅ x ( 2 ) ) = 1 m ∑ i = 1 m x i ( 1 ) x i ( 2 ) Cov(x^{(1)},x^{(2)})=E(x^{(1)}\cdot x^{(2)}) = \frac{1}{m}\sum _{i=1}^{m}x_i^{(1)}x_i^{(2)} Cov(x(1),x(2))=E(x(1)⋅