维数约减Word下载.docx
- 文档编号:18913565
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:17
- 大小:185.56KB
维数约减Word下载.docx
《维数约减Word下载.docx》由会员分享,可在线阅读,更多相关《维数约减Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
不同的目标也就导致了不同的降维算法,这也正是今天要讲的话题。
然而,我们的目的究竟是什么呢?
一个比较直接的问题是原始的数据量维度太高,我们无法处理,因此需要降维,此时我们通常希望在最大限度地降低数据的维度的前提下能够同时保证保留目标的重要的信息,就好比在做有损的数据压缩时希望压缩比尽量大但是质量损失不要太多。
于是问题又转化为如何衡量对信息的保留程度了。
一个最直接的办法就是衡量reconstructionerror,即
其中
是
所对应的低维表示再重新构造出来的高维形式,就相当于是压缩之后解压出来的结果,不过虽然有许多压缩方法都是无损的,就是说这个差值会等于零,但是大部分降维的结果都是有损的。
不过我们仍然希望把上面的reconstructionerror最小化。
另外一种方式是简单地使用variance来衡量所包含信息量,例如,我们要把一些D维的向量降为1维,那么我们希望这一维的variance达到最大化,亦即:
是降维函数。
推而广之,如果是降为2维,那么我希望第2维去关注第1维之外的variance,所以要求它在与第一维垂直的情况下也达到variance最大化。
以此类推。
然而,当我们把降维函数
限定维线性的时候,两种途径会得到同样的结果,就是被广泛使用的PrincipalComponentsAnalysis(PCA)。
PCA的降维函数是线性的,可以用一个
维的矩阵
来表示,因此,一个D维的向量
经过线性变换
之后得到一个M维向量,就是降维的结果。
把原始数据按行排列为一个
,则
就是降维后的
维的数据矩阵,目标是使其covariance矩阵最大。
在数据被规则化(即减去其平均值)过的情况下,协方差矩阵(covariance)
,当然矩阵不是一个数,不能直接最大化,如果我们采用矩阵的Trace(亦即其对角线上元素的和)来衡量其大小的话,要对
求最大化,只需要求出
的特征值和特征向量,将M个最大的特征值所对应的特征向量按列排列起来组成线性变换矩阵
即可。
这也就是PCA的求解过程,得到的降维矩阵
可以直接用到新的数据上。
如果熟悉LatentSemanticAnalysis(LSA)的话,大概已经看出PCA和SingularValueDecomposition(SVD)以及LSA之间的关系了。
以下这张图(引自《TheElementsofStatisticalLearning》)可以直观地看出来PCA做了什么,对于一些原始为二维的数据,PCA首先找到了variance最大的那一个方向:
PCA作为一种经典的降维方法,被广泛地应用于机器学习、计算机视觉以及信息检索等各个领域,其地位类似于聚类中的K-means,在现在关于降维等算法的研究中也经常被作为baseline出现。
然而,PCA也有一些比较明显的缺点:
一个就是PCA降维是线性变换,虽然线性变换计算方便,并且可以很容易地推广到新的数据上,然而有些时候线性变换也许并不合适,为此有许多扩展被提出来,其中一个就是KernelPCA,用KernelTrick来将PCA推广到非线性的情况。
另外,PCA实际上可以看作是一个具有Gaussian先验和条件概率分布的latentvariable模型,它假定数据的mean和variance是重要的特征,并依靠covariance最大化来作为优化目标,而事实上这有时候对于解决问题帮助并不大。
一个典型的问题就是做聚类或分类,回想我们之前谈过的SpectralClustering,就是使用Laplacianeigenmap降维之后再做K-means聚类,如果问题定下来了要对数据进行区分的话,“目的”就变得明朗了一些,也就是为了能够区分不同类别的数据,再考虑直观的情况,我们希望如果通过降维把高维数据变换到一个二维平面上的话,可以很容易“看”出来不同类别的数据被映射到了不同的地方。
虽然PCA极力降低reconstructionerror,试图得到可以代表原始数据的components,但是却无法保证这些components是有助于区分不同类别的。
如果我们有训练数据的类别标签,则可以用FisherLinearDiscriminantAnalysis来处理这个问题。
同PCA一样,FisherLinearDiscriminantAnalysis也是一个线性映射模型,只不过它的目标函数并不是Variance最大化,而是有针对性地使投影之后属于同一个类别的数据之间的variance最小化,并且同时属于不同类别的数据之间的variance最大化。
具体的形式和推导可以参见《PatternClassification》这本书的第三章ComponentAnalysisandDiscriminants。
当然,很多时候(比如做聚类)我们并不知道原始数据是属于哪个类别的,此时LinearDiscriminantAnalysis就没有办法了。
不过,如果我们假设原始的数据形式就是可区分的的话,则可以通过保持这种可区分度的方式来做降维,MDS是PCA之外的另一种经典的降维方法,它降维的限制就是要保持数据之间的相对距离。
实际上MDS甚至不要求原始数据是处在一个何种空间中的,只要给出他们之间的相对“距离”,它就可以将其映射到一个低维欧氏空间中,通常是三维或者二维,用于做visualization。
不过我在这里并不打算细讲MDS,而是想说一下在SpectralClustering中用到的降维方法LaplacianEigenmap。
同MDS类似,LE也只需要有原始数据的相似度矩阵,不过这里通常要求这个相似度矩阵
具有局部性质,亦即只考虑局部领域内的相似性,如果点
和
距离太远的话,
应该为零。
有两种很直接的办法可以让普通的相似度矩阵具有这种局部性质:
1.通过设置一个阈值,相似度在阈值以下的都直接置为零,这相当于在一个
-领域内考虑局部性。
2.对每个点选取k个最接近的点作为邻居,与其他的点的相似性则置为零。
这里需要注意的是LE要求相似度矩阵具有对称性,因此,我们通常会在
属于
的k个最接近的邻居且/或反之的时候,就保留
的值,否则置为零。
构造好
之后再来考虑降维,从最简单的情况开始,即降到一维
,通过最小化如下目标函数来实现:
从直观上来说,这样的目标函数的意义在于:
如果原来
比较接近,那么
会相对比较大,这样如果映射过后
相差比较大的话,就会被权重
放大,因此最小化目标函数就保证了原来相近的点在映射过后也不会彼此相差太远。
令
为将
的每一行加起来所得到的对角阵,而
,被称作是拉普拉斯矩阵,通过求解如下的特征值问题
易知最小的那个特征值肯定是0,除此之外的最小的特征值所对应的特征向量就是映射后的结果。
特征向量是一个N维列向量,将其旋转一下,正好是N个原始数据降到一维之后的结果。
类似地推广到M维的情况,只需要取除去0之外的最小的M个特征值所对应的特征向量,转置之后按行排列起来,就是降维后的结果。
用Matlab代码写出来如下所示(使用了knn来构造相似度矩阵,并且没有用heatkernel):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
%LaplacianEigenmapALGORITHM(usingKnearestneighbors)
%
%[Y]=le(X,K,dmax)
%X=dataasDxNmatrix(D=dimensionality,N=#points)
%K=numberofneighbors
%dmax=maxembeddingdimensionality
%Y=embeddingasdmaxxNmatrix
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function[Y]=leigs(X,K,d)
[D,N]=size(X);
fprintf(1,'
LErunningon%dpointsin%ddimensions\n'
N,D);
%STEP1:
COMPUTEPAIRWISEDISTANCES&
FINDNEIGHBORS
-->
Finding%dnearestneighbours.\n'
K);
X2=sum(X.^2,1);
distance=repmat(X2,N,1)+repmat(X2'
1,N)-2*X'
*X;
[sorted,index]=sort(distance);
neighborhood=index(2:
(1+K),:
);
%STEP2:
ConstructsimilaritymatrixW
Constructingsimilaritymatrix.\n'
W=zeros(N,N);
forii=1:
N
W(ii,neighborhood(:
ii))=1;
W(neighborhood(:
ii),ii)=1;
end
%STEP3:
COMPUTEEMBEDDINGFROMEIGENVECTSOFL
Computingembedding.\n'
D=diag(sum(W));
L=D-W;
%CALCULATIONOFEMBEDDING
options.disp=0;
options.isreal=1;
options.issym=1;
[Y,eigenvals]=eigs(L,d+1,0,options);
Y=Y(:
2:
d+1)'
*sqrt(N);
%bottomevectis[1,1,1,1...]witheval0
Done.\n'
事实上,LaplacianEigenmap假设数据分布在一个嵌套在高维空间中的低维流形上,LaplacianMatrix
则是流形的LaplaceBeltramioperator的一个离散近似。
关于流形以及LaplacianEigenmap这个模型的理论知识就不在这里做更多地展开了,下面看一个比较直观的例子SwissRoll。
SwissRoll是一个像面包圈一样的结构,可以看作一个嵌套在三维空间中的二维流形,如下图所示,左边是SwissRoll,右边是从SwissRoll中随机选出来的一些点,为了标明点在流形上的位置,给它们都标上了颜色。
而下图是LaplacianEigenmap和PCA分别对SwissRoll降维的结果,可以看到LE成功地把这个流形展开把在流形上属于不同位置的点映射到了不同的地方,而PCA的结果则很糟糕,几种颜色都混杂在了一起。
另外,还有一种叫做LocallyLinearEmbedding的降维方法,它同LE一样采用了流形假设,并假定平滑流形在局部具有线性性质,一个点可以通过其局部邻域内的点重构出来。
首先它会将下式最小化
以求解出最优的局部线性重构矩阵
,对于距离较远的点
,
应当等于零。
这之后再把
当作已知量对下式进行最小化:
这里
成了变量,亦即降维后的向量,对这个式子求最小化的意义很明显了,就是要求如果原来的数据
可以以
矩阵里对应的系数根据其邻域内的点重构出来的话,那么降维过后的数据也应该保持这个性质。
经过一些变换之后得到的求解方法和LE类似,也是要求解一个特征值问题,实际上,从理论上也可以得出二者之间的联系(LE对应于
而LLE对应于
),如果感兴趣的话,可以参考LaplacianEigenmapsforDimensionalityReductionandDataRepresentation这篇论文里的对比。
下面是两种方法在SwissRoll数据上的结果,也是非常相似的:
有一点需要注意的是,LE和LLE都是非线性的方法,PCA得到的结果是一个投影矩阵,这个结果可以保存下来,在之后对任意向量进行投影,而LE和LLE都是直接得出了数据降维之后的结果,但是对于新的数据,却没有得到一个“降维函数”,没有一个合适的方法得到新的数据的降维结果。
所以,在人们努力寻求非线性形式扩展PCA的时候,另一些人则提出了LE和LLE的线性形式,分别叫做LocalityPreservingProjection和NeighborhoodPreservingEmbedding。
在LPP中,降维函数跟PCA中一样被定为是一个线性变换,用一个降维矩阵
来表示,于是LE的目标函数变为
经过类似的推导,最终要求解的特征值问题如下:
得到的按照特征值从小到大排序的特征向量就组成映射矩阵
,和LE不同的是这里不需要去掉第一个特征向量。
另一点是在LE中的特征值是一个稀疏的特征值问题,在只需要求解最小的几个特征值的时候可以比较高效地求解,而这里的矩阵在乘以
之后通常就不再稀疏了,计算量会变得比较大,这个问题可以使用SpectralRegression的方法来解决,参见SpectralRegression:
AUnifiedApproachforSparseSubspaceLearning这篇paper。
如果采用KernelTrick再把LPP非线性化的话,又会回到LE。
而LLE的线性版本NPE也是采用了类似的办法来得到的,就不在这里多讲了。
另外,虽然LE是unsupervised的,但是如果训练数据确实有标签可用,也是可以加以利用的——在构造相似度矩阵的时候,属于同一类别的相似度要大一些,而不同类别的相似度则会小一些。
当然,除去聚类或分类之外,降维本身也是一种比较通用的数据分析的方法,不过有许多人批评降维,说得到的结果没有意义,不用说非线性,就是最简单的线性降维,除去一些非藏极端的特殊情况的话,通常将原来的分量线性组合一下都不会得到什么有现成的物理意义的量了。
然而话也说回来,现在的机器学习几乎都是更prefer“黑盒子”式的方法吧,比如决策树,各个分支对应与变量的话,它的决策过程其实人是可以“看到”或者说“理解”的,但是SVM就不那么“直观“了,如果再加上降维处理,就更加“不透明”了。
不过我觉得这没什么不好的,如果只是靠可以清晰描诉出来的rule的话,似乎感觉神秘感不够,没法发展出“智能”来啊^_^bb最后,所谓有没有物理意义,其实物理量不过也都是人为了描述问题方便而定义出来的吧。
Tags:
Clustering,UnsupervisedLearning
20commentsto漫谈Clustering(番外篇):
DimensionalityReduction
∙
zhouyuan
June21st,2009at9:
47pm·
Reply
kid,你不做professor真的可惜了。
。
pluskid
June22nd,2009at12:
01am·
@zhouyuan
-,-//
paul
June23rd,2009at10:
44am·
深入浅出,问题描述的很清楚
很适合当老师
cerror
June24th,2009at3:
14pm·
其实,现在很多降维算法的最终目的已经不是减少维度,从而减少计算量了。
而是为了解决Semanticgap的问题。
就是说,最终降到几维,可能是不确定的。
比如原始数据有300维,我算出来400维的空间中,数据分离的最好,那就到400维好了。
所以降维学出那个manifold,基本上任务就结束了……
heshizhu
August3rd,2009at8:
10pm·
刚学习降维方面的内容!
我现在就认为不同的降维方法就两个地方不同,一是定义对象之间的形似度和相异度的方法不同,另一个就是目标函数不一样。
还有关于是否是线性的理解还不是很充分,我总认为线性的就是一个像加权一样,比如一个对象有n个特征,要把它降维为m维,则就是让降维后的每一个特征都是前面n个特征的加权值,不知道我理解对不?
能否对我讲下这个线性和非线性本质的区别是什么,我的理解不是很合理!
August4th,2009at11:
40am·
@heshizhu
差不多吧,线性就是你能得到一个W,去乘以原来的x就能得到低维的形式,就是加权和了,而非线性的话,就没有一个固定形式或者可以用这样的线性解析式写出来的降维方法了。
Chrysalis
December2nd,2009at11:
54am·
“同PCA一样,FisherLinearDiscriminantAnalysis也是一个线性映射模型,只不过它的目标函数并不是Variance最大化,而是有针对性地使投影之后属于同一个类别的数据之间的variance最小化,并且同时属于不同类别的数据之间的variance最大化。
”
土问:
不同类别之间的“variance”是怎么定义来着?
?
我觉得应该是所有类别的样本总体有一个Variance,(设V_Totle)。
各个类别的样本有各自的Variance,(设V_individual)。
而类别之间的“variance”是指V_Totle–sigma(V_individual)。
这样理解起来比较顺。
December2nd,2009at12:
01pm·
opt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 维数约减
![提示](https://static.bdocx.com/images/bang_tan.gif)