PCA,到底在做怎么着

很久在此之前写过一篇 PCA
的小白教程,可是出于当时对
PCA 的知情流于表面,所以只是介绍了一晃 PCA
的算法流程。今日在数图课上偶然听到 PCA
在图像压缩上的行使,突然精晓了有个别实质性的东西,那里趁热记录一波。

图片 1

PCA 算法

第3仍然简单回想下 PCA 的算法流程。

我们把样本数据 \(x\)
归一化后,总括其协方差矩阵 \(C_x\),然后计算 \(C_x\) 的特征向量,构造出一个特征向量矩阵
\(A\),最后把 \(x\)
通过该矩阵映射到贰个新的上空,获得的向量 \(y\) 正是能显示 \(x\) 首要成分的向量了。

PCA 在做怎么样

那么,那种空间映射有怎么着含义呢?难题要回去协方差矩阵 \(C_x\)
上。大家清楚,协方差矩阵是贰个对称矩阵,在线性代数中,对称矩阵的特征向量是互相正交的。而作者辈把
\(x\) 通过这么些特征向量矩阵映射到
\(y\),其实正是把原本的多寡由最初的
\([e_1, e_2, \dots, e_n]\)
的单位坐标系,调整到这一个正交的特征向量组成的坐标系下,如下图所示:

图片 2

那种坐标变换的含义又在哪吧?

即便仔细分析,我们就会意识,那些新取得的向量 \(y\) 的均值为 \(0\),而且它们的协方差矩阵为:
\[ C_y=AC_xA^T=\begin{bmatrix}
\lambda_1 & & & 0 \\ & \lambda_2 & & \\ & & \ddots & \\ 0 & &
& \lambda_n \end{bmatrix} \]
这里,\(A\) 是由 \(C_x\)
的特征向量组成的矩阵,它的率先行表示最大特征值对应的特征向量,第3行代表第贰大特征值对应的特征向量。\(C_y\) 对角线上的 \(\lambda_k\) 代表 \(C_x\)
的特征值,而且是遵从从大到小排序的(\(\lambda_1 > \lambda_2 > \dots >
\lambda_n\))。

本条新的协方差矩阵有一个很要紧的天性,除了对角线上的要素,其余因素通通是
0。要精晓,协方差矩阵中,对角线上的因素表示方差,非对角线上的因素表示协方差。那表达,经过
PCA 处理后,我们把本来的数据 \(x\),转变成各类分量之间没有其余涉及(协方差为
0)的数据 \(y\)!笔者觉着那多亏 PCA
的精髓所在,也是咱们采纳 PCA 算法的根本目的。

除此以外,PCA 还平日用来降维处理,那么为啥 PCA 的降维效果会那么好?

先是要简雅培(Beingmate)点,降维不是无论都能降的,最好的降维方法是要尽恐怕保存重要的新闻,而忽略次要的新闻。在
PCA
中,我们一般是对协方差矩阵的表征值按从大到小排序,然后放任一些比较小的特征值(以及那么些特征值对应的特征向量),那样重复总结获得
\(y\)
后,它的协方差矩阵恐怕是以此样子的:
\[ C_y=\begin{bmatrix} \lambda_1 & & &
0 \\ & \lambda_2 & & \\ & & \ddots & \\ 0 & & & \lambda_k
\end{bmatrix} \]
(大家扬弃掉了 \(n-k\)
个特征向量,将数据由 \(n\) 维降到
\(k\) 维)

要掌握,那个特征值(大概说方差)都是遵从从大到小排序的,相当于说,大家在降维时,丢弃掉了那3个特征值相比小的轻重。这么做是吻合常理的,因为数量的方差越大,申明分布越广,那样,大家还原这几个数量的难度是越大的,而方差越小,注明数据分布越集中,还原它们的难度就越小(方差为
0
的话,用3个数就足以表示全体样本了)。所以,降维时,大家尽量保留这几个方差大的数量,而忽视那多少个方差小的。本文开篇的图中付出三个印象的演说,大家把2个二维的数额映射到一维时,也是先行映射到方差大的那一维上,那样,原数据的分布规律能够最大限度的保存下来,信息的保留也是最完好的。