返回介绍

2.12 实例:主成分分析

发布于 2024-01-20 12:27:18 字数 6527 浏览 0 评论 0 收藏 0

主成分分析(principal components analysis,PCA)是一个简单的机器学习算法,可以通过基础的线性代数知识推导。

假设在空间中有m个点,我们希望对这些点进行有损压缩。有损压缩表示我们使用更少的内存,但损失一些精度去存储这些点。我们希望损失的精度尽可能少。

编码这些点的一种方式是用低维表示。对于每个点,会有一个对应的编码向量。如果l比n小,那么我们便使用了更少的内存来存储原来的数据。我们希望找到一个编码函数,根据输入返回编码,f(x)=c;我们也希望找到一个解码函数,给定编码重构输入,x≈g(f(x))。

PCA由我们选择的解码函数而定。具体来讲,为了简化解码器,我们使用矩阵乘法将编码映射回,即g(c)=Dc,其中是定义解码的矩阵。

到目前为止,所描述的问题可能会有多个解。因为如果我们按比例地缩小所有点对应的编码向量ci,那么只需按比例放大D:,i,即可保持结果不变。为了使问题有唯一解,我们限制D中所有列向量都有单位范数。

计算这个解码器的最优编码可能是一个困难的问题。为了使编码问题简单一些,PCA限制D的列向量彼此正交(注意,除非l=n,否则严格意义上D不是一个正交矩阵)。

为了将这个基本想法变为我们能够实现的算法,首先我们需要明确如何根据每一个输入x得到一个最优编码c。一种方法是最小化原始输入向量x和重构向量g(c)之间的距离。我们使用范数来衡量它们之间的距离。在PCA算法中,我们使用L2范数

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

该最小化函数可以简化成

(式(2.30)中L2范数的定义)

(分配律)

(因为标量的转置等于自己)。

因为第一项不依赖于c,所以我们可以忽略它,得到如下的优化目标:

更进一步,代入g(c)的定义:

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

我们可以通过向量微积分来求解这个最优化问题(如果你不清楚怎么做,请参考第4.3节)。

这使得算法很高效:最优编码x只需要一个矩阵-向量乘法操作。为了编码向量,我们使用编码函数

进一步使用矩阵乘法,我们也可以定义PCA重构操作:

接下来,我们需要挑选编码矩阵D。要做到这一点,先来回顾最小化输入和重构之间L2距离的这个想法。因为用相同的矩阵D对所有点进行解码,我们不能再孤立地看待每个点。反之,我们必须最小化所有维数和所有点上的误差矩阵的Frobenius范数:

为了推导用于寻求D的算法,我们首先考虑l=1的情况。在这种情况下,D是一个单一向量d。将式(2.67)代入式(2.68),简化Dd,问题简化为

上述公式是直接代入得到的,但不是表述上最美观的方式。在上述公式中,我们将标量放在向量d的右边。将该标量放在左边的写法更为传统。于是我们通常写作

或者,考虑到标量的转置和自身相等,我们也可以写作

读者应该对这些重排写法慢慢熟悉起来。

此时,使用单一矩阵来重述问题,比将问题写成求和形式更有帮助。这有助于我们使用更紧凑的符号。将表示各点的向量堆叠成一个矩阵,记为,其中。原问题可以重新表述为

暂时不考虑约束,我们可以将Frobenius范数简化成下面的形式:

(式(2.49))

(因为与d无关的项不影响arg min)

(因为循环改变迹运算中相乘矩阵的顺序不影响结果,如式(2.52)所示)

(再次使用上述性质)。

此时,我们再来考虑约束条件

(因为约束条件)

这个优化问题可以通过特征分解来求解。具体来讲,最优的d最大特征值对应的特征向量。

以上推导特定于l=1的情况,仅得到了第一个主成分。更一般地,当我们希望得到主成分的基时,矩阵D由前l个最大的特征值对应的特征向量组成。这个结论可以通过归纳法证明,我们建议将此证明作为练习。

线性代数是理解深度学习所必须掌握的基础数学学科之一。另一门在机器学习中无处不在的重要数学学科是概率论,我们将在下一章探讨。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文