2.12 主成分分析(上)

声明:该文章翻译自MIT出版的《DEEP LEARNING》,博主会定期更新文章内容。由于博主能力有限,中间有过错之处希望大家给予批评指正,一起学习交流。

一个简单的机器学习算法,主成分分析(PCA) 可以只使用基本的线性代数知识推导出来。

假设我们有 m 个点 {x(1),...x(m)}的集合,它们都属于 Rn 。假设我们想对这些点应用有损压缩,例如,我们想找到一种方式,用更少的存储来保存这些点,但这样做可能会丢失精度。我们希望尽可能减少精度的损失。

我们编码这些点的一种方式是将它们表示成低维版本。对每个点 x(i)Rn ,我们找到一个对应的码向量 c(i)Rl 。如果 l n 小,那么存储这些点比原始数据耗费更少的存储。我们想找到一些编码函数,可以对输入产生一个码, f(x)=c 还有一些解码函数,对于给定的码重构它的输入,即, xg(f(x))

PCA 是根据解码函数的选择定义的。特别地,为了使解码器简单,我们选择矩阵乘法将码映射回 Rn 。让 g(c)=Dc ,其中 DRn×l 是定义解码地矩阵。
为解码器计算最优码是非常棘手的问题。为了让编码容易,PCA限制 D 的列是相互正交的。(注意 D 不是一个正交矩阵除非 l=n

到目前为止讨论的问题,有许多可行的解决方法,因为如果我们按比例减小所有点的 ci ,那么我们可以增加 D:,i 的规模。为了给出一个唯一的解,我们限制 D 的所有列都有单位范数。

为了将这个基本想法转成我们可以实现的算法,我们要做的第一件事是搞清楚如何对每个输入点 x 产生最优码点 c 。一种方式是最小化输入点 x 和它的重构 g(c) 之间的距离。我们可以使用范数来衡量这个距离。在主成分算法里,我们使用 L2 范数:

c=argminxg(c)2
我们可以转换成 L2 范数的平方而不是 L2 范数本身,因为都是最小化到相同的 c 值。这是因为 L2 范数是非负的,平方算子对于非负参数是单调递增的。
c=argminxg(c)22
这个函数可以简化为
(xg(c))T(xg(c))
(根据 L2 范数定义)
=xTxxTg(c)g(c)Tx+g(c)Tg(c)
(根据分配律)
=xTx2xTg(c)+g(c)Tg(c)
(根据标量等于本身的转置)。
我们现在改变函数形式,省去第一项,因为该项不依赖于 c :
c=argmin2xTg(c)+g(c)Tg(c)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值