如果事物的主要方面刚好体现在几个主要变量上,那么我们只需要将体现事物主要方
面的较少的几个主要变量分离出来,对此进行详细分析。但是,在一般情况下,并不
能直接找出这样的关键变量。这时我们可以用原有变量的线性组合来表示事物的主要
方面, PCA 就是这样一种分析方法。
PCA 主要用于数据降维,对于由一系列特征组成的多维向量,其中某些元素本身
没有区分性,比如某个元素在所有的样本中都相等,或者彼此差距不大,那么这个元
素本身就没有区分性,如果用它做特征来区分,贡献会非常小。所以我们的目的是找
那些变化大的元素,即方差大的那些维,而去除掉那些变化不大的维,从而使特征留
下的都是“精品”,使得计算量也相应变小。 对于一个 k 维的特征来说,相当于它的
每一维特征与其他维都是正交的(相当于在多维坐标系中,坐标轴都是垂直的),那
么我们可以变化这些维的坐标系,从而使这个特征在某些维上方差大,而在某些维上
方差很小。例如,一个 45 度倾斜的椭圆,在第一坐标系,如果按照 x,y 坐标来投影,
这些点的 x 和 y 的属性很难用于区分他们,因为他们在 x,y 轴上坐标变化的方差都差
不多,我们无法根据这个点的某个 x 属性或 y 属性来判断这个点是哪个,而如果将坐
标轴旋转,以椭圆长轴为 x 轴,则椭圆在长轴上的分布比较长,方差大,而在短轴上
的分布短,方差小,所以可以考虑只保留这些点的长轴属性,来区分椭圆上的点,这
样,区分性比 x,y 轴的方法要好!
所以我们的做法就是求得一个 k 维特征的投影矩阵,这个投影矩阵可以将特征从
高维降到低维。投影矩阵也可以叫做变换矩阵。新的低维特征必须每个维都正交,特
征向量都是正交的。通过求样本矩阵的协方差矩阵,然后求出协方差矩阵的特征向量,
这些特征向量就可以构成这个投影矩阵了。特征向量的选择取决于协方差矩阵的特征
值的大小。经过 PCA 分析,一个多变量的复杂问题被简化为低维空间的简单问题。
可以利用这种简化方法进行作图,形象地表示和分析复杂问题。。
PCA 的目标
PCA 的 目标 是寻 找 r ( r
的维数从 N 降到 3 ,具体的 PCA 分析步骤如下:
(1) 第一步计算样本矩阵 X 协方差矩阵 S :
(2) 第 二 步 计 算 协 方 差 矩 阵 S 的 特 征 向 量 e1,e2,…,eN 及 其 对 用 的 特 征 值 , i =
1,2,…,N。把特征值从大到小排序,取前三位特征值对应的特征向量组成投影矩阵 W 。
(3)第三步投影数据到 W 组成的空间之中。现在数据可以在三维空间中展示为云
状的点集。
对于 PCA,确定新变量的个数 r 是一个两难的问题。我们的目标是尽可能减小
r ,因为 r 小,则数据的维数低,便于分析,同时也降低了噪声,但 r 过度小的话可
能丢失一些有用的信息。究竟如何确定 r 呢?这需要进一步分析每 个主元素对信息
的贡献。
贡献率表示所定义的主成分在整个数据分析中承担的主要意义所占的比重,当取
前 r 个主成分来代替原来全部变量时,累计贡献率的大小反应了这种取代的可靠性,
累计贡献率越大,可靠性越大;反之,则可靠性越小。一般要求累计贡献率达到 70%
以上。
举一个例子:
对于一个训练集,100 个对象模板,特征是 10 维,那么我们可以建立一个 10*100
的矩阵作为样本。求这个样本的协方差矩阵,得到一个 10*10 的协方差矩阵,然后求
出这个协方差矩阵的特征值和特征向量,应该有 10 个特征值和 10 个特征向量,我们
根据特征值的大小,取前四个特征值所对应的特征向量,构成一个 10*4(投影矩阵)
的矩阵,这个矩阵就是我们要求的特征矩阵,100*10 的样本矩阵乘以这个 10*4 的特
征矩阵,就得到了一个 100*4 的新的降维之后的样本矩阵,每个特征的维数下降了。
当给定一个测试的特征集之后,比如 1*10 维的特征,乘以上面得到的 10*4 的特
征矩阵,便可以得到一个 1*4 的特征,用这个特征去分类。
所以做 PCA 实际上 是求得这个投 影矩阵,用 高维的特征 乘以这个投 影矩阵,便
可以将高维特征的维数下降到指定的维数。
PCA 应用实例
随着计算机的大型化、高速化和人脸识别的方法的发展,人们提出了
许多人脸自动识别的系统。PCA(主成分分析)算法是人脸识别中比较新的一
种算法,该算法的优点是识别率高,识别速度快。