转跳到内容

300字新人报到


推荐贴

一、简介 

       PCAPrincipal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,在一个大规模数据库中查询一幅相近的图像。通常的方法是对图像库中的图片提取特征,如颜色,纹理,siftsurfvlad等等,然后将其保存,建立相应的数据索引,然后对要查询的图像提取相应的特征,与数据库中的图像特征对比,找出与之最近的图片。为了提高查询的准确率,通常会提取一些较为复杂的特征,如siftsurf等,一幅图像有很多个这种特征点,每个特征点又有一个相应的描述该特征点的128维的向量,设想如果一幅图像有300个这种特征点,那么该幅图像就有300*vector128维)个,如果我们数据库中有一百万张图片,这个存储量是相当大的,建立索引也很耗时。因此若我们对每个向量进行PCA处理,将其降维为64维,就能实现节约存储空间啊,加快检索速度的目的。

二、PCA详解

1、原始数据:

假定一组二维数据,如下:

x=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1]T
y=[2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]T

2、计算协方差矩阵

1)协方差矩阵:

首先给出一个含有n个样本的集合,依次给出数理统计中的一些相关概念:

均值:http://static.oschina.net/uploads/img/201404/22205804_hS97.jpg
标准差:http://static.oschina.net/uploads/img/201404/22205804_d0Ww.jpg
方差:http://static.oschina.net/uploads/img/201404/22205804_9rak.jpg

标准差和方差一般是用来描述一维数据的,但实际工作中常遇到含有多维数据的数据集,协方差就是一种用来度量两个随机变量关系的统计量,其定义为:

http://static.oschina.net/uploads/img/201404/22205804_EBMS.jpg

性质:

http://static.oschina.net/uploads/img/201404/22205804_LyOA.jpg(X的方差)
http://static.oschina.net/uploads/img/201404/22205804_IEha.jpg

需要注意的是,协方差只能处理二维问题,维数多了就需要计算多个协方差,如n维的数据集就需要计算http://static.oschina.net/uploads/img/201404/22205804_y3km.jpg个协方差,因此使用矩阵来组织这些数据。协方差矩阵的定义:

http://static.oschina.net/uploads/img/201404/22205804_0NO9.jpg

设数据集有http://static.oschina.net/uploads/img/201404/22205804_qlQR.jpg三个维度,则协方差矩阵为

http://static.oschina.net/uploads/img/201404/22205804_l8nD.jpg

可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。

2)协方差矩阵的求法:

协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。下面在matlab中用一个例子进行详细说明:

首先随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。
MySample = fix(rand(10,3)*50)

http://static.oschina.net/uploads/img/201404/22205804_1P6y.jpg

协方差矩阵是计算不同维度间的协方差。样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。为了描述方便,我们先将三个维度的数据分别赋值:

dim1 = MySample(:,1);
dim2 = MySample(:,2);
dim3 = MySample(:,3);

计算dim1dim2dim1dim3dim2dim3的协方差:

sum( (dim1-mean(dim1)) .* (dim2-mean(dim2)) ) / ( size(MySample,1)-1 ) % 得到  74.5333
sum( (dim1-mean(dim1)) .* (dim3-mean(dim3)) ) / ( size(MySample,1)-1 ) %
得到  -10.0889
sum( (dim2-mean(dim2)) .* (dim3-mean(dim3)) ) / ( size(MySample,1)-1 ) %
得到  -10***000

协方差矩阵的对角线就是各个维度上的方差

依次计算:

std(dim1)^2 % 得到   108.3222
std(dim2)^2 %
得到   260.6222
std(dim3)^2 %
得到  94.1778

或调用Matlab自带的cov函数:

cov(MySample)

http://static.oschina.net/uploads/img/201404/22205804_H1b3.jpg

通常我们使用以下简化方法进行计算:

先让样本矩阵中心化,即每一维度减去该维度的均值,然后直接用新的到的样本矩阵乘上它的转置,然后除以(N-1)即可。其Matlab代码实现如下:

X = MySample – repmat(mean(MySample),10,1);    % 中心化样本矩阵
C = (X’*X)./(size(X,1)-1)

求出样本的协方差矩阵为:

                      http://static.oschina.net/uploads/img/201404/22205804_G0NC.jpg

3、计算协方差矩阵的特征向量和特征值

计算特征向量和特征值:

[eigenvectors,eigenvalues] = eig(cov)

http://static.oschina.net/uploads/img/201404/22205804_yGtc.jpg

4、选择成分组成模式矢量

求出协方差矩阵的特征值及特征向量之后,按照特征值由大到小进行排列,选择了前k个主要成分,降维后的数据仅有k维。

将两个特征矢量两个特征矢量组成模式矢量:

                                     http://static.oschina.net/uploads/img/201404/22205804_1ZF8.jpg

忽略其中较小特征值的一个特征矢量,从而得到如下模式矢量:

                                                    http://static.oschina.net/uploads/img/201404/22205805_bo4b.jpg

5、得到降维后的数据

  http://static.oschina.net/uploads/img/201404/22205805_H6pT.jpg

其中rowFeatureVector是由模式矢量作为列组成的矩阵的转置,因此它的行就是原来的模式矢量,而且对应最大特征值的特征矢量在该矩阵的最上一行。rowdataAdjust是每一维数据减去均值后,所组成矩阵的转置,即数据项目在每一列中,每一行是一维,即,第一行为x维上数据,第二行为y维上的数据。FinalData是最后得到的数据,数据项目在它的列中,维数沿着行。

 

注释
赤紅の涙 赤紅の涙 -40.00节操 复制,恶意灌水
链接到点评


受限玻尔兹曼机是一个深度学习模型,每一层都表示一个受限玻尔兹曼机,最底层受限玻尔兹曼机的输入是原始高维数据,通过该受限玻尔兹曼机计算得到一个中间值,然后将这个中间值作为下一个受限玻尔兹曼机的输入,继续计算得到新的中间值,重复此过程,直到从顶层的受限玻尔兹曼机计算得到最终的编码结果。这个过程被称作预训练。而图的右半部分表示将这个深度学习模型展开之后,通过调整这个深度学习模型中每层之间的参数和权重,进而得到一个深度自动编码机的过程。这个过程被称作微调。
RBMs包括两个重要的步骤:无监督的训练和监督的调整。无监督训练阶段,利用
贪心训练算法逐步逐层的计算输入与输出之间的关系。通过对比度使得每一层的参数收敛。每一层的参数都作为计算下一层参数的输入。在调整阶段,加标签的数据被用来调整无监督训练阶段学习到的神经网络。
缺点:
实验证明,受限玻尔兹曼机索引算法可以得到较好的索引结果。但由于其自身模型的复杂性,导致其运行效率低下,需要花费较长时间来得到训练结果。

注释
赤紅の涙 赤紅の涙 -20.00节操 无意义灌水
链接到点评


受限玻尔兹曼机是一个深度学习模型,每一层都表示一个受关系。通过对比度使得每一层的参数收敛。每一层的参数都作为计算下一层参数的输入。在调整阶段,加标签的数据被用来调整无监督训练阶段学习到的神经网络。
缺点:
实验证明,受限玻尔兹曼机索引算法可以得到较好的索引结果。但由于其自身模型的复杂性,导致其运行效率低下,需要花费较长时间来得到训练结果。

注释
赤紅の涙 赤紅の涙 -30.00节操 三连
链接到点评
49 分钟前, superzzq 说道:


受限玻尔兹曼机是一个深度学习模型,每一层都表示一个受关系。通过对比度使得每一层的参数收敛。每一层的参数都作为计算下一层参数的输入。在调整阶段,加标签的数据被用来调整无监督训练阶段学习到的神经网络。
缺点:
实验证明,受限玻尔兹曼机索引算法可以得到较好的索引结果。但由于其自身模型的复杂性,导致其运行效率低下,需要花费较长时间来得到训练结果。

这样可不行呢:SS04:坛坛提醒,新人在发帖回帖前一定要先看看新手区版规啊

违规有点多了呢,复制黏贴,自占沙发,3连:SS01:

不过村长说过,知错就改还是好孩子,真心悔过可以在版规里发现悔过方法呢:SS09:

小小坛娘路过听到路过酱的歌声,不小心被路过的鸡仔绊倒,受到了路过酱的赔偿金3节操

链接到点评

创建帐号或登入才能点评

您必须成为用户才能点评

创建帐号

在我们社区注册个新的帐号。非常简单!

注册新帐号

登入

已有帐号? 登入

现在登入
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款