主成分分析(PCA)是最常见的降维算法,通常用于数据压缩以及噪音过滤
比如我们可以通过PCA将100维的向量最后用10维来表示,那么压缩率为90%,同时还可以保证数据的特性损失尽可能的小
1)PCA算法流程
在详细展开讲之前,先了解一下几个基本数学符号的定义:
表示第i个样本数据(这个数据是一个N维向量)
表示第i个样本的第j个特征
表示由所有样本数据的第j个特征变量组成的一个向量
了解这些数学符号的定义非常重要,否则后面的推导公式很容易混乱
假设我们有一个n维的样本数据集 ,其中每一个数据都是n维的 ,我们要把维度从n维降到k维:
- 对所有样本进行归一化
- 计算协方差矩阵(covariance matrix),其中 X 的定义非常重要
- 计算协方差矩阵的特征向量(eigenvectors),通常用SVD分解,得到 [U, S, V]
- 从U中选取前k个最大特征值对应的特征向量,组成一个新的特征向量矩阵
- 对所有样本,求的新的降维后的样本,

2)归一化
归一化的目的,主要是为了简化计算,让计算过程更加human readable,常用的手段是,所有样本,都减去样本均值
如果特征是在不同的数量级上,我们还需要将其除以标准差
3)计算协方差矩阵
方差用来度量单个随机变量的离散程度,协方差用来刻画两个随机变量的相似程度。计算协方差矩阵(covariance matrix),其中 X 指的不是样本数据,而是特征
由于我们是 n 维数据,因此,协方差矩阵计算的是:
方差公式:
其中 n 是样本数量, 是所有观测样本的均值
参考文章:
- https://zhuanlan.zhihu.com/p/260186662