8.11 实例:主成分分析

主成分分析(principal components analysis,PCA)是一个简单的机器学习算法,可以通过基础的线性代数知识推导。
假设在 Rn 空间中我们有 m 个点{x(1),,x(m)},我们希望对这些点进行有损压缩。有损压缩表示我们使用更少的内存,但损失一些精度去存储这些点。我们希望损失的精度尽可能少。
一种编码这些点的方式是用低维表示。对于每个点 x(i)Rn ,会有一个对应的编码向量 c(i)Rl 。如果 l n小,那么我们便使用了更少的内存来存储原来的数据。我们希望找到一个编码函数,根据输入返回编码, f(x)=c ;我们也希望找到一个解码函数,给定编码重构输入, xg(f(x))
PCA由我们选择的解码函数而定。具体地,为了简化解码器,我们使用矩阵乘法将编码映射回 Rn 。即 g(c)=Dc ,其中 DRn×l 是定义解码的矩阵。
目前为止所描述的问题,可能会有多个解。因为如果我们按比例地缩小所有点对应的编码向量 ci ,那么我们只需按比例放大 D:,i ,即可保持结果不变。为了使问题有唯一解,我们限制 D 中所有列向量都有单位范数。
计算这个解码器的最优编码可能是一个困难的问题。为了使编码问题简单一些,PCA限制 D 的列向量彼此正交(注意,除非l=n,否则严格意义上 D 不是一个正交矩阵)。
为了将这个基本想法变为我们能够实现的算法,首先我们需要明确如何根据每一个输入x得到一个最优编码 c 。一种方法是最小化原始输入向量 x 和重构向量g(c)之间的距离。我们使用范数来衡量它们之间的距离。在PCA算法中,我们使用 L2 范数:

c=argminc||xg(c)||2

我们可以用平方 L2 范数替代 L2 范数,因为两者在相同的值 c 上取得最小值。这是因为L2范数是非负的,并且平方运算在非负值上是单调递增的。
c=argminc||xg(c)||22

该最小化函数可以简化成
(xg(c))T(xg(c))

(式 L2 范数的定义)
=xTxxTg(c)g(c)Tx+g(c)Tg(c)

(分配率)
=xTx2xTg(c)+g(c)Tg(c)

(因为标量 g(c)Tx 的转置等于自己)
因为第一项 xTx 不依赖于 c ,所以我们可以忽略它,得到如下的优化目标:
c=argminc2xTg(c)+g(c)Tg(c)

更进一步,我们代入 g(c) 的定义:
c=argminc2xTDc+cTDTDc=argminc2xTDc+cTIlc

(矩阵 D 的正交性和单位范数约束)
=argminc2xTDc+cTc

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值