统计学习 PCA主成分分析
【信息的表示与降维】
通常情况下,数据被表示成一组记录的组合,在机器学习领域通常用一维列向量表示一组特征。而当数据需要的特征过多时,在面对成百上千的维度情况下,算法的开销显著增大,因为数据的降维显得非常有必要,降维意味着部分数据的丢失,不过由于数据本身之间具备一定的相关性,因为采用合理的方法使得损失降低
例如:学生的数据包含2列A和B A列中男生取1而女生取0 B列中男生取0而女生取1 那么这两列数据完全相关,删除其中一条不会造成信息的丢失,这是极端情况
例如:一个商品信息记录中,“浏览量”和“访客数”具备较大的相关性,而“加入购物车数目”和“购买量”同样具备很强的相关性,因此删除其中一条信息不会造成过多的信息缺少
由此可见,数据的降维需要回答以下几个问题?
删除哪一列能够使得损失的信息尽可能少?
或者不是简单的删除,而是将原始信息组合压缩,使得信息损失尽可能小?
如何度量信息的损失大小?
原始数据具体如何降维操作?
【基变换】
通常计算机中数据被描述为一组向量
向量的内积即为对应坐标乘积之和,其物理意义是一个向量在另一个向量上投影与另一个向量长度的乘积
所谓基,即一组线性无关的单位向量,通常是正交的,如二维空间中的(0 1)和(1 0)
基变换,以(3 2)为例子,将(3 2)转换成新的基上的坐标,就是用(3 2)分别与两个基做内积计算
继续推广到多个记录 将多个列向量组合起来
那么一组标准坐标系下的向量经过左乘矩阵转换为新基下的坐标
因此矩阵相乘的物理意义是:
将右边矩阵的每一个列向量变换到左边矩阵以每一行行向量为基的空间中去
【降维优化目标】
由上面可以看到当左边变换矩阵的行数也就是基的数目小于右边列向量(代表一条记录)的大小时,数据将被降维,需要解决的问题变化为如何寻找到这样的基使得尽可能的保存信息
给定5条记录,每一条记录(列向量)包含两维
首先将各个字段减去所在维度的均值,这样每一维度的均值变为0
在二维平面坐标系中为以下样子
若所求要求将数据降低为一维,那么如何选取新的基
假如选取X 那么所以点将简单投影到X轴,会发现原本不同的两个点投影到一个位置,那么这种降维方式显然是不可取的
如何尽可能不丢失原先信息,或者说各个点尽可能的分隔开,那么即使得投影后的投影值尽可能分散
方差:描述数据的分散程度,那么即投影后的数据方差尽可能的大
协方差:描述两个字段的相关性,当协方差为0那么 两个字段完全独立
优化目标:
将一组N维向量降低为K维,其目标是选择K个单位正交基,使得原始的数据投影到这组基上后,
1 各个字段两两的协方差为0
2 字段的方差尽可能大
【PCA算法】
设有m条n维数据
1 将原始数据按照列组成m列n行矩阵X
2 将X的每一行(一个特征)求得均值,并减去均值
3 求出协方差矩阵
4 求出协方差矩阵的特征值和对应特征向量
5 按照特征值从大到小选取前K条特征向量一行行(每一行是一个新基)组成变换矩阵P
6 Y=PX即为降维后的数据
例子:
将其降低到一维
求得协方差矩阵
计算特征值 2 和 2.5
所对应得特征向量并进行标准化
降维过程:
在二维坐标系得投影结果:
【PCA分析特点】
PCA本质是将方差最大得方向作为主要特征,并且在各个正交方向上将数据离相关,使得在不同方向上没有相关性
不足之处,对于非线性得高次相关性适用性差,需要Kernel核函数转换。并且由于无需其他参数,所以PCA分析更显通用性,不具备特殊得调参和优化