邻域保留投影算法(NPE)
(NeighborhoodPrervingEmbedding。。。
1.问题导⼊
2.算法出处
stock market
3.算法详解
yodao
4.算法步骤
1.问题导⼊:
降维的⽬的是为了缓解维数灾难,⽐如原始空间X=[x1,x2,...xn],每⼀个xi有m个维度,要将其降维到Y=[y1,y2,...,yn],每⼀个yi成为了
ajar
m'维度(m'<<m),需要⼀个矩阵P,使得yi=P'X(注:这⾥P'表⽰P的转置),当m⾜够⼤的时候,对其进⾏内积运算就会产⽣内存不⾜的情况,特别是在处理⼈脸数据集,⼀个⼈脸数据集假如是100X100的(这还是⼀个⽐较⼩的⼈脸数据),reshape操作之后就会成为
北京广播网在线收听
10000X1的,对其直接进⾏knn分类或者svm分类就有可能产⽣内存不⾜,⽽且⼈脸数据集中有很多冗余的信息,降维的⽬的就是剔除这些冗余的信息,构建⼀个新的坐标轴,使原始数据点能够投影到新的坐标轴上(关于投影最直接的⼀个例⼦就是pca将⼆维x,y轴⼆维数据集降维到⼀维的数据集,可以参考西⽠书上的说明),找到这个最优的坐标轴也就是成了降维优劣的衡量标准了(具体的衡量是降维后的数据集进⾏分类,⽐较精度,kappa系数等等)。
spam2.算法出处:
算法全称《Neighborhood Prerving Embedding》源⾃何⼩飞教授的会议论⽂X.He,D.cai,S.Yan,H.Zhang,Neighborhood Prerving Embedding,in:Proceedings in International Conference on Computer Vision(ICCV),2005的定会上。算法改编⾃LLE 算法,LLE是S.Roweis,L.Saul,Nonlinear dimensionality reduction by locally linear embedding,Science 290(5500)(2000)2323-2326,发表在science上的论⽂。
3.算法详解:
npe的损失函数如下:
(1)
redgiant(2)
candy的意思
3.1此函数的物理意义:
(1)是论⽂⾥⾯的,但是不便于理解,我就根据1中的问题导⼊,将公式改为(2)的形式,便于理解⼀般损失函数都是min的形式。这⾥xi表⽰的是降维后空间中的任意数据点,xj表⽰的是xi的k近邻,可以表⽰成xj属于k(xi),注意这⾥的j是表⽰的个数,函数的物理意义就是,后⾯的⼀部分表⽰的就是由xi的k近邻的所有数据点的⼀个线性表⽰来重构xi(所以要使⽤j=1到k的求和的形式),然后最前⾯的i=1到
n(表⽰的是所有的数据集)求和。当损失函数最⼩的时候(理想是0,就表⽰,这个时候xi=后⾯的⼀部分,但是实际情况中不可能满⾜所有的,因此使⽤min来达到最优)。这⾥也是通过欧式距离来衡量两点之间的距离的。计算降维后的损失函数就可以将x替换为y。
challenged3.2.公式推导:
这⾥的公式推导,可以先将其转化为向量的形式进⾏。M=(I-W)'(I-W)(注:这⾥‘表⽰的是转置)。
4.算法步骤:
4.1:构建近邻图:
这⾥跟LPP⼀样由两种形式:
⼀种是计算距离,然后排序,并按照从⼩到⼤进⾏取前k个,那么这前k个就是其k近邻。不过这⾥构建的是有向边,⽽lpp构建的是⽆向边。
第⼆种是kesai球的形式,也是⼀样⼀般不怎么使⽤,因为这个kesai处理的问题不⼀样,那么kesai的取值就不稳定。
4.2计算权重:
计算权重的形式可以参考LLE的相关论⽂也就是上⾯提及到的Science论⽂。Sam Roweis, and Lawre
纳威 隆巴顿nce K. Saul, “Nonlinear Dimensionality Reduction by Locally Linear Embedding,” Science, vol 290, 22 December 2000.
4.3:计算投影矩阵
toma转化为特征值问题就是:
然后可以使⽤matlab⾃带的函数进⾏处理[eigvector, eigvalue] = eig(XMX',XX')(注:这⾥的‘表⽰的是转置的意思’);