LLE算法

article/2025/10/14 5:58:53

Locally linear embedding (LLE) (Sam T.Roweis and Lawrence K.Saul, 2000)以及Supervised locally linear embedding (SLLE) (Dick and Robert, 2002) 是最近提出的非线性降维方法,它能够使降维后的数据保持原有拓扑结构。

     LLE算法可以有图1所示的一个例子来描述。在图1所示中,LLE能成功地将三维非线性数据映射到二维空间中。如果把图1(B)中红颜色和蓝颜色的数据分别看成是分布在三维空间中的两类数据,通过LLE算法降维后,则数据在二维空间中仍能保持相对独立的两类。在图1(B)中的黑色小圈中可以看出,如果将黑色小圈中的数据映射到二维空间中,如图1(C)中的黑色小圈所示,映射后的数据任能保持原有的数据流形,这说明LLE算法确实能保持流形的领域不变性。由此LLE算法可以应用于样本的聚类。而线性方法,如PCA和MDS,都不能与它比拟的。LLE算法操作简单,且算法中的优化不涉及到局部最小化。该算法能解决非线性映射,但是,当处理数据的维数过大,数量过多,涉及到的稀疏矩阵过大,不易于处理。在图1中的球形面中,当缺少北极面时,应用LLE算法则能很好的将其映射到二维空间中,如图1中的C所示。如果数据分布在整个封闭的球面上,LLE则不能将它映射到二维空间,且不能保持原有的数据流形。那么我们在处理数据中,首先假设数据不是分布在闭合的球面或者椭球面上。

图1 非线性降维实例:B是从A中提取的样本点(三维),通过非线性降维
算法(LLE),将数据映射到二维空间中(C)。从C图中的颜色可以看出
通过LLE算法处理后的数据,能很好的保持原有数据的邻域特性

    LLE算法是最近提出的针对非线性数据的一种新的降维方法,处理后的低维数据均能够保持原有的拓扑关系。它已经广泛应用于图像数据的分类与聚类、文字识别、多维数据的可视化、以及生物信息学等领域中。


1 LLE算法

    LLE算法可以归结为三步:(1)寻找每个样本点的k个近邻点;(2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。具体的算法流程如图2所示。

图2 LLE算法流程

    算法的第一步是计算出每个样本点的k个近邻点。把相对于所求样本点距离最近的k个样本点规定为所求样本点的 个近邻点。k是一个预先给定值。Sam T.Roweis 和 Lawrence K.Saul算法采用的是欧氏距离,则减轻复杂的计算。然而本文是假定高维空间中的数据是非线性分布的,采用了diijstra距离。Dijkstra 距离是一种测地距离,它能够保持样本点之间的曲面特性,在ISOMAP算法中有广泛的应用。针对样本点多的情况,普通的dijkstra算法不能满足LLE算法的要求。

    LLE算法的第二步是计算出样本点的局部重建权值矩阵。这里定义一个误差函数,如下所示:

    

其中 为的k个近邻点, 是 与 之间的权值,且要满足条件:。这里求取W矩阵,需要构造一个局部协方差矩阵  。

    将上式与相结合,并采用拉格朗日乘子法,即可求出局部最优化重建权值矩阵:

    在实际运算中,可能是一个奇异矩阵,此时必须正则化,如下所示:

其中r是正则化参数,I是一个kxk的单位矩阵。

    LLE算法的最后一步是将所有的样本点映射到低维空间中。映射条件满足如下所示:

其中,为损失函数值,的输出向量,的k个近邻点,且要满足两个条件,即:

其中I是的单位矩阵。这里的可以存储在的稀疏矩阵W中,当的近邻点时,,否则,。则损失函数可重写为:

其中M是一个的对称矩阵,其表达式为:

要使损失函数值达到最小, 则取Y为M的最小m个非零特征值所对应的特征向量。在处理过程中,将M的特征值从小到大排列,第一个特征值几乎接近于零,那么舍去第一个特征值。通常取第间的特征值所对应的特征向量作为输出结果。




代码:
Matlab LLE主函数:

[cpp]  view plain copy
  1. % LLE ALGORITHM (using K nearest neighbors)  
  2. % [Y] = lle(X,K,dmax)  
  3. % X    :data as D x N matrix (D = dimensionality, N = #points)  
  4. % K    :number of neighbors  
  5. % dmax :max embedding dimensionality  
  6. % Y    :embedding as dmax x N matrix  
  7. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  8. function [Y] = lle(X,K,d)  
  9. [D,N] = size(X);  
  10. fprintf(1,'LLE running on %d points in %d dimensions\n',N,D);  
  11.    
  12. %% Step1: compute pairwise distances & find neighbour  
  13. fprintf(1,'-->Finding %d nearest neighbours.\n',K);  
  14. X2 = sum(X.^2,1);  
  15. distance = repmat(X2,N,1)+repmat(X2',1,N)-2*X'*X;  
  16. [sorted,index] = sort(distance);  
  17. neighborhood = index(2:(1+K),:);  
  18.    
  19. % Step2: solve for recinstruction weights  
  20. fprintf(1,'-->Solving for reconstruction weights.\n');  
  21. if(K>D)  
  22.   fprintf(1,'   [note: K>D; regularization will be used]\n');  
  23.   tol=1e-3; % regularlizer in case constrained fits are ill conditioned  
  24. else  
  25.   tol=0;  
  26. end  
  27.    
  28. W = zeros(K,N);  
  29. for ii=1:N  
  30.    z = X(:,neighborhood(:,ii))-repmat(X(:,ii),1,K); % shift ith pt to origin  
  31.    C = z'*z;                                        % local covariance  
  32.    C = C + eye(K,K)*tol*trace(C);                   % regularlization (K>D)  
  33.    W(:,ii) = C\ones(K,1);                           % solve Cw=1  
  34.    W(:,ii) = W(:,ii)/sum(W(:,ii));                  % enforce sum(w)=1  
  35. end;  
  36.    
  37. % Step 3: compute embedding from eigenvects of cost matrix M=(I-W)'(I-W)  
  38. fprintf(1,'-->Computing embedding.\n');  
  39. % M=eye(N,N); % use a sparse matrix with storage for 4KN nonzero elements  
  40. M = sparse(1:N,1:N,ones(1,N),N,N,4*K*N);  
  41. for ii=1:N  
  42.    w = W(:,ii);  
  43.    jj = neighborhood(:,ii);  
  44.    M(ii,jj) = M(ii,jj) - w';  
  45.    M(jj,ii) = M(jj,ii) - w;  
  46.    M(jj,jj) = M(jj,jj) + w*w';  
  47. end;  
  48.    
  49. % calculation of embedding  
  50. options.disp = 0;  
  51. options.isreal = 1;  
  52. options.issym = 1;  
  53. [Y,eigenvals] = eigs(M,d+1,0,options);  
  54. Y = Y(:,2:d+1)'*sqrt(N); % bottom evect is [1,1,1,1...] with eval 0  
  55. fprintf(1,'Done.\n');  
  56.    
  57. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  58. % other possible regularizers for K>D  
  59. %   C = C + tol*diag(diag(C));                       % regularlization  
  60. %   C = C + eye(K,K)*tol*trace(C)*K;                 % regularlization  


http://chatgpt.dhexx.cn/article/Rda3V2i5.shtml

相关文章

LLE原理总结

原文: https://www.cnblogs.com/pinard/p/6266408.html?utm_sourceitdadao&utm_mediumreferral 局部线性嵌入(Locally Linear Embedding,以下简称LLE)也是非常重要的降维方法。和传统的PCA,LDA等关注样本方差的降维方法相比,…

LLE原理及推导过程

1.概述 所谓LLE(局部线性嵌入)即”Locally Linear Embedding”的降维算法,在处理所谓流形降维的时候,效果比PCA要好很多。 首先,所谓流形,我们脑海里最直观的印象就是Swiss roll,在吃它的时候喜欢把它整个摊开成一张饼再吃,其实这个过程就实现了对瑞士卷的降维操作…

LLE理解

背景 局部线性嵌入(Locally Linear Embedding,以下简称LLE)是一种降维方法。和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征,由于LLE在降维时保持了样本的局部特征,它广泛的用于…

局部线性嵌入(LLE)原理总结

局部线性嵌入(Locally Linear Embedding,以下简称LLE)也是非常重要的降维方法。和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征,由于LLE在降维时保持了样本的局部特征,它广泛的用于图像图像识别,高维数据可视化等领域。下面我们就对…

机器学习之:LLE (locally linear embedding) 局部线性嵌入降维算法

文章目录 LLE1. LLE 是什么2. LLE 的主要思想3. LLE 算法推导过程3.1 如何找到 k 个近邻3.2 找 x i x_i xi​ 与这 k 个近邻的线性关系3.3 x i x_i xi​ 与 k 个近邻点的线性关系求解过程3.3.1 奇异值分解3.3.1.1 特征值分解 (EVD)3.3.1.2 奇异值分解&…

安装HAXM

老师给的是在网上下载HAXM。但事实上打开这里你会发现Android 已经自动下载了HAXM 因此你要做的是找到HAXM路径,然后继续安装它。我的路径是 C:\Users\DELL\AppData\Local\Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager

Intel x86 Emulator Accelerator(HAXM installer)无法安装

在sdk manager中Intel x86 Emulator Accelerator(HAXM installer)后面显示 NOT compatible with windows 这个时候可以尝试手动安装Intel x86 Emulator Accelerator(HAXM installer) 1、在网上下载后,https://software.intel.com/en-us/articles/intel-hardware-a…

haxm intel庐_Android Studio中Intel HAXM的那些坑

最近用过两台电脑折腾Android Studio,都是windows的系统,不知道为什么连着踩了两个坑。 第一台我结束了qemu-system-i386.exe这个倒霉的进程 导致我开启模拟器的时候一直提示我没有安装Intel HAXM,没办法咯,只好再安装一遍&#x…

AMD CPU无法安装Intel HAXM解决方法

步骤1. 步骤2. 找到安装目录(我的安装目录:D:\Android\SDK\extras\google\Android_Emulator_Hypervisor_Driver)下的这个文件:silent_install,右击该文件选择“以管理员运行”,即可。

Android Studio 如何 安装 HAXM

Android Studio 如何 安装 HAXM 打开 Android Stutio打开设置搜索 Android,定位到 Android SDK切换到 SKD Tools 标签,然后点选下面的 Intel x86 Emulator Eccelerator(HAXM installer),之后 Apply 应用,编辑器就会自动下载这个东…

HAXM installation failed. To install HAXM follow the instructions found at

AMD处理器 在控制面板中打开虚拟机平台,重启电脑

Android Studio中 HAXM安装失败的问题(Intel HAXM installation failed. To install Intel HAXM follow the…)

我要喷人了,这破Android Studio也太难搞了,环境按了我半天各种问题都试了,友友们啊记得先看日志再去找问题,我就是只看报错没有找日志后面突然去看一下就找到问题了 日志就是报错信息上面的那一句,我这里日志说的是&a…

Android Studio启动虚拟机时一直提示安装Haxm

目录 问题描述 问题截图 原因猜测 解决方案 问题描述 Android Studio启动虚拟机时一直出现Install Haxm,但是按照他的安装步骤后还是不停的弹出提示安装Haxm 问题截图 原因猜测 为什么会出现这种情况那?我猜测应该是权限问题,也就是说…

“暴力”解决HAXM installation failed问题

废话不多说,当你遇到 “Intel HAXM安装失败。要安装Intel HAXM,请遵循以下说明:https://githubCom/intel/haxm/wiki/安装-Windows上的说明” 的情况时(如下图所示) 造成安装失败有多种可能原因,每个人的电脑…

haxm intel庐_在电脑上安装Intel HAXM(硬件加速执行管理器)

用Inter Atom模式的Android模拟器启动报一下错误: Starting emulator for AVD new emulator: ERROR: x86 emulation currently requires hardware acceleration! Please ensure Intel HAXM is properly installed and usable. CPU acceleration status: HAX kernel …

关于android studio 中安装intel haxm问题的解决

关于android studio 安装intel haxm问题的解决 遇到的问题解决问题总结遇到的问题 安装android studio 过程中intel haxm失败,导致后续笔记本运行模拟器过程中漫长等待让我痛不欲生。于是着手解决intel haxm安装失败问题。我的笔记本型号是thinkpad w510,处理器i7 Q720,操作…

intel android haxm,使用Intel HAXM为Android模拟器加速,媲美真机

Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualization Technology (VT) 的硬件加速, 因此需要 CPU 支持 VT , 而且仅限于 Intel CPU, 与 AMD CPU 无缘, Intel HAXM 的描述如下: 使用…

intel android haxm,使用Intel HAXM为 Android模拟器加速

Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualization Technology (VT) 的硬件加速, 因此需要 CPU 支持 VT , 而且仅限于 Intel CPU, 与 AMD CPU 无缘, Intel HAXM 的描述如下:使用…

安装haxm时遇到的三种报错及解决措施

安装Android Studio时遇到这样的报错,花了一整天才解决掉,基本翻遍了CSDN上的所有相关文章,步骤如下: 检查错误原因参考文章1 这一步需要我们找到haxm的安装日志,路径在c盘里,具体如图,我的路径是C:\User…

Android Studio中启动模拟器时提示HAXM错误的解决方法

Android Studio中启动模拟器时,会提示HAXM错误,如图1所示。 图1 提示HAXM错误 以上错误的提示信息是需要在BIOS中打开“VT-x”设置,但是打开该设置后,依然会显示该错误信息。 相关链接1 VT-x,其中,VT是Vi…