博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
主成分分析(PCA)中的误差表示
阅读量:5876 次
发布时间:2019-06-19

本文共 1845 字,大约阅读时间需要 6 分钟。

hot3.png

给定nm维样本(1), X(2),…,X(n),假设我们的目标是将这n个样本从m维降低到k维,并且尽可能保证这种降维的操作不会产生很大的代价(重要信息的丢失)。换句话说,我们要把n个样本点从m维空间投影到k维空间。对于每一个样本点,我们都可以用下式表示此投影过程:

 

        Z=ATX                                                                       (1)

其中Xm维样本点, Z 是投影后得到的k维样本点,A是一个 m * k 的矩阵。

 

回顾一下,如果采用主成分分析法(PCA)来进行降维的话,我们首先求出样本的均值:

再求出散布矩阵(scatter matrix):

接着求得散布矩阵Sk大特征值所对应的特征向量s1,s2,…,sk,然后对s1,s2,…,skk个向量进行单位化,即使得||s1||=||s2||=…=||sk||=1,最后得到式(1)中的矩阵A

                                                                                                                (2)

 

例子: 为了更直观地从几何上理解式(1)的含义,我们以一组2维数据作为例子,在这个例子当中,我们使用PCA的方法将这组2维数组降到1维。矩阵A所存储的这些特征向量,实际上降维后的是新坐标轴,而在这个例子当中,我们得到的是一个新的1维坐标轴。如图1所示,图中的红色叉点代表2维样本点垂直投影到这个新坐标轴上的点。对于每一个2维空间上的样本点X,只要我们将它代入式(1)就可以计算出其降维后的表达(在这个例当中,则是一个1维的向量,即一个值):

                                                 (3)

 

      

                                            图1  10个样本点在2维空间上的表达

而式(3)算出来的这个值,实际上是这些投影点离原点的距离。因此,我们可以画出一个数轴来表示这个新的坐标轴,再根据式(3)算出来的这些值,在数轴上标出它们的位置,如图2所示。

       

                                           图2  10个样本点降到1维空间后的表达

这一组样本点降维后所产生的损失,可以通过下式来计算:

                                                                                             (4)

为了理解式(4),我们首先需要理解AATX(i)。回顾刚刚所说的,计算ATX(i)所得到的,实际上是样本点在低维空间上的表达(参考图2)。相对而言,X(i)是样本点在高维空间上的表达。然而,我们知道不同纬度空间的点是无法做比较的,举例来说,一个在2维空间上的点(x1, x2)是无法跟一个在1维空间上(y1)的点做比较的,因为它们纬度不一样(它们的所存在的世界不一样,它们不在同一个世界里)。

 

为了对2个不同纬度的样本点作比较,我们需要将它们放在同一个纬度空间下。一种合理的做法是,将低维空间上的点投影到高维空间,并假设高纬度的值为0。AATX(i)所做的工作就是把降维后的样本点反投影到高维空间上。以刚刚所举的例子来说,ATX(i)是图2上的叉点,而AATX(i)实际上是图1中直线(新坐标轴)上的叉点。

      值得注意的是,图2和图1上的这些叉点是一一对应的,无论在高维空间上还是在低维空间上,它们离原点的距离是不变的(仔细观察图1和图2中叉点离原点的距离)。我们仍然可以围绕这个例子,从理论上证明这一点,首先假设其中一个样本点 X降维后的表达为 Z=[s1x1+s2x2],那么对它从低维到高维(在此例中,是从1维到2维)的反向投影为:

 

                                                  (5)

 

现在,我们来证明式(5)中的Xapprox所表示的就是图1中的叉点。要证明这一点,我们需要证明两样东西:①Xapprox到原点的距离与Z到原点的距离相等,即||X||=||Z|| ②Xapprox在高维空间的超平面上(在此例中,高维空间是2维空间,低维空间是1维空间,超平面是一条直线)。

 

证明

                      

 

由于s经过单位化,即||s||=s12+s22=1,所以||Xapproax||=(s1x1+s2x2)2=||Z||,证毕.

证明

首先要得到超平面的一般表达式,而要得到超平面的一般表达式,就要计算出超平面所对应的法向量n,在此例中,法向量满足nTs=0,其中sT=[s1, s2]。我们可以得到n=[-s2/s1, 1],则超平面的一般表达式为(-s2/s1)x­1+x2=0。将XapproxT=[s1(s1x1+s2x2), s2(s1x1+s2x2)]代入(-s2/s1)x­1+x2,得到(-s2/s1)*s1(s1x1+s2x2)+s2(s1x1+s2x2)=-s2(s1x1+s2x2)+s2(s1x1+s2x2)=0,说对于任意的Xapprox,都在超平面上,证毕.

回到式(4)当中,L所计算的是每个样本点在高维空间投影到低维空间后的距离总和。

 

 

 

转载于:https://my.oschina.net/JiamingMai/blog/387727

你可能感兴趣的文章
Python内置函数property()使用实例
查看>>
Spring MVC NoClassDefFoundError 问题的解决方法。
查看>>
CentOS 6.9配置网卡IP/网关/DNS命令详细介绍及一些常用网络配置命令(转)
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
C# 解决窗体闪烁
查看>>
CSS魔法堂:Transition就这么好玩
查看>>
【OpenStack】network相关知识学习
查看>>
centos 7下独立的python 2.7环境安装
查看>>
[日常] 算法-单链表的创建
查看>>
前端工程化系列[01]-Bower包管理工具的使用
查看>>
使用 maven 自动将源码打包并发布
查看>>
Spark:求出分组内的TopN
查看>>
Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特
查看>>
关于跨DB增量(增、改)同步两张表的数据小技巧
查看>>
飞秋无法显示局域网好友
查看>>
学员会诊之03:你那惨不忍睹的三层架构
查看>>
vue-04-组件
查看>>
Golang协程与通道整理
查看>>
解决win7远程桌面连接时发生身份验证错误的方法
查看>>
C/C++ 多线程机制
查看>>