PCA的作用
主成分分析简称 PCA(Principal Component Analysis),有两个大的用处
1.Clustering
把复杂的多维数据点,简化成少量数据点,易于分簇
2.降维
降低高维数据,简化计算
降低维度,压缩,去噪
原来的数据集是d维,转换成k维的数据,k<d
新的k维数据尽可能多的包含原来d维数据的信息
数据压缩
PCA求解
- 2维降维到1维: 寻找一个一维向量的方向,数据在这个向量上的投影能最小化损失
- 从n维降维到k维:寻找一个k维向量,数据在这个k维空间的投影能最小化损失,最大程度的包含原来n维数据的信息
如何选投影方向
二维降到一维的问题,要在二维平面中选择一个方向,将所有数据都投影到这个方向所在直线上,用投影值表示原始记录。
如何选择这个方向,才能尽量保留最多的原始信息呢?
- 左图5个数据点,投影到x轴,y轴都不是好的选择。
直观看:投影后的投影值尽可能分散。
这种分散程度,用数学上的方差来表述
方差是用来度量点集分散程度的指标
对数据做均值化
例子中有5条记录,2个维度
每一列为一条数据记录,一行为一个字段维度
第一个字段均值2,第二个字段均值3
均值化处理,每个字段内所有值都减去字段均值,其结果是将每个字段都变为均值为0
协方差矩阵
- 协方差是衡量2个维度之间是否有关系,2个维度之间线性相关性有多大
- 案例如下:
PCA目标函数推导1
我们的目的,是要找一个线性变化,让数据投影的方差最大化,假设先找一个线性变化u1,对xi做线性变化的投影
是投影后的向量
投影的均值:
投影的方差:
S是协方差矩阵:
PCA目标函数推导2
#利用拉格朗日变换
特征值和特征向量求解
至此可证明,我们要找的x 投影后的方差就是协方差矩阵的特征值,而我们想要的最大方差,显然就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量
协方差的特征值:
特征向量:
将所有特征值从大到小排列,将相应的特征向量随之排列,可取特征向量的前K行组成的矩阵
乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y
PCA算法步骤
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据
PCA求解实例
特征脸示例
将高斯核函数(rbf)应用到PCA
Kernal PCA算法步骤
LDA(监督式的学习)
LDA(Linear Discriminant Analysis),中文名为“线性判别分析”。
LDA的中心思想就是最大化类间距离以及最小化类内距离
LDA理论推导
== 至此,我们最大化的目标就对应了矩阵的最大特征值,而投影方向就是 这个特征值对应的特征向量可将LDA从二分类扩展至多分类高维情况==
LDA算法流程
PCA与LDA的比较
-
相似点
从过程来看,PCA与LDA有很大的相似性,最后其实都是求某一个矩阵的特征值,投影矩阵即为该特征值对应的特征向量 -
差异
PCA为非监督降维,LDA为有监督降维
PCA希望投影后的数据方差尽可能的大(最大可分性),因为其假设方差越大,则所包含的信息越多;而LDA则希望投影后相同类别的组内方差小,而组间方差大。LDA能合理运用标签信息,使得投影后的维度具有判别性,不同类别的数据尽可能的分开。
有标签就尽可能的利用标签的数据(LDA),而对于纯粹的非监督任务,则还是得用PCA进行数据降维。
参考资料
- PCA的数学原理
- PCA与LDA比较
- LDA线性判别原理解析
- Dimensionality Reduction Stanford CSEP 546
- 贪心机器学习高阶班