PCA简介
主成分分析(Principal components analysis,PCA)是一种分析、简化数据集的技术。正如它的名字:主成分分析,这种方法可以有效的找出数据中最”主要”的元素和结构,去除噪音和冗余,将原有的复杂数据降维,揭示隐藏在复杂数据背后的简单结构.
它的优点是简单,而且无参数限制,可以方便的应用在各个场合.
PCA的数学原理
数据表示
对于给定数据集${x^1,x^2,…,x^n}$,其中$x^i \in R^m$, 每条数据用一个列向量表示,同时用矩阵X表示全体数据集,X中的每行是一条数据,也就是说需要对每条数据表示做转置运算.
降维
初始情况下,数据$x^i \in R^m$,就是说数据是用m维度表示的,也就是说表示一条数据需要m个坐标基[比如说笛卡尔坐标系,由两个坐标基表示,(1,0),(0,1)],那么降维就是用更少的维度k去表示数据[k<m],由于维度降低了,必然会导致数据的丢失,而我们需要做的工作就是保证数据损失越小越好.这就引出一个问题: 怎么定义数据损失,或者说怎么选择低维空间坐标基? 选择的标准不同,pca对应实现方法也就不同. 不同的标准,比如说可以选择降维后的数据表示之间方差越大越好[越混乱]
线性代数:基变换
从线性代数的角度来看,PCA的目标就是使用另一组基去重新描述得到的数据数据.而新的基要尽量揭示原有的数据间的关系.PCA的目标就是找到”主成分[主元]”,最大程度地去除冗余和噪音的干扰.
标准正交基
在m维向量空间中的每一个向量都是一组正交基的线性组合.最普通的一组正交基是标准正交基,数据集可以看做是在标准正交基下表示的.比如2维向量(2,3),正交基为:(0,1),(1,0).[在线性代数中,一个内积空间的正交基是元素两两正交的基。假若,一个正交基的基向量的模长都是单位长度1,则称这正交基为标准正交基]
基变换
从更严格的数学定义上,PCA回答的问题是:如何寻找到另一组正交基,它们是标准正交基的线性组合,而且能够最好的表示数据集?
这里提出PCA方法的一个最关键的假设:线性. 这是一个非常强的假设条件.它使问题得到了很大程度上的简化:
- 数据被限制在一个向量空间中,能被一组基表示;
- 隐含地假设了数据之间的连续性关系.
这样数据就可以被表示为各种基的线性组合.令X表示原数据集,X是一个m x n的矩阵,它的每一个列向量表示一个采样数据$x^i$,令Y表示转换后的新的数据集表示.P是它们之间的线性转换.
$PX = Y$
有如下定义:
- $p_i$表示P的行向量;
- $x^i$表示X的列向量;
- $y^i$表示Y的列向量.
上述公式表示不同基之间的转换.在线性代数中,它有如下含义:P是从X到Y的转换矩阵(空间转换). P的行向量, ${p_1,p_2,…,p_m}$是一组新的基,而Y是原数据在新的基下的重新表示.
问题
在线性的假设条件下,问题转化为寻找一组变换后的基,也就是P的行向量${p_1,p_2,…,p_m}$,这些向量就是PCA中的”主成分”.那么,怎样才能最好的表示原数据X? P的基怎么选择才是最好的?
方差和目标
“最好的表示”是什么意思?在线性系统中,”混乱数据”通常包含以下三种成分:噪音,旋转和冗余.分别对三种成分做出数学上的描述并分析.
噪音和旋转
噪音对数据的影响是巨大的,如果不能对噪音进行区分,就不可能抽取数据中有用的信息.噪音的衡量有多种方式,最常见的定义是信噪比(signal-to-noise ratio),或者是方差比$\sigma^2$:
$SNR=\frac{\sigma^2_{signal}}{\sigma^2_{noise}}$
比较大的信噪比表示数据的准确度高,而信噪比低说明数据中的噪音成分比较多.那么怎样区分什么是信号,什么是噪音呢?我们假设:变化较大的信息被认为是信号,变换较小的则是噪音.而变化的大小则是由方差来描述.
$\sigma^2=\frac{\sum_{i=1}^n(x^i-\hat{x})^2}{n-1}$
方差较大的分布,表示了采样点的主要分布趋势,是主信号或主要分量;而方差较小的分布则被认为是噪音或次要分量.
冗余
有时在实验中引入一些不必要的变量,可能会产生两种情况:
1.该变量对结果没有影响; 2.该变量可以用其他变量表示,从而造成数据冗余.
上图表示了两个观测变量之间的关系.(a)图中是低冗余,从统计学上说,这两个观测变量是相互独立的,它们之间的信息没有冗余;而相反的极端情况如(c),高度相关,两个变量之间可以相互表示.这种情况下,只用一个变量就可以表示了,这一个变量就是降维后的基.这也是PCA中”降维”思想的本源.
协方差矩阵
对于上面的简单情况[两个变量],可以通过简单的线性拟合来判断各个观测变量之间是否出现冗余,而对于复杂的情况,需要借助协方差来进行衡量和判断: $\sigma_{AB}^2=\frac{\sum_{i=1}^n(a^i-hat{a})(b^i-\hat{b})}{n-1}$ A,B分别表示不同的观测变量所记录的一组值. 对于一组具有m个观测变量[特征],n个采样时间点的采样数据X,将每个观测变量的值写为行向量,可以得到一个矩阵:
$X=\begin{vmatrix}\ x_1\ x_2\ …\ x_m\end{vmatrix}$
那么,协方差矩阵如下:
$C_x = \frac1{n-1}XX^T$
协方差矩阵结果是m x m的方阵[可以利用这个,确定上面协方差矩阵的计算公式,因为有时候会对X矩阵做转置,也就是X中的每一行表示一条记录,这种情况下就变成X.TX了].可以发现协方差矩阵具有以下性质:
-Cx是一个m x m的平方对称矩阵; -Cx对角线上的元素是对应的观测变量的方差; -非对角线上的元素是对应特征之间的协方差.
协方差矩阵Cx包含了所有观测变量之间的相关性度量.这些相关性度量反映了数据的噪音和冗余程度.在对角线上的元素越大,表明信号越强,变量的重要性越高;元素越小表明可能是存在噪音或次要变量;在非对角线上的元素大小则对应于相关观测变量之间的冗余程度的大小.这样协方差矩阵把数据取样中可能出现的3种情况都表示并度量好了.接下来就是对协方差矩阵进行操作,找到”主成分”.
协方差矩阵的对角化
PCA分析以及协方差矩阵优化的原则是:1)最小化变量冗余;对应于协方差矩阵的非对角线元素要尽量小;2)最大化信号,对应于协方差矩阵的主对角线元素要尽可能大. 最小化冗余,应该让协方差矩阵的非对角线元素等于0,所以优化目标就是让协方差矩阵非对角线元素等于0,所以优化的目标矩阵$C_Y$应该是一个对角矩阵.PCA假设P所对应的一组变换基${p_1,p_2,…,p_m}$必须是标准正交基,而优化矩阵对角线上的元素越大,就说明信号的成分越大,换句话说就对应于越重要的”主成分”.
PCA求解
在线性代数中,PCA问题可以描述为: 寻找一组正交基组成的矩阵P,有Y=PX,使得$C_Y=\frac1{n-1}YY^T$是对角矩阵.则P的行向量(也就是一组正交基)就是数据X的主元向量. 对$C_Y$进行推导:
$C_Y=\frac1{n-1}YY^T\=\frac1{n-1}(PX)(PX)^T\=\frac1{n-1}PXX^TP^T\=P\frac1{n-1}XX^TP^T\=PDP^T$
其中,$D=\frac1{n-1}XX^T$,也就是说D是X的协方差矩阵.X协方差矩阵D是一个实对称矩阵,$C_Y$是一个对角矩阵,而且P是正交基矩阵,也就是说$P^T=P^{-1}$; 那么,从上面的公式可以看出,正交矩阵P就是将实对称矩阵D对角化的矩阵.对称矩阵D对角化,P的求解就对应于D的特征向量,而且对角化后的矩阵$C_Y$的对角线元素,对应于矩阵D的特征值.
PCA算法描述
PCA求解的一般步骤:
1.收集数据形成m x n的矩阵X,m是观测变量个数[特征个数],n为数据样本集条数[采样点个数]; 2.矩阵X预处理,保证特征0均值,有时也需要进行1方差处理; 3.求协方差矩阵$D=\frac1{n-1}XX^T$; 4.对协方差矩阵D进行特征分解,求特征值以及特征向量; 5.对特征值进行筛选,选择前k大特征值对应的特征向量,组合构成降维后的正交基P. 6.Y=PX,Y对应于降维后的数据.
因为特征值对应于矩阵对角化后的对角元素,而对角元素越大,说明方差越大,也可能是”信号”,主元.
PCA实现
PCA假设和局限
PCA模型中存在的很多假设条件决定了PCA算法的限制性,在有些场合可能会造成效果不好甚至失效.对于这些限制条件,进而会出现不同的PCA扩展技术.
PCA假设条件
线性假设
PCA的内部模型是线性的,这也就决定了它能进行的主成分分析之间的关系也是线性的。kernel-PCA的一类方法就是使用非线性的权值对原有PCA技术的拓展:kernel核方法,和在SVM中类似,可以将非线性数据映射到高维中,进而可以保证数据的线性.
使用均值和方差进行充分估计
使用均值和方差进行描述的概率分布模型只限于指数型概率分布(如高斯分布),也就是说如果数据的概率分布不满足高斯分布或指数型概率分布,PCA就会失效.不过,所幸的是,根据中央极限定理,现实生活中所遇到的大部分采样数据的概率分布都是遵从高斯分布的。所以PCA仍然是一个使用于绝大部分领域的稳定且有效的算法。
大方差向量具有较大重要性
PCA方法假设:数据本身具有较高的信噪比,所以具有最高方差的一维向量就可以被看作是主元,而方差较小的变化则被认为是噪音。
主元正交
PCA方法假设主元向量之间都是正交的.