PCA(Principal Component Analysis)是一种常用的数据降维方法,通过线性变换将原始数据变换为一组各维度线性无关的表示,以提取数据的主要特征成分。本文着重于理清PCA的数学原理,并给出相应的证明1。
数据中的冗余和噪声
我们先举一个例子,假设现在我们拿到这样一组数据,里面有两个属性,既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然我们一眼就看出这两个特征有一个多余。
怎么直观的判断数据是否冗余? 上图从左往右,我们可以发现数据之间的关联性越来越强,也就是说两组数据越来越“相似”,我们用其中一组数据就能预测出另一组数据,这就是数据需要降维的其中一个原因:冗余。
另一方面,除了冗余之外,数据中可能还存在噪声,数据记录过程中存在某些不可抗因素的干扰。我们常常用信噪比signal-to-noise ratio (SNR) 来评价一组数据的好坏。
$SNR \gg 1$意味着数据比较纯净,可信度比较高,SNR 较小时,我们常说信号被噪声淹没了。
换句话说,一组数据中” 信号” 部分的方差较大,方差较小的我们可以认定为噪声。
哎呀,我们已经找到PCA 的理论根据了,我们要得到数据中的” 有用” 信息,也就是说我们要找到使数据方差最大的方向。
我们也知道了,PCA 的两大作用,降低冗余,减小噪声。
协方差矩阵
那么怎么判断两组数据是否冗余呢,很简单呀,求个协方差就可以了。
举个例子,我们想知道一个男孩子的猥琐程度跟他受女孩子的欢迎程度是否存在一些联系。我们就可以用协方差来度量,协方差的的定义:
其中,$a = [a_1,a_2,\cdots,a_n]$,$b = [b_1,b_2,\cdots,b_n]$ .
协方差的结果有什么意义呢?
如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐越受女孩欢迎。如果结果为负值,就说明两者是负相关,越猥琐女孩子越讨厌。如果为0,则两者之间没有关系,猥琐不猥琐和女孩子喜不喜欢之间没有关联,就是统计上说的“相互独立”。
下面我们来说一说协方差矩阵,假设我们现在有一个 $m \times n$ 的矩阵 $X$ ,
协方差矩阵可表示为:
我们要消除冗余,也就是要使$S_X$非对角线上的元素为0,也就是使得矩阵 $X$ 的任意两行线性无关。
数学描述
我们得到了降维问题可以表达为这样一个过程:
将一组 N 维向量降为K 维(K 大于0,小于N),其目标是选择K 个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K 个方差)。
这样我们就即减小了冗余,又降低了噪声!
对角化协方差矩阵
假设我们现在选取的这组基为$P$:
$X$在这组新基下的坐标为:
协方差矩阵:
令,
也就是说,我们希望找到一组基来对角化 $A$,注意到 A 是对称矩阵,学过线性代数的都知道,对阵矩阵是肯定可以对角化的。
一个n 行n 列的实对称矩阵 A 一定可以找到 n 个单位正交特征向量 $E = (e_1,e_2,\cdots,e_n )$,使得:
SVD 和 PCA
PCA 实际上就是对角化 $XX^T$,还记得我们前面推导 SVD 的过程吗,我们是从特征值分解开始的,