论文题目:《Nonlinear Dimensionality Reduction by Locally Linear Embedding 》

发表时间:Science  2000

论文地址:Download

简介

  局部线性嵌入(Locally Linear Embedding,简称LLE)重要的降维方法。

  传统的 PCA,LDA 等方法是关注样本方差的降维方法,LLE 关注于降维时保持样本局部的线性特征,由于LLE在降维时保持了样本的局部特征,所以广泛用于图像图像识别,高维数据可视化等领域。

流形学习

  LLE 是流形学习(Manifold Learning)的一种。

  流形学习是一大类基于流形的框架。我们可以认为 LLE 中的流形是一个不闭合的曲面,且流形曲面数据分布比较均匀,比较稠密。LLE 算法是将流形从高维到低维的降维过程,在降维过程希望流形在高维的一些特征可以得到保留。

  一个形象的流形降维过程如下图。我们有一块卷起来的布,我们希望将其展开到一个二维平面,我们希望展开后的布能够在局部保持布结构的特征,其实也就是将其展开的过程,就想两个人将其拉开一样。
    

  对于降维问题,以前的方法是基于多维标度(MDS),计算试图保持数据点之间的 成对距离 或 广义差异的嵌入,这些距离是沿着直线测量的,在更具权威性的 MDS 用法中,如 Isomap,沿着限制于观测数据的流形表示的最短路径。如等距映射(ISOMAP)算法希望在降维后保持样本之间的测地距离而不是欧式距离,因为测地距离更能反映样本之间在流形中的真实距离。

  在这里,我们采用一种不同的方法,称为局部线性嵌入(LLE),这种方法不需要估计广泛分离的数据点之间的成对距离。

    

  等距映射(ISOMAP)算法需要找所有样本全局最优解,当数据量很大,样本维度很高时,计算非常的耗时,鉴于这个问题,LLE 通过放弃所有样本全局最优的降维,只是通过保证局部最优来降维。同时假设样本集在局部是满足线性关系的,进一步减少的降维的计算量。

LLE算法思想

  LLE 假设数据在较小局部是线性的,即:某一数据可由它邻域中几个样本线性表示。如有一个样本$x_1$,我们在它原始高维邻域里用 KNN 思想找到和它最近的三个样本 $x_2,x_3,x_4$,然后假设$x_1$可以由 $x_2,x_3,x_4$ 线性表示,即:
    $x_{1}=w_{12} x_{2}+w_{13} x_{3}+w_{14} x_{4}$

  其中,$w_{12}, w_{13}, w_{14}$为权重系数。在通过 LLE 降维后,我们希望 $x_1$ 在低维空间对应的投影 $x_1'$  以及 $x_2,x_3,x_4$ 对应的投影  $x_2',x_3',x_4'$  也尽量保持线性关系,即

    $x_{1}^{\prime} \approx w_{12} x_{2}^{\prime}+w_{13} x_{3}^{\prime}+w_{14} x_{4}^{\prime}$

  我们希望投影前后线性关系的权重系数  $w_{12}, w_{13}, w_{14}$  是尽量不变或改变最小。

  从上可看出,线性关系只在样本附近起作用,远离样本的数据对局部线性关系没有影响,因此降维复杂度降低很多。

LLE算法推导

Part 1

  首先要确定邻域大小的选择,即需要多少个邻域样本来线性表示某样本。假设这个值为  $k$ ,可以通过和 KNN 一样的思想,采用距离度量如:欧式距离,来选择某样本的  $k$  个最近邻。

  在寻找某样本 $x_i$  的  $k$  个最近邻之后,就需要找到  $x_i$  和 这  $k$  个最近邻之间的线性关系,即找到线性关系的权重系数。显然这是一个回归问题。

  我们假设有  $ m$  个  $n$  维样本  $\{x_1,x_2,...,x_m\}$  ,我们可以用均方差作为回归问题的损失函数:

    $J(w)=\sum \limits _{i=1}^{m}\left\|x_{i}-\sum \limits_{j=1}^{k} w_{i j} x_{j}\right\|_{2}^{2}$

  一般会对权重系数  $w_{ij}$  做归一化的限制(保证 $W$ 的平移不变性),即权重系数需满足:

    $\sum \limits _{j=1}^{k} w_{i j}=1$

  对于不在样本  $x_i$  邻域内的样本  $x_j$,令对应的  $w_{ij} = 0$。

  对于  $J(W)$  ,我们需要求出权重系数,可以采用拉格朗日乘法来求解,这里先对  $J(W)$  矩阵化:

    $\begin{aligned}J(W) &=\sum \limits _{i=1}^{m}\left\|x_{i}-\sum \limits_{j=1}^{k} w_{i j} x_{j}\right\|_{2}^{2} \\&=\sum \limits_{i=1}^{m}\left\|\sum \limits_{j=1}^{k} w_{i j} x_{i}-\sum \limits_{j=1}^{k} w_{i j} x_{j}\right\|_{2}^{2} \\&=\sum \limits_{i=1}^{m}\left\|\sum \limits_{j=1}^{k} w_{i j}\left(x_{i}-x_{j}\right)\right\|_{2}^{2} \\&=\sum \limits_{i=1}^{m}\left\|\left(x_{i}-x_{j}\right) W_{i}\right\|_{2}^{2} \\&=\sum \limits_{i=1}^{m} W_{i}^{T}\left(x_{i}-x_{j}\right)^{T}\left(x_{i}-x_{j}\right) W_{i}\end{aligned}$

  其中  $W_i =(w_{i1}, w_{i2},...w_{ik})$ 。

  令矩阵  $Z_i=(x_i-x_j)^T(x_i-x_j)$  ,则  $J(W)$  进一步简化为  $J(W) =  \sum\limits_{i=1}^{m} W_i^TZ_iW_i$  。对于权重约束,可以矩阵化为:

    $\sum \limits _{j=1}^{k} w_{i j}=W_{i}^{T} 1_{k}=1$

  现在我们将矩阵化的  $J(W)$ 以及权重约束 用拉格朗日子乘法合为一个优化目标:

    $L(W)=\sum \limits _{i=1}^{m} W_{i}^{T} Z_{i} W_{i}+\lambda\left(W_{i}^{T} 1_{k}-1\right)$

  对  $W$  求导并令其值为0,得到

    $2 Z_{i} W_{i}+\lambda 1_{k}=0$

  即

    $W_{i}=\lambda^{\prime} Z_{i}^{-1} 1_{k}$

  其中 $\lambda' = -\frac{1}{2}\lambda$  为一个常数。利用 $W_i^T1_k = 1$,对  $W_i$  归一化,那么最终的权重系数  $W_i$  为:

    $W_{i}=\frac{Z_{i}^{-1} 1_{k}}{1_{k}^{T} Z_{i}^{-1} 1_{k}}$

Part 2

  现在得到了高维的权重系数,我们希望这些权重系数对应的线性关系在降维后的低维一样得到保持。假设我们的  $n$  维样本集  $\{x_1,x_2,...,x_m\}$  在低维的  $d$  维度对应投影为  $\{y_1,y_2,...,y_m\}$  ,我们希望保持线性关系,也就是希望对应的均方差损失函数最小,即最小化损失函数  $J(Y)$  如下:
    $J(y)=\sum \limits _{i=1}^{m}\left\|y_{i}-\sum \limits _{j=1}^{k} w_{i j} y_{j}\right\|_{2}^{2}$

  可以看到这个式子和高维的损失函数几乎相同,唯一的区别是高维的式子中,高维数据已知,目标是求最小值对应的权重系数  $W$,而我们在低维是权重系数  $W$  已知,求对应的低维数据。

  为了得到标准化的低维数据,一般也会加入约束条件如下:

    $\sum \limits _{i=1}^{m} y_{i}=0 ; \quad \frac{1}{m} \sum \limits _{i=1}^{m} y_{i} y_{i}^{T}=I$

  首先我们将目标损失函数矩阵化:

    $\begin{aligned}J(Y) &=\sum \limits _{i=1}^{m}\left\|y_{i}-\sum \limits_{j=1}^{k} w_{i j} y_{j}\right\|_{2}^{2} \\&=\sum \limits_{i=1}^{m}\left\|Y I_{i}-Y W_{i}\right\|_{2}^{2} \\&=\operatorname{tr}\left(Y^{T}(I-W)^{T}(I-W) Y\right)\end{aligned}$

  如果我们令  $M=(I-W)^T(I-W)$  ,则优化函数转变为最小化下式:$J(Y) = tr(Y^TMY)$  ,$tr$  为迹函数。约束函数矩阵化为:$Y^TY=mI$

  如果大家熟悉谱聚类和  PCA  的优化,就会发现这里的优化过程几乎一样。其实最小化  J(Y)  对应的 Y 就是 M 的最小的 d 个特征值所对应的 d 个特征向量组成的矩阵。当然我们也可以通过拉格朗日函数来得到这个:
    $L(Y)=\operatorname{tr}\left(Y^{T} M Y\right)+\lambda\left(Y^{T} Y-m I\right)$

  其中   $Y=\left(y_{ 1}, y_{ 2}, \ldots y_{k}\right)^T$ 。

  对Y求导并令其为0,我们得到$2MY + 2\lambda Y =0$,即$MY = \lambda Y$,这样我们就很清楚了,要得到最小的  $d$ 维数据集,我们需要求出矩阵  $M$ 最小的 $d$ 个特征值所对应的  $d$ 个特征向量组成的矩阵$Y=(y_1,y_2,...y_d)$即可。

  一般的,由于  $M$  的最小特征值为  $0$ 不能反应数据特征,此时对应的特征向量为全 $1$ 。我们通常选择  $M$ 的第  $ 2$  个到第  $d+1$  个最小的特征值对应的特征向量  $M=(y_2,y_3,...y_{d+1})$来得到最终的Y。为什么 $M$  的最小特征值为0呢?这是因为  $W^Te =e$,得到  $|W^T-I|e =0$,由于$e \neq 0$,所以只有  $W^T-I =0$,即 $(I-W)^T=0$,两边同时右乘  $I-W$,即可得到  $(I-W)^T(I-W)e =0e$,即  $M$ 的最小特征值为 0。

LLE算法流程

    

  从图中可以看出,LLE算法主要分为三步,第一步是求K近邻的过程,这个过程使用了和KNN算法一样的求最近邻的方法。第二步,就是对每个样本求它在邻域里的K个近邻的线性关系,得到线性关系权重系数W,具体过程在第三节第一部分。第三步就是利用权重系数来在低维里重构样本数据,具体过程在第三节第二部分。

    具体过程如下:

    输入:样本集  $D=\{x_1,x_2,...,x_m\}$,最近邻数 $k$,降维到的维数 $d$

    输出: 低维样本集矩阵 $D'$

    1) for i 1 to m,按欧式距离作为度量,计算和 $x_i$  最近的的 $k$  个最近邻  $(x_{i1}, x_{i2}, ...,x_{ik},)$

    2) for i 1 to m,求出局部协方差矩阵  $Z_i=(x_i-x_j)^T(x_i-x_j)$,并求出对应的权重系数向量:
        $W_{i}=\frac{Z_{i}^{-1} 1_{k}}{1_{k}^{T} Z_{i}^{-1} 1_{k}}$

    3) 由权重系数向量  $W_i$  组成权重系数矩阵 $W$,计算矩阵  $M=(I-W)^T(I-W)$

    4) 计算矩阵 $M$ 的前 $d+1$ 个特征值,并计算这 $d+1$ 个特征值对应的特征向量  $\{y_1,y_2,...y_{d+1}\}$。

    5)由第二个特征向量到第 $d+1$ 个特征向量所张成的矩阵即为输出低维样本集矩阵  $D' = (y_2,y_3,...y_{d+1})$

LLE总结

    LLE是广泛使用的图形图像降维方法,它实现简单,但是对数据的流形分布特征有严格的要求。比如不能是闭合流形,不能是稀疏的数据集,不能是分布不均匀的数据集等等,这限制了它的应用。下面总结下LLE算法的优缺点。

    LLE算法的主要优点有:

    1)可以学习任意维的局部线性的低维流形

    2)算法归结为稀疏矩阵特征分解,计算复杂度相对较小,实现容易。

    LLE算法的主要缺点有:

    1)算法所学习的流形只能是不闭合的,且样本集是稠密均匀的。

    2)算法对最近邻样本数的选择敏感,不同的最近邻数对最后的降维结果有很大影响。

论文解读(LLE)《Nonlinear Dimensionality Reduction by Locally Linear Embedding》and LLE的更多相关文章

  1. 论文解读(SDNE)《Structural Deep Network Embedding》

    论文题目:<Structural Deep Network Embedding>发表时间:  KDD 2016 论文作者:  Aditya Grover;Aditya Grover; Ju ...

  2. 第八章——降维(Dimensionality Reduction)

    机器学习问题可能包含成百上千的特征.特征数量过多,不仅使得训练很耗时,而且难以找到解决方案.这一问题被称为维数灾难(curse of dimensionality).为简化问题,加速训练,就需要降维了 ...

  3. 壁虎书8 Dimensionality Reduction

    many Machine Learning problems involve thousands or even millions of features for each training inst ...

  4. 漫谈 Clustering (番外篇): Dimensionality Reduction

    由于总是有各种各样的杂事,这个系列的文章竟然一下子拖了好几个月,(实际上其他的日志我也写得比较少),现在决定还是先把这篇降维的日志写完.我甚至都以及忘记了在这个系列中之前有没有讲过“特征”(featu ...

  5. 单细胞数据高级分析之初步降维和聚类 | Dimensionality reduction | Clustering

    个人的一些碎碎念: 聚类,直觉就能想到kmeans聚类,另外还有一个hierarchical clustering,但是单细胞里面都用得不多,为什么?印象中只有一个scoring model是用kme ...

  6. 论文解读第三代GCN《 Deep Embedding for CUnsupervisedlustering Analysis》

    Paper Information Titlel:<Semi-Supervised Classification with Graph Convolutional Networks>Aut ...

  7. 论文解读GALA《Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learning》

    论文信息 Title:<Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learn ...

  8. 论文解读(DCN)《Towards K-means-friendly Spaces: Simultaneous Deep Learning and Clustering》

    论文信息 论文标题:Towards K-means-friendly Spaces: Simultaneous Deep Learning and Clustering论文作者:Bo Yang, Xi ...

  9. 可视化MNIST之降维探索Visualizing MNIST: An Exploration of Dimensionality Reduction

    At some fundamental level, no one understands machine learning. It isn’t a matter of things being to ...

随机推荐

  1. MySQL强人“锁”难《死磕MySQL系列 三》

    系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 前言 最近数据库 ...

  2. 11.5.1 LVS-DR 实验

    lvs-server VIP:10.211.55.99 DIP:10.211.55.23 负载均衡器   rs01 RIP:10.211.55.24 后端服务器   rs02 RIP:10.211.5 ...

  3. 11.3 LVS

    LVS是什么 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.o ...

  4. Oracle基础命令操作总结

    第1章 oracle命令集 1.1 重启数据库 1.1.1 启动数据库 su -root                 切换到oracle安装用户下,我的是root source .bash_pro ...

  5. 学校选址(ArcPy实现)

    一.背景 合理的学校空间位置布局,有利于学生的上课与生活.学校的选址问题需要考虑地理位置.学生娱乐场所配套.与现有学校的距离间隔等因素,从总体上把握这些因素能够确定出适宜性比较好的学校选址区. 二.目 ...

  6. 「JOISC 2020 Day2」变态龙之色 题解

    题目传送门 注意 同性必定不同色 必有一个同色异性,且不相互不喜欢 Solution 我们发现,我们问题比较大的就是如何确定性别问题.我们可以一个一个加进去,在原来已经确定了的二分图上增加新的性别关系 ...

  7. c++-string类--insert函数

    string &insert(int p0, const char *s);--在p0位置插入字符串s string &insert(int p0, const char *s, in ...

  8. 分布式/微服务必配APM系统,SkyWalking让你不迷路

    前言 如今分布式.微服务盛行,面对拆分服务比较多的系统,如果线上出现异常,需要快速定位到异常服务节点,假如还用传统的方式排查肯定效率是极低的,因为服务之间的各种通信会让定位更加繁琐:所以就急需一个分布 ...

  9. Golang通脉之数组

    数组是同一种数据类型元素的集合.数组在内存中都是连续存放的. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为int的数组 ...

  10. Python小工具:据说这是搜索文件最快的工具!没有之一!一起感受下......

    电脑自带的搜索文件功能相信大家都体验过,那是真的慢,等它找到文件,我都打完一把游戏了! 那必须不能忍,于是我自己做了一个文件搜索工具,犄角旮旯的文件都能一秒钟搜索出来的那种! 保证能把你们男(女)朋友 ...