如有一组数组数据m个n维列向量Anxm
想要降维,随意丢弃数据显然不可取,降维可以降低程序计算复杂度,代价是丢弃了原始数据一些信息,那么降维的同时,又保留数据最多信息呢。
我们希望投影后投影值尽可能分散(不然数据都堆积到一起了),而这种分散程度,可以用数学上的方差来表述。此处,一个字段的方差可以看做是每个元素与字段均值的差的平方和的均值,即:
假设Anxm已经是每行元素减去均值,那么每行均值为0(这么操作可以带来很大的方便,等于对数据做了平移操作),每行方差为
协方差
上图,在n维空间中u是Anxm一个列向量,投影到低维空间中,e是低维空间一个基向量,||e||=1,需要确定e的方向,使得A的列向量投影到e的点方差最大,也就是很分散,向量u投影到e的坐标是它们的内积<e,u>,先算平均值
方差就简单多了
这是个二次型,求最大方差转化为求该二次型最大值
由对称矩阵性质,对称矩阵AA^T的特征向量构成n维空间一组标准正交基,用矩阵p表示,则向量e可以被p线性表示
方差
注意此处
最大时
取的是AA^T最大特征值特征向量方向
举个例子矩阵A
五个二维点降到一维,不论投影到x轴还是y轴,都有点重合。
使用上面方法操作一遍
求特征值
解得
得到特征向量
标准化特征向量
矩阵P
验证
对矩阵A做变换到一维
PCA作为经典方法在模式识别领域已经有了广泛的应用,但是也存在不可避免的缺点,总结如下:
(1) PCA是一个线性降维方法,对于非线性问题,PCA则无法发挥其作用;
(2) PCA需要选择主元个数,但是没有一个很好的界定准则来确定最佳主元个数;
(3) 多数情况下,难以解释PCA所保持的主元分量的意义;
(4) PCA将所有的样本作为一个整体对待,去寻找一个均方误差最小意义下的最优线性映射,而忽略了类别属性,而它所忽略的投影方向有可能刚好包含了重要的可分类信息,如下图所示,红色和蓝色的点为原数据,中间绿色的点为重构后的数据,由此可看出,这种情形下,主元方向不能保持数据的聚类信息(使用LDA)。