《西瓜书》笔记10:降维与度量学习-PCA(二)
3 主成分分析
Principal Component Analysis,PCA。最常用的降维方法。
3.1 怎么来的?
正交属性空间中,如何用一个超平面,对所有样本进行恰当表达?
- 最近重构性:样本点到该平面的距离足够近。要表达就要比较相似,距离近。
- 最大可分性:样本点在平面上的投影尽可能分开。点与点足够区分。
基于这两个性质,可推导出主成分分析的2种等价推导。
假定数据样本进行了中心化(每个值减去均值)。
从最近重构性出发,考虑整个训练集中,原样本点与基于投影重构的样本点之间的距离,对其距离最小化,则可得到:
这就是主成分分析的优化目标。
从最大可分性出发,样本点在新空间中超平面内上的投影是
而投影后点的方差是
两种推导等价。
举例如下图:
二维空间的一堆点,投影到一维坐标系上。样本点投影后分得越开,方差越大,可分性越好,我们更喜欢。降维效果体现出来。
对上式使用拉格朗日乘子法得有:
只需要对协方差矩阵
实际中通常对X进行奇异值分解,代替协方差矩阵的特征值分解。
3.2 PCA算法
过程第1步的中心化,X是d行m列,每一列是个样本。中心化的结果,是对每一行(d个特征)中心化了,每一行(某个特征)的所有值之和为0。则按列再加其值也是0。
过程第2、3步在实践中通常用对X对进行SVD来代替。
第4步,取最大的d*个特征值,并取对应的特征向量
进行
PCA过程也可这样理解:逐一选取样本点在高维上的方差的最大方向,即先对协方差矩阵做特征值分解,取出最大特征值对应的特征向量;再对差值(投影第一次后的空间)继续做特征值分解,取最大特征值对应的特征向量,迭代来做。因为W各分量正交,上述逐一选取方差最大方向的做法(串行),与直接选取最大d*个特征值(并行)等价。
d*通常由用户指定。可从重构角度设置一个重构阈值t,例如t=0.95,然后选取下式成立的最小d*值:
PCA仅需保留W与样本的均值向量,即可通过简单的向量减法和矩阵-向量乘法将新样本投影至低维空间。
降维导致若干特征向量被舍弃。这时必要的:
(1)舍弃该信息可使得样本的采样密度增大,降维的重要动机。
(2)数据受到噪声影响时,最小的特征值对应的特征向量往往与噪声有关,舍弃其可一定程度上起到去噪效果。
3.3 MATLAB中的PCA
即我们可以只使用基向量矩阵COEFF中的前2列对新向量降维(1*3 * 3*2 = 1*2)。其对应SCORE矩阵中的前两列(4*3 * 3*1 = 4*1,第1列),再来一组基向量(4*3 * 3*2 = 4*2,第1、2列),每列增量式增加,不影响。