主成分分析(principal components analysis,PCA)是一个简单的机器学习算法,可以通过基础的线性代数知识推导。
假设在
Rn
空间中我们有
m
个点
一种编码这些点的方式是用低维表示。对于每个点
x(i)∈Rn
,会有一个对应的编码向量
c(i)∈Rl
。如果
l
比
PCA由我们选择的解码函数而定。具体地,为了简化解码器,我们使用矩阵乘法将编码映射回
Rn
。即
g(c)=Dc
,其中
D∈Rn×l
是定义解码的矩阵。
目前为止所描述的问题,可能会有多个解。因为如果我们按比例地缩小所有点对应的编码向量
ci
,那么我们只需按比例放大
D:,i
,即可保持结果不变。为了使问题有唯一解,我们限制
D
中所有列向量都有单位范数。
计算这个解码器的最优编码可能是一个困难的问题。为了使编码问题简单一些,
为了将这个基本想法变为我们能够实现的算法,首先我们需要明确如何根据每一个输入
我们可以用平方 L2 范数替代 L2 范数,因为两者在相同的值 c 上取得最小值。这是因为
该最小化函数可以简化成
(式 L2 范数的定义)
(分配率)
(因为标量 g(c)Tx 的转置等于自己)
因为第一项 xTx 不依赖于 c ,所以我们可以忽略它,得到如下的优化目标:
更进一步,我们代入 g(c) 的定义:
(矩阵 D 的正交性和单位范数约束)