2.12 主成分分析(下)

来源:互联网 发布:西瓜数据集3.0 编辑:程序博客网 时间:2024/06/06 01:00

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

为了进一步分析,我们必须替换g(c)的定义:

c=argminc2xTDc+cTDTDc
=argminc2xTDc+cTIlc
(对D施加正交和单位范数约束)
=argminc2xTDc+cTc
我们可以用矢量微积分解决这个最优化问题(该部分内容参见4.3):
(2xTDc+cTc)=0
2DTx+2c=0
c=DTx(2.2)
这是一个好消息:我们可以只用一个矩阵向量操作来最优化编码x 。为了编码一个向量,我们应用编码函数:
f(x)=DTx
进一步使用矩阵乘法,我们也可以定义PCA重构操作:
r(x)=g(f(x))=DDTx
接下里,我们需要选择编码矩阵D。要做到这一点,我们需要回顾最小化输入和重构之间L2距离的想法。然而,因为我们使用相同的矩阵来解码所有点,我们就不能孤立考虑每个点。我们必须最小化误差矩阵的Frobenius范数:
D=argminDi,j(x(i)jr(x(i))j)2DTD=Il(2.3)
为了导出寻找D的算法,我们先考虑l=1的情况。在这种情况下,D只是一个单一的矢量d。将2.2代入2.3,并将D化为 d
d=argmindi||x(i)ddTx(i)||22||d||2=1
上面是带入之后最直接的化简方式,但是对于写等式来说风格不悦目。它把标量放在了矢量的右边。而更方便的方式是将标量洗漱放在矢量的左边。因此,我们通常将等式写成下面的形式:
d=argmini||x(i)dTx(i)d||22||d||2=1
或者,根据标量的转置等于本身
d=argmini||x(i)x(i)dd||22||d||2=1
上面的方式使得我们能够用更紧凑的符号来表示。让XRm×n表示所有用来描述点的向量所定义的矩阵,这样的话Xi,:=x(i)。我们现在将问题重写为:
d=argmin||XXddT||2F||d||2=1
暂时忽略限制,我们可以将Frobenius范数化为:
argmin||XXddT
=argminTr((XXddT)T(XXddT))
(Frobenius范数的另一种定义)
=argminTr(XTXXTXddTddTXTX+ddTXTXddT)
=argminTr(XTTr(XTXddT)Tr(ddTXTX+Tr(ddTXTXddT)
=argminTr(XTXddT)Tr(ddTXTX+Tr(ddTXTXddT)
(因为第一项与d无关,不会影响最小化)
=argmin2Tr(XTXddT)+Tr(ddTXTXddT)
(因为在迹中我们可以循环矩阵的顺序)
=argmin2Tr(XTXddT)+Tr(XTXddTddT)
(同样利用上面的性质)。现在,加上限制:
=argmin2Tr(XTXddT)+Tr(XTXddTddT)||d||2=1
=argmin2Tr(XTXddT)+Tr(XTXddT)||d||2=1
(由于限制条件)
=argminTr(XTXddT)||d||2=1
=argmaxTr(XTXddT)||d||2=1
=argmaxTr(dTXTXd)||d||2=1
这个最优化问题可以用特征分解解决。特别地,最优解dXTX对应于最大特征值的特征向量给出。

对于一般情况l>1D由对应于最大特征值的l特征向量给出。这个可以用归纳法证明。

0 0