lle算法c 语言,局部线性嵌入算法(LLE)与其Python实现-Go语言中文社区

article/2025/10/14 6:00:35

PCA是至今为止运用最为广泛的数据降维算法,它通过最小化重构误差达到将高维数据映射到低维并同时保留数据中所存在的绝大部分信息。但是一般的PCA也有缺点,它只能实现线性降维。当然现在也有kernel PCA可以实现非线性降维,但我们今天介绍的是另一种实现非线性降维的算法——局部线性嵌入(Local Linear Embedding),其是基于流形学习的思想。

一、流形学习(Mainfold Learning)

流形学习是基于流形的思想,其认为现实世界中的高维数据集都可以用低维的流形所代替,而流形一般指高维空间中的几何结构,如曲线或曲面在高维空间中的推广,其是一个空间而不是面。所以直观上来讲,一个流形好比是一个d维的空间,在一个m维的空间中(m>d)被扭曲之后的结果。可以通过Python在三维空间中绘制简单的流形:

#%matplotlib inline

import matplotlib as mpl

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import proj3d

#Generate mainfold data set

from sklearn.datasets import make_swiss_roll

X, t = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)

axes = [-11.5, 14, -2, 23, -12, 15]

#plot figure

fig = plt.figure(figsize=(6, 5))

ax = fig.add_subplot(111, projection='3d')

ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=t, cmap=plt.cm.hot)

ax.view_init(10, -70)

ax.set_xlabel("$x_1$", fontsize=18)

ax.set_ylabel("$x_2$", fontsize=18)

ax.set_zlabel("$x_3$", fontsize=18)

ax.set_xlim(axes[0:2])

ax.set_ylim(axes[2:4])

ax.set_zlim(axes[4:6])

plt.show()

df08ffbcf702871ae0f32521a8c02f81.png

可以看到,虽然数据集是在三维空间中的,但是我们完全可以通过一定的方法将其平铺在二维空间中并同时保存其数据结构。最简单的方法就是将卷曲的带状数据集拉直,如下图:

480a4589387e17505d538749a900c964.png

而这时如果想通过PCA将数据进行降维,效果将会非常差,因为你很难能够找到一个线性的平面将数据很好的进行投影,我们可以通过以下代码对比两种方法:

plt.subplot(121)

plt.scatter(X[:, 0], X[:, 1], c=t, cmap=plt.cm.hot)

plt.axis(axes[:4])

plt.xlabel("$x_1$", fontsize=18)

plt.ylabel("$x_2$", fontsize=18, rotation=0)

plt.grid(True)

plt.subplot(122)

plt.scatter(t, X[:, 1], c=t, cmap=plt.cm.hot)

plt.axis([4, 15, axes[2], axes[3]])

plt.xlabel("$z_1$", fontsize=18)

plt.grid(True)

plt.show()

058dff6f8eeb3c7a030e343b2ef071c9.png

左边是将数据投影在xy平面上的结果,而右边是按照上图所示拉直数据集得到的结果。可以看到右边的降维效果远远好于左边。

基于流形与流形学习的思想,我们可以对数据进行非线性的降维,常见的方法有局部线性嵌入,拉普拉斯特征映射,局部保持投影,等距映射等。

二、局部线性嵌入(LLE)

LLE的基本思想如下,数据集X中每个样本ximathrm{x}_{i}xi​都可以通过与其邻近的几个样本近似的线性重构,用公式表示为:

xi≈∑jwijxjmathrm{x}_{i} approx sum_{j} w_{i j} mathrm{x}_{j}xi​≈j∑​wij​xj​

其中j为与ximathrm{x}_{i}xi​相近的j个邻居。这样,求解如下的优化问题就可以得到重构系数:

ε(W)=∑i∥xi−∑jwijxj∥2varepsilon(mathrm{W})=sum_{i}left|mathrm{x}_{i}-sum_{j} w_{i j} mathrm{x}_{j}right|^{2}ε(W)=i∑​∥∥∥∥∥​xi​−j∑​wij​xj​∥∥∥∥∥​2

∑jwij=1sum_{j} w_{i j}=1j∑​wij​=1

得到重构系数后,将数据集X映射低维空间Y中,要保持同样的重构关系:

Φ(Y)=∑i∥yi−∑jwijyj∥2Phi(Y)=sum_{i}left|y_{i}-sum_{j} w_{i j} y_{j}right|^{2}Φ(Y)=i∑​∥∥∥∥∥​yi​−j∑​wij​yj​∥∥∥∥∥​2

这样,我们便可以将流形铺开到低维空间中。通过求解上述优化问题就可以得到映射后的数据集Y。

三、算法推导

高维状态下重构系数的计算

设数据集X中样本个数为m,样本维数为n,映射后的数据集Y中样本维数为d,d<

J(W)=∑i=1m∥xi−∑j=1kwijxj∥22J(W)=sum_{i=1}^{m}left|x_{i}-sum_{j =1}^{k} w_{i j} x_{j}right|_{2}^{2}J(W)=i=1∑m​∥∥∥∥∥​xi​−j=1∑k​wij​xj​∥∥∥∥∥​22​

∑jkwij=1sum_{j}^{k} w_{i j}=1j∑k​wij​=1

通过∑jkwij=1sum_{j}^{k} w_{i j}=1∑jk​wij​=1,我们可以对优化函数进行化简:

J(W)=∑i=1m∥xi−∑jkwijxj∥22=∑i=1m∥∑jkwijxi−∑jkwijxj∥22=∑i=1m∥∑jkwij(xi−xj)∥22=∑i=1mWiT(xi−xj)T(xi−xj)Wibegin{aligned} J(W) &=sum_{i=1}^{m}left|x_{i}-sum_{j }^{k} w_{i j} x_{j}right|_{2}^{2} \ &=sum_{i=1}^{m}left|sum_{j}^{k} w_{i j} x_{i}-sum_{j }^{k} w_{i j} x_{j}right|_{2}^{2} \ &=sum_{i=1}^{m}left|sum_{j }^{k} w_{i j}left(x_{i}-x_{j}right)right|_{2}^{2} \ &=sum_{i=1}^{m} W_{i}^{T}left(x_{i}-x_{j}right)^{T}left(x_{i}-x_{j}right) W_{i}end{aligned}J(W)​=i=1∑m​∥∥∥∥∥​xi​−j∑k​wij​xj​∥∥∥∥∥​22​=i=1∑m​<


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

相关文章

LLE降维

LLE 是 Locally Linear embedding 直观是在样本点的高维空间相邻近的话&#xff0c;可以用低维的子空间描述。 基本原理分三步&#xff1a; &#xff08;1&#xff09; 找到邻居 neighbors .(可以使用多种方法&#xff0c;邻居K的数目选择影响很大) &#xff08;2&#xff09…

局部线性嵌入LLE

[1]https://www.cnblogs.com/pinard/p/6266408.html [2]Graph Embedding Techniques, Applications, and Performance: A Survey 主要参考和图片来源[1] LLE推导算法流程 局部线性嵌入(Locally Linear Embedding,LLE)&#xff0c;一种重要降维方法&#xff0c;与PCA、LDA相比…

LLE降维算法

欢迎关注”生信修炼手册”! 流形分析作为非线性降维的一个分支&#xff0c;拥有多种算法&#xff0c;常见的算法列表如下 流形分析的要点在于降维之后&#xff0c;仍然保留流形中的某些几何属性。之前介绍的isomap保留了测地距离这一几何属性&#xff0c;由于考虑的是全局关系&…

LLE算法

Locally linear embedding (LLE) (Sam T.Roweis and Lawrence K.Saul, 2000)以及Supervised locally linear embedding (SLLE) (Dick and Robert, 2002) 是最近提出的非线性降维方法&#xff0c;它能够使降维后的数据保持原有拓扑结构。 LLE算法可以有图1所示的一个例子来描述。…

LLE原理总结

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

LLE原理及推导过程

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

LLE理解

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

局部线性嵌入(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 特征值分解 &#xff08;EVD&#xff09;3.3.1.2 奇异值分解&…

安装HAXM

老师给的是在网上下载HAXM。但事实上打开这里你会发现Android 已经自动下载了HAXM 因此你要做的是找到HAXM路径&#xff0c;然后继续安装它。我的路径是 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、在网上下载后&#xff0c;https://software.intel.com/en-us/articles/intel-hardware-a…

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

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

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

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

Android Studio 如何 安装 HAXM

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

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

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

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

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

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

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

“暴力”解决HAXM installation failed问题

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

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

用Inter Atom模式的Android模拟器启动报一下错误&#xff1a; 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,操作…