本文记录的目的是方便自己学习和复习,有误之处请谅解,欢迎指出。
主成分分析(Principal Component Analysis,PCA)是中最常用的降维算法之一,也可以用于数据压缩、去除冗余信息、消除噪声等方面。PCA的目的是找出一组低维数据来代表原高维数据,且保留原始数据中的主要信息。例如有m个数据集,n维特征,我们希望将n维特征降低到d维,而且让损失的信息尽可能小,具体怎么做呢?
首先通过PCA找出第1个新坐标使得原始数据中方差最大;然后找出第2个新坐标与第1个坐标正交平面使得方差最大;再找出第3个坐标与1,2坐标正交平面使得方差最大...,以此类推,得到d个新维度特征。
一、算法流程
直接一点:就是求出样本集的协方差矩阵的前d个特征值对应的特征向量,组成矩阵,然后对每个样本进行变换。
1)特征去中心化,即每个维度特征减去其均值:
2)计算协方差矩阵
3) 对协方差矩阵进行特征值分解
4)取前d个最大的特征值对应的特征向量组成矩阵。
5)对每个样本数据进行变换,
6)得到降维后的数据
二、实例
假定现有10个二维数据集(2.5,2.4), (0.5,0.7), (2.2,2.9), (1.9,2.2), (3.1,3.0), (2.3, 2.7), (2, 1.6), (1, 1.1), (1.5, 1.6), (1.1, 0.9),需要用PCA降到1维。
首先样本去中心化,这里样本的均值为(1.81, 1.91),所有的样本减去这个均值向量后,即中心化后的数据集为(0.69, 0.49), (-1.31, -1.21), (0.39, 0.99), (0.09, 0.29), (1.29, 1.09), (0.49, 0.79), (0.19, -0.31), (-0.81, -0.81), (-0.31, -0.31), (-0.71, -1.01)。
求协方差矩阵:
求出特征值为(0.0490833989, 1.28402771),对应的特征向量分别为:
由于最大的k=1个特征值为1.28402771,对应的特征向量为。这也就是特征矩阵。
对每个数据样本进转换得到降维后的数据(-0.827970186, 1.77758033, -0.992197494, -0.274210416, -1.67580142, -0.912949103, 0.0991094375, 1.14457216, 0.438046137, 1.22382056)