PCA(主成分分析)推导过程
假设在
n维空间内有
m个点{
x(1),x(2),……,x(m) }, 为了降低维度,对于每一个
n维向量的样本点
x(i),我们希望找到一个对应
x(i)的
l维编码向量
c(i)。
假设编码函数为
c=f(x),通过这个编码函数将原始的
m维数据降维至
l维。
假设解码函数维
g(c)=g(f(x))≈x,通过将上一步得到的编码向量解码至
n维并与原始向量作比较得到误差。
用矩阵形式表示函数,则
g(c)=Dc,其中
D是一个
n×l的矩阵。
但是我们发现,如果我们按比例缩小所有点对应的编码向量
c中的第
i个位置的元素
ci,那么只要等比例放大
D:,i,则解码后的结果不变,如:
假设
n=3,m=4,l=2,即样本点有4个,它们的维度为3,经过编码后,它们的维度被降低到了2维。
C1=[15263748]
D1=⎣⎡147258⎦⎤
则通过
g(c)=Dc解码可得
g(c)1=⎣⎡112947142862174777205692⎦⎤
而在按0.5的比例缩小所有样本点的初始向量的第一个维度后,
C2=[0.55161.5728]
此时只要将
D1的第一列放大两倍至
D2:
D2=⎣⎡2814258⎦⎤
即可得:
g(c)2=⎣⎡112947142862174777205692⎦⎤=g(c)1
因此,每个样本点编码后的向量不唯一。
为了使问题具有唯一解,我们限制
D中所有列向量都有单位范数。
为了使编码问题更加简单,
PCA限制
D的列向量彼此正交。
为了为每个样本点寻找一个最优编码向量
c∗,我们使用
L2范数的平方来衡量原始向量
x和重构向量
g(c∗)的距离。
即对于一个样本点来说,有:
c∗=cargmin∣∣x−g(c)∣∣22
=(x−g(c))T(x−g(c))
=xTx−xTg(c)−g(c)Tx+g(c)Tg(c)
由于
xTg(c)和
g(c)Tx都是标量,故二者相等。且由于第一项
xTx不依赖于
c,可以忽略,所以:
c∗=cargmin−2xTg(c)+g(c)Tg(c)
用矩阵形式表示
g(c)后,得到:
c∗=cargmin−2xTDc+cTDTDc
由于
DTD=Il,
c∗=cargmin−2xTDc+cTc
将
−2xTDc+cTDTDc对
c求导得:
▽c(−2xTDc+cTc)=0
−2DTx+2c=0
c=DTx
故编码操作被化简为一个简单的矩阵-向量乘法操作。即:
f(x)=DTx
进一步,PCA解码操作为
r(x)=g(DTx)=DDTx
接下来,我们要挑选编码矩阵
D。
因为要用相同的矩阵D对所有点进行编码,我们不能再孤立地看待每个点。反之,我们必须最小化所有维数和所有点上的误差矩阵的
Frobenius范数,即:
D∗=Dargmini,j∑(xj(i)−r(x(i))j)2
subject to DDT=Il
首先,我们考虑
l=1的情况,即将
n维原始向量编码为1维向量。此时
D为一个单一向量
d。则问题被简化为:
d∗=dargmini∑∣∣x(i)−ddTx(i)∣∣22subject to ∣∣d∣∣2=1
通常,标量
dTx(i)应放在向量
d的左边,且考虑到标量的转置和其自身相等,上式可以写作:
d∗=dargmini∑∣∣x(i)−x(i)Tdd∣∣22subject to ∣∣d∣∣2=1
此时,将表示各点的
m个向量上下堆叠成一个
m×n的矩阵,记为
X,其中,
Xi,:=x(i)T。所以这个问题可以被重新表述为:
d∗=dargmin∥∣X−XddT∣∣F2subject to ∣∣d∣∣2=1
此处由
x(i)−x(i)Tdd变为
X−XddT是合理的,例如,
n=3,m=3,设:
x(1)=⎣⎡111⎦⎤x(2)=⎣⎡222⎦⎤x(3)=⎣⎡333⎦⎤
d=⎣⎡555⎦⎤
则:
X=⎣⎡123123123⎦⎤
x(1)−x(1)Tdd=⎣⎡111⎦⎤−[111]⎣⎡555⎦⎤⎣⎡555⎦⎤=⎣⎡−74−74−74⎦⎤
同理可得:
x(2)−x(2)Tdd=⎣⎡−149−149−149⎦⎤x(3)−x(3)Tdd=⎣⎡−224−224−224⎦⎤
而
X−XddT=⎣⎡123123123⎦⎤−⎣⎡153045⎦⎤[555]=⎣⎡−74−149−224−74−149−224−74−149−224⎦⎤
故可以用
X−XddT代替
x(i)−x(i)Tdd。
暂时不考虑约束,此
Frobenius范数可做以下简化:
dargmin∥∣X−XddT∣∣F2
=dargminTr((X−XddT)T(X−XddT))
=dargminTr(XTX)−Tr(XTXddT)−Tr(ddTXTX)+Tr(ddTXTXddT)
=dargmin−2Tr(XTXddT)+Tr(XTXddTddT)
这些化简利用的性质有,
1)与
d无关的项不影响
argmin。
2)循环改变迹运算中相乘矩阵的顺序不影响结果。
此时,我们再来考虑约束条件
dargmin−2Tr(XTXddT)+Tr(XTXddTddT)subject to dTd=1
=dargmin−2Tr(XTXddT)+Tr(XTXddT)subject to dTd=1
=dargmin−Tr(XTXddT)subject to dTd=1
=dargmaxTr(XTXddT)subject to dTd=1
=dargmaxTr(dTXTXd)subject to dTd=1
故这个优化问题可以通过特征分解来求解。具体来讲,最优的
d是
XTX最大特征值对应的特征向量。
以上推导特定于
l=1的情况,仅得到了一个主成分。更一般地,当我们需要得到主成分的基时,矩阵
D由前
l个最大的特征值对应的特征向量组成。