概述
上一篇降维算法的相关论文为LPP算法,也是何小飞老师的论文https://blog.csdn.net/qq_39187538/article/details/90402961
1.问题导入
2.算法出处
3.算法详解
4.算法步骤
1.问题导入:
降维的目的是为了缓解维数灾难,比如原始空间X=[x1,x2,...xn],每一个xi有m个维度,要将其降维到Y=[y1,y2,...,yn],每一个yi成为了m'维度(m'<<m),需要一个矩阵P,使得yi=P'X(注:这里P'表示P的转置),当m足够大的时候,对其进行内积运算就会产生内存不足的情况,特别是在处理人脸数据集,一个人脸数据集假如是100X100的(这还是一个比较小的人脸数据),reshape操作之后就会成为10000X1的,对其直接进行knn分类或者svm分类就有可能产生内存不足,而且人脸数据集中有很多冗余的信息,降维的目的就是剔除这些冗余的信息,构建一个新的坐标轴,使原始数据点能够投影到新的坐标轴上(关于投影最直接的一个例子就是pca将二维x,y轴二维数据集降维到一维的数据集,可以参考西瓜书上的说明),找到这个最优的坐标轴也就是成了降维优劣的衡量标准了(具体的衡量是降维后的数据集进行分类,比较精度,kappa系数等等)。
2.算法出处:
算法全称《Neighborhood Preserving Embedding》源自何小飞教授的会议论文X.He,D.cai,S.Yan,H.Zhang,Neighborhood Preserving 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.算法详解:
算法的步骤其实跟LPP差不多,都是通过样本是通过邻域近似线性表示得到的,但是构造函数不相同,LPP的可以看我的另外一篇文章https://blog.csdn.net/qq_39187538/article/details/90402961,如果不懂降维相关的,推荐先从pca开始看,可以看南京大学周志华教授的著作《机器学习》俗称西瓜书。这里npe的算法原理就是最小化重构误差来达到降维效果的最优,而lpp是对某一数据集,计算他与所有点的欧式距离,这是lpp与npe的不同之处。并且重构是通过k近邻的形式进行的线性重构。关于lle的图解图下:
npe的损失函数如下:
(1)
(2)
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。
3.2.公式推导:
这里的公式推导,可以先将其转化为向量的形式进行。M=(I-W)'(I-W)(注:这里‘表示的是转置)。
4.算法步骤:
4.1:构建近邻图:
这里跟LPP一样由两种形式:
一种是计算距离,然后排序,并按照从小到大进行取前k个,那么这前k个就是其k近邻。不过这里构建的是有向边,而lpp构建的是无向边。
第二种是kesai球的形式,也是一样一般不怎么使用,因为这个kesai处理的问题不一样,那么kesai的取值就不稳定。
4.2计算权重:
计算权重的形式可以参考LLE的相关论文也就是上面提及到的Science论文。Sam Roweis, and Lawrence K. Saul, “Nonlinear Dimensionality Reduction by Locally Linear Embedding,” Science, vol 290, 22 December 2000.
4.3:计算投影矩阵
根据上面的形式,这里有两个固定的思路,就是如果采用重建的形式,一般的约束都是a'XIX'a这种形式。如果是采用LPP那种,将每两两数据点之间的距离进行度量,那么就是使用D的形式构造,关于LPP的可以参考我的关于LPP的讲解https://blog.csdn.net/qq_39187538/article/details/90402961,所以这里就使用这种形式。
转化为特征值问题就是:
然后可以使用matlab自带的函数进行处理[eigvector, eigvalue] = eig(XMX',XX')(注:这里的‘表示的是转置的意思’);
最后
以上就是细心棒棒糖为你收集整理的邻域保留投影算法(NPE)(Neighborhood Preserving Embedding)算法详解的全部内容,希望文章能够帮你解决邻域保留投影算法(NPE)(Neighborhood Preserving Embedding)算法详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复