利用PCA降维的手工计算实例

  PCA 的原理相信大家十分熟悉了已经,但是很多人没有真正的进行过相关的推到。在这里本文将举一个利用 PCA 降维的手工计算实例。

1 .问题的描述

  已知现在有一个二维矩阵如下所示

这里写图片描述

这个是一个已经去掉均值的矩阵。其中每一行是一个维度,而每一列是一个样本。去均值的运算是针对每一个维度进行的运算,也就是说每一行减去这一行的均值。

2. 计算过程

2.1 计算协方差矩阵

  由于已经进行了去均值化,所以可以直接求取协方差矩阵。需要注意的是,协方差矩阵计算的是每一个维度之间的协方差,不是计算样本之间的协方差,所以本例中的协方差矩阵为一个2×2的矩阵。

这里写图片描述

在这里需要注意的是,通过MATLAB计算协方差矩阵与手工计算有两点不同:
  (1) 这里前面乘以的是 15 ,这个是有偏估计,但是MATLAB计算的时候乘以的是 14 ,计算的是无偏估计。
  (2) 在 MATLAB 中,默认每一列是一个维度。所以如果输入原始的数据(2行5列)会返回一个5行5列的协方差矩阵。所以应该先对矩阵进行转置在求解协方差矩阵。

2.2 计算协方差的特征值和特征向量

  通过求解方程

这里写图片描述

可以得到两个特征值 λ=25 λ=2 。通过求解下面的矩阵,可以得到协方差矩阵的特征向量。

这里写图片描述

将两个特征向量进行归一化,得到的特征向量如下

这里写图片描述

求中第一个特征向量为特征值 λ=2 的特征向量,第二个特征向量为特征值 λ=25 的特征向量。

2.3 构建变换矩阵并降维

  到这里只需要将变换矩阵与原始矩阵相乘既可以完成降维的工作,在进行降维的过程中有两个容易出现的易错点。首先,特征向量的先后顺序要按照特征值的大小顺序进行排列;其次,如果原始数据的矩阵每一行是一个维度,每一列是一个样本的话,这个时候变换矩阵中的每一行是一个特征向量,如下变换矩阵P

这里写图片描述

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

这里写图片描述

如果原始的数据矩阵是每一行是一个样本,而每一列是一个维度的话,此时的变换矩阵中每一列是特征向量,即

这里写图片描述

P的第一列乘以数据矩阵,就得到了降维后的表示:

这里写图片描述

3. 参考文献

[1]《PCA算法》

  • 25
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值