主成分分析(Principal Component Analysis, PCA)是最常用的一种降维方法。PCA 旨在找到数据中的主成分,并利用主成分表征原始数据,从而达到降维的目的。PCA是一种线性、非监督、全局的降维算法。
以一个二维数据集为例,(a) 是二维空间中经过中心化的一组数据,我们很容易看出主成分所在的轴(以下称为主轴)的大致方向,即 (b) 中黄线所处的轴。
1 原理分析
假设原数据点为 v 1 , v 2 , . . . , v n {v_1, v_2, ..., v_n} v1,v2,...,vn,所有向量均为列向量,中心化后表示为 x 1 , x 2 , . . . , x n = v 1 − μ , v 2 − μ , . . . , v n − μ {x_1, x_2, ..., x_n}={v_1-\mu, v_2-\mu, ..., v_n-\mu} x1,x2,...,xn=v1−μ,v2−μ,...,vn−μ,其中, μ = 1 n ∑ i = 1 n v i \mu=\frac{1}{n}\sum_{i=1}^{n}v_i μ=n1∑i=1nvi。
假设 w w w 为单位方向向量,也是我们希望求得的投影方向。
思考一个这样的问题:对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有样本点进行恰当的表达?
若存在这样的超平面,则它应当具备如下的性质:
- 最大可分性:样本点在这个超平面上的投影能尽可能分开
- 最近重构性:样本点到这个超平面的距离都足够近;
1.1 从方差(最大可分性)角度分析
在上面的例子中,黄线所处的轴上(即主轴),数据分布得更为分散,这也意昧着数据在这个方向上方差更大。在信号处理领域,我们认为信号具有较大方差, 噪声具有较小方差,信号与躁声之比称为信噪比。信噪比越大意味着数据的质量越好,反之,信噪比越小意味着数据的质量越差。
因此,PCA的目标,即最大化投影方差,也就是让数据在主轴投影的方差最大。
向量内积在几何上表示为第一个向量投影到第二个向量上的长度,因此向量 x i x_i xi 在 w w w(单位方向 )上的投影坐标可以表示为 ( x i , w ) = x i T w (x_i,w)=x_i^Tw (xi,w)=xiTw。所以目标是找到一个投影方向 w w w,使得 x 1 , x 2 , . . . , x n {x_1, x_2, ..., x_n} x1,x2,...,xn在 w w w 上的投影的方差尽可能大。
首先,投影之后均值为 0(进行中心化的意义):
μ ′ = 1 n ∑ i = 1 n x i T w = ( 1 n ∑ i = 1 n x i T ) w = 0 \mu'=\frac{1}{n}\sum_{i=1}^{n}x_i^Tw=(\frac{1}{n}\sum_{i=1}^{n}x_i^T)w=0 μ′=n1i=1∑nxiTw=(n1i=1∑nxiT)w=0
从而可以得到投影后的方差为:
D ( x ) = 1 n ∑ i = 1 n ( x i T w ) 2 = 1 n ∑ i = 1 n ( x i T w ) T ( x i T w ) = 1 n ∑ i = 1 n w T x i x i T w = w T ( 1 n ∑ i = 1 n x i x i T ) w \begin{aligned} D(x)&=\frac{1}{n}\sum_{i=1}^{n}(x_i^Tw)^2\\ &=\frac{1}{n}\sum_{i=1}^{n}(x_i^Tw)^T(x_i^Tw)\\ &=\frac{1}{n}\sum_{i=1}^{n}w^Tx_ix_i^Tw\\ &=w^T(\frac{1}{n}\sum_{i=1}^{n}x_ix_i^T)w \end{aligned} D(x)=n1i=1∑n(xiTw)2=n1i=1∑n(xiTw)T(xiTw)=n1i=1∑nwTxixi