首页 > 试题广场 >

讲一下PCA

总结一下PCA的算法步骤:

设有m条n维数据。

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据

实例1


为例,我们用PCA方法将这组二维数据其降到一维。

因为这个矩阵的每行已经是零均值,这里我们直接求协方差矩阵:


然后求其特征值和特征向量,具体求解方法不再详述,可以参考相关资料。求解后特征值为:


其对应的特征向量分别是:


其中对应的特征向量分别是一个通解,可取任意实数。那么标准化后的特征向量为:


因此我们的矩阵P是:


可以验证协方差矩阵C的对角化:



最后我们用P的第一行乘以数据矩阵,就得到了降维后的表示:



PCA算法的主要优点有:

  • 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。
  • 各主成分之间正交,可消除原始数据成分间的相互影响的因素。
  • 计算方法简单,主要运算是特征值分解,易于实现。

PCA算法的主要缺点有:

  • 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
  • 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。



编辑于 2019-09-29 09:50:48 回复(0)
PCA的原理是选择最靠近数据的超平面,将数据投影到其上,对于轴的选择以保留最大的差异性为优。
可以使用奇异值分解(SVD)来找到主成分。
发表于 2021-03-10 09:26:25 回复(0)

PCA是指数据特征纬度过大,且之间存在相关性时采用降为的方法来使特征信息损失最小的方法

1.normalize

2. cov = 1/m XtX

3. SVD求eigen和eigen vetor

4.取eigen和大于95对于的vector

5 X x V

发表于 2020-01-31 03:09:17 回复(0)

将高维特征,通过线性映射到低维,保证数据方差最大,使得某一维表示的新特征信息更多。

计算流程:中心化,计算协方差矩阵,协方差矩阵奇异值分解,得前m个每个特征值的特征向量作为低维空间的表示向量,然后ex得到新的每一维度新主元数据

编辑于 2019-10-31 07:52:08 回复(0)

设原始矩阵X对应的协方差矩阵为C,而P是一组基按照行组成的矩阵,设,则Y为X对P做基变换后的数据,设Y的协方差矩阵为D,可以推导一下D与C的关系:

显然,我们要找的P不是别的,就是能让协方差矩阵对角化的P.

  • 将原始数据按列列组成nm列矩阵X
  • X的每一行(代表⼀个属性字段)进⾏零均值化,即减去这⼀行的均值
  • 求出协⽅方差矩阵
  • 求出协⽅方差矩阵的特征值及对应的特征向量量
  • 将特征向量按对应特征值⼤小从上到下按⾏排列成矩阵,取前K⾏组成矩阵P
  • 即为降维到K维后的数据
编辑于 2019-06-05 15:11:07 回复(1)