高维(特征多)情形下出现的样本稀疏是所有机器学习方法面对的共同问题,称为维数灾难,缓解这一问题的一个重要途径是降维,即通过某种数学变换将原始高维空间转变为一个低维空间,在低维空间中样本呢密度大大提高。之所以可以进行降维是因为收集到的样本虽然是高维的,但与学习任务密切相关的可能仅是某个低维分布。
假设原空间维数p(原始特征向量为x=(x^(1),...,x^(p))'),原始样本矩阵为
每行表示一个样品,每列表示一个特征(的n个样本观测值)。
我们希望获得样本在p'维空间的坐标矩阵Z(n×p'维实值矩阵,p'<<p)。一般来说最简单的降维方式为对原始空间进行线性变换,变换后低维空间中的样本为
p×p'维矩阵W是变换矩阵,变换后的特征z=(z^(1),...,z^(p'))'=x'W,即
其中上标表示第几个分量。我们希望变换后特征的方差尽可能大,同时各个特征z^(i),z^(j)之间相互独立,假设X的协方差矩阵为Σ,则
其中w^(i)是W的第i列,给它乘以一个正常数c可知上面的方差会变成原来的c²倍,因此若不对W施加限制,z的方差可以无限高,这样就失去意义了,所以我们要求W是正交矩阵(此时其任意两行或任意两列都是正交的,且每行和每列长度都是1)。此外我们还要求z^(i)的方差尽可能大的同时,满足z^(1)是z中方差最大的,z^(2)是z中方差第二大的,后面的分量以此类推。z^(i)称为原始变量的第i主成分。
我们在进行分析之前先将所有特征都标准化(只进行中心化也不影响数学推导)。原特征向量的样本协方差矩阵为
而降维后的特征的协方差矩阵为
我们要各z^(i)方差尽可能大,因此得到求解主成分的优化问题:
s.t.后的条件即可保证变换后各特征不相关。用拉格朗日乘子法可得
只需再求XX'的特征值然后从大到小排列,取前p'个即可,W由这些特征值对应的特征向量构成。