前言

与等度量映射(Isomap)相同,局部线性嵌入(Locally Linear Embedding, 简称LLE)也是流形学习算法中的一员,是一种非线性的降维方法。LLE在2000年被发明出来,并发表在Sience期刊上,截止2019年5月,被引量高达1.3万。它与Isomap试图保持样本间的距离不同,LLE算法试图保持的是邻域内样本之间的线性关系。如下图所示:

如图,高维空间中样本xix_ixi可由它的近邻样本xj\boldsymbol x_jxjxk\boldsymbol x_kxkxl\boldsymbol x_lxl通过线性组合而重构出来,即
xi=wijxj+wikxk+wilxl(1)\boldsymbol x_i=w_{ij}\boldsymbol x_j+w_{ik}\boldsymbol x_k+w_{il}\boldsymbol x_l(1) xi=wijxj+wikxk+wilxl(1)
LLE算法希望式(1)中的关系在低维空间中得以保持。

算法推导

LLE先为每个样本xix_ixi找近邻下标集合QiQ_iQi,然后计算基于QiQ_iQi中的样本点对xix_ixi进行线性重构的系数wiw_iwi,优化目标为重构误差最小:
min⁡W∑i=1m∥xi−∑j∈Qiwijxj∥22(2)s.t.∑j∈Qiwij=1\begin{aligned} \min\limits_{\boldsymbol W}&\sum^m_{i=1}\| \boldsymbol x_i-\sum_{j \in Q_i}w_{ij}\boldsymbol x_j \|^2_2(2)\\ s.t.&\sum_{j \in Q_i}w_{ij}=1 \end{aligned}Wmins.t.i=1mxijQiwijxj22(2)jQiwij=1
转换为
∑i=1m∥xi−∑j∈Qiwijxj∥22=∑i=1m∥∑j∈Qiwijxi−∑j∈Qiwijxj∥22=∑i=1m∥∑j∈Qiwij(xi−xj)∥22=∑i=1mWiT(xi−xj)(xi−xj)TWi=∑i=1mWiTCiWi\begin{aligned} \sum^m_{i=1}\| \boldsymbol x_i-\sum_{j \in Q_i}w_{ij}\boldsymbol x_j \|^2_2 &=\sum^m_{i=1}\| \sum_{j \in Q_i}w_{ij}\boldsymbol x_i- \sum_{j \in Q_i}w_{ij}\boldsymbol x_j \|^2_2 \\ &=\sum^m_{i=1}\| \sum_{j \in Q_i}w_{ij}(\boldsymbol x_i- \boldsymbol x_j) \|^2_2\\ &=\sum^m_{i=1}\boldsymbol W^T_i(\boldsymbol x_i-\boldsymbol x_j)(\boldsymbol x_i-\boldsymbol x_j)^T\boldsymbol W_i\\ &=\sum^m_{i=1}\boldsymbol W^T_i\boldsymbol C_i\boldsymbol W_i \end{aligned}i=1mxijQiwijxj22=i=1mjQiwijxijQiwijxj22=i=1mjQiwij(xixj)22=i=1mWiT(xixj)(xixj)TWi=i=1mWiTCiWi
其中,Wi=(wi1,wi2,⋅⋅⋅,wik)T\boldsymbol W_i=(w_{i1},w_{i2},\cdot\cdot\cdot,w_{ik})^TWi=(wi1,wi2,,wik)TkkkQiQ_iQi集合的长度,Ci=(xi−xj)(xi−xj)T\boldsymbol C_i=(\boldsymbol x_i-\boldsymbol x_j)(\boldsymbol x_i-\boldsymbol x_j)^TCi=(xixj)(xixj)Tj∈Qij \in Q_ijQi
∑j∈Qiwij=WiT1k=1\sum_{j\in Q_i}w_{ij}=\boldsymbol W_i^T\boldsymbol 1_k=1 jQiwij=WiT1k=1
其中,1k\boldsymbol 1_k1k为k维全1向量。
运用拉格朗日乘子法可得,
J(W)=∑i=1mWiTCiWi+λ(WiT1k−1)∂J(W)∂Wi=2CiWi+λ1k\begin{aligned} J(\boldsymbol W)&=\sum^m_{i=1}\boldsymbol W^T_i\boldsymbol C_i\boldsymbol W_i+\lambda(\boldsymbol W_i^T\boldsymbol 1_k-1)\\ \cfrac{\partial J(\boldsymbol W)}{\partial \boldsymbol W_i} &=2\boldsymbol C_i\boldsymbol W_i+\lambda\boldsymbol 1_k \end{aligned}J(W)WiJ(W)=i=1mWiTCiWi+λ(WiT1k1)=2CiWi+λ1k
∂J(W)∂Wi=0\cfrac{\partial J(\boldsymbol W)}{\partial \boldsymbol W_i}=0WiJ(W)=0,故
Wi=−12λCi−11kWi=λCi−11k\begin{aligned} \boldsymbol W_i&=-\cfrac{1}{2}\lambda\boldsymbol C_i^{-1}\boldsymbol 1_k\\ \boldsymbol W_i&=\lambda\boldsymbol C_i^{-1}\boldsymbol 1_k\\ \end{aligned}WiWi=21λCi11k=λCi11k
其中,由于λ\lambdaλ原本为一个常数,加入−12这个放缩因子-\cfrac{1}{2}这个放缩因子21并无影响。利用WiT1k=1\boldsymbol W^T_i\boldsymbol 1_k=1WiT1k=1,对Wi\boldsymbol W_iWi归一化,可得
Wi=Ci−11k1kCi−11k\boldsymbol W_i=\cfrac{\boldsymbol C^{-1}_i\boldsymbol 1_k}{\boldsymbol 1_k\boldsymbol C^{-1}_i\boldsymbol 1_k} Wi=1kCi11kCi11k
在得到高维空间样本点之间的关系之后,按照LLE的算法思想(在低维空间中保持wiw_iwi不变),于是xix_ixi降维后的样本ziz_izi应达到的优化目标如下式(2):
min⁡Z∑i=1m∥zi−∑j∈Qiwijzj∥22(3)\min\limits_{\boldsymbol Z}\sum^m_{i=1}\| \boldsymbol z_i-\sum_{j \in Q_i}w_{ij}\boldsymbol z_j \|^2_2(3) Zmini=1mzijQiwijzj22(3)
与求解WWW一样的过程:
min⁡Z∑i=1m∥zi−∑j∈Qiwijzj∥22=∑i=1m∥ZIi−ZWi∥22=∑i=1m∥Z(Ii−Wi)∥22=∑i=1m(Z(Ii−Wi))TZ(Ii−Wi)=∑i=1m(Ii−Wi)TZTZ(Ii−Wi)=tr((I−W)TZTZ(I−W))=tr(Z(I−W)(I−W)TZT)=tr(ZMZT)\begin{aligned} \min\limits_{\boldsymbol Z}\sum^m_{i=1}\| \boldsymbol z_i-\sum_{j \in Q_i}w_{ij}\boldsymbol z_j \|^2_2&=\sum^m_{i=1}\|\boldsymbol Z\boldsymbol I_i-\boldsymbol Z\boldsymbol W_i\|^2_2\\ &=\sum^m_{i=1}\|\boldsymbol Z(\boldsymbol I_i-\boldsymbol W_i)\|^2_2\\ &=\sum^m_{i=1}(\boldsymbol Z(\boldsymbol I_i-\boldsymbol W_i))^T\boldsymbol Z(\boldsymbol I_i-\boldsymbol W_i)\\ &=\sum^m_{i=1}(\boldsymbol I_i-\boldsymbol W_i)^T\boldsymbol Z^T\boldsymbol Z(\boldsymbol I_i-\boldsymbol W_i)\\ &=tr((\boldsymbol I-\boldsymbol W)^T\boldsymbol Z^T\boldsymbol Z(\boldsymbol I-\boldsymbol W))\\ &=tr(\boldsymbol Z(\boldsymbol I-\boldsymbol W)(\boldsymbol I-\boldsymbol W)^T\boldsymbol Z^T)\\ &=tr(\boldsymbol Z\boldsymbol M\boldsymbol Z^T) \end{aligned}Zmini=1mzijQiwijzj22=i=1mZIiZWi22=i=1mZ(IiWi)22=i=1m(Z(IiWi))TZ(IiWi)=i=1m(IiWi)TZTZ(IiWi)=tr((IW)TZTZ(IW))=tr(Z(IW)(IW)TZT)=tr(ZMZT)
其中,M=(I−W)(I−W)T\boldsymbol M=(\boldsymbol I-\boldsymbol W)(\boldsymbol I-\boldsymbol W)^TM=(IW)(IW)T
再加上约束条件ZTZ=I\boldsymbol Z^T\boldsymbol Z=\boldsymbol IZTZ=I,保证得到标准化(标准正交空间)的低维数据。
式(2)重写为:
min⁡Ztr(ZMZT)(4)s.t.ZTZ=I\begin{aligned} &\min\limits_{\boldsymbol Z}tr(\boldsymbol Z\boldsymbol M\boldsymbol Z^T)(4) \\ &s.t.\boldsymbol Z^T\boldsymbol Z=\boldsymbol I \end{aligned}Zmintr(ZMZT)(4)s.t.ZTZ=I
式(3)可以通过特征值分解求解:MMM最小的d′d'd个特征值对应的特征向量组成的矩阵即为ZT\boldsymbol Z^TZT

算法步骤

输入:样本集D={x1,x2,⋅⋅⋅,xm}D=\{\boldsymbol x_1,\boldsymbol x_2,\cdot\cdot\cdot,\boldsymbol x_m\}D={x1,x2,,xm};近邻参数kkk;低维空间维数d′d'd
步骤
1for i=1,2,…,m do
2: 确定xi\boldsymbol x_ixikkk近邻;
3: 从式(2)求得wijw_{ij}wijj∈Qij \in Q_ijQi
4: 对于j∉Qij \notin Q_ij/Qi,令wij=0w_{ij}=0wij=0
5end for
6:从式(3)得到M\boldsymbol MM
7:对M\boldsymbol MM进行特征值分解;
8return M\boldsymbol MM的最小d′d'd个特征值对应的特征向量
输出:样本集DDD在低维空间的投影Z={z1,z2,⋅⋅⋅,zm}Z=\{ \boldsymbol z_1,\boldsymbol z_2,\cdot\cdot\cdot,\boldsymbol z_m \}Z={z1,z2,,zm}

实验效果

调用sklearn库

"""
LLE : Locally Linear Embedding
Refercences :
[1]周志华.机器学习[M].清华大学出版社,2016:425.
[2]http://scikit-learn.sourceforge.net/dev/modules/generated/sklearn.manifold.LocallyLinearEmbedding.htmlAuthor : Ggmatch
Date : 2019/5/14
"""
from time import timeimport matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.ticker import NullFormatterfrom sklearn import manifold, datasets# 制造样本
n_points = 1000
X, color = datasets.samples_generator.make_s_curve(n_points, random_state=0)
n_neighbors = 10fig = plt.figure(figsize=(6, 4))  #画板
gs = fig.add_gridspec(1,2)  #共2副子图
ax1 = fig.add_subplot(gs[0,0], projection='3d')  #第一幅子图表示原始样本分布
ax1.scatter(X[:, 0], X[:, 1], X[:, 2], c=color, cmap=plt.cm.Spectral)# LLE降维
n_components = 2t0 = time()  #计时开始
Y = manifold.LocallyLinearEmbedding(n_neighbors, n_components).fit_transform(X)
t1 = time()  #计时结束
ax2 = fig.add_subplot(gs[0,1])
ax2.scatter(Y[:, 0], Y[:, 1], c=color, cmap=plt.cm.Spectral)  #第2副子图表示降维后样本分布
ax2.set_title("LLE (%.2g sec)" % (t1 - t0))
ax2.xaxis.set_major_formatter(NullFormatter())
ax2.yaxis.set_major_formatter(NullFormatter())plt.show()

实验效果

参考文献

[1]Roweis S T, Saul L K. Nonlinear dimensionality reduction by locally linear embedding[J]. science, 2000, 290(5500): 2323-2326.
[2]周志华.机器学习[M].清华大学出版社,2016:425.
[3]http://scikit-learn.sourceforge.net/dev/modules/generated/sklearn.manifold.LocallyLinearEmbedding.html

特征抽取篇之LLE(Locally Linear Embedding)相关推荐

  1. 机器学习降维算法三:LLE (Locally Linear Embedding) 局部线性嵌入

    LLE Locally linear embedding(LLE)[1] 是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构.LLE可以说是流形学习方法最经典的工作之一.很多后续的流形学 ...

  2. 第五章 LLE——Locally Linear Embedding

    [IOC] 概念 Locally Linear Embedding LLE LLE是一种非线性的降维方法,数据是局部线性的,也就是在小范围内,数据是线性的,那每个数据点就可以用k邻近的数据点的线性组合 ...

  3. 算法总结(六)Isomap(Isometric mapping等度量映射)和LLE(Locally Linear Embedding)的理解

    学习资料 <机器学习>周志华 https://blog.csdn.net/xiaoweidz9/article/details/79894126 dzjwLu https://blog.c ...

  4. 局部线性嵌入(Locally Linear Embedding,简称LLE)

    局部线性嵌入(Locally Linear Embedding,简称LLE) 1 绪论 与Isomap试图保持邻域内样本之间的距离不同,局部线性嵌入(Locally Linear Embedding, ...

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

    文章目录 LLE 1. LLE 是什么 2. LLE 的主要思想 3. LLE 算法推导过程 3.1 如何找到 k 个近邻 3.2 找 xix_ixi​ 与这 k 个近邻的线性关系 3.3 xix_i ...

  6. 论文笔记:Nonlinear Dimensionality Reduction by Locally Linear Embedding

    一.基本信息 论文题目:<Nonlinear Dimensionality Reduction by Locally Linear Embedding > 发表时间:Science  20 ...

  7. 【论文翻译】:Nonlinear Dimensionality Reduction by Locally Linear Embedding

    [论文题目]:Nonlinear Dimensionality Reduction by Locally Linear Embedding [论文来源]:Nonlinear Dimensionalit ...

  8. 【论文翻译】Nonlinear Dimensionality Reduction by Locally Linear Embedding

    论文题目:Nonlinear Dimensionality Reduction by Locally Linear Embedding 论文来源:http://science.sciencemag.o ...

  9. Nonlinear Dimensionality Reduction by Locally Linear Embedding

    Nonlinear Dimensionality Reduction by Locally Linear Embedding 通过局部线性嵌入减少非线性维数 摘要: Many areas of sci ...

最新文章

  1. 千万级游标_在一个千万级的数据库查寻中,如何提高查询效率
  2. 多图片每隔2S循环播放
  3. 多少行数_技术分享 | MySQL:查询字段数量多少对查询效率的影响
  4. Android启动过程深入解析【转】
  5. poj-1042 nyoj-30(Gone fishing)
  6. openpyxl库,1秒合并多张表格并设置图表格式
  7. Java中的责任链设计模式
  8. Linux系统调用过程分析
  9. 01-复杂度1 最大子列和问题 (20 分)
  10. MountFlags of reg
  11. 多规则策略如何筛选|视频版
  12. [BZOJ4484][JSOI2015]最小表示(拓扑排序+bitset)
  13. Android中可展开的列表组件(ExpandableListView)的使用
  14. 人人网主页登录_人人网回归,你的前任和全部黑历史将被翻开!买账吗?
  15. JQueryUI自动补全 搜索提示实践
  16. 关于鼠标连续点击脚本的分享
  17. 安卓手机重启日志_[手机维修自学教程]苹果安卓 手机无线重启故障原因维修技巧...
  18. Altium常用快捷键
  19. 写一些随感,以此今年金庸先生
  20. 安装CUDA时,nvcc --version和cat /usr/local/cuda/version.txt版本不一致

热门文章

  1. IC笔试牛客网verilog刷题总结三
  2. VS code win10 环境,下载安装调试
  3. 《Cisco局域网交换机配置手册(第2版•修订版)》一延伸阅读
  4. 这名“业余”程序员,曾用50张1080Ti对抗癌症!!!
  5. C# winform使用SQLite
  6. rac管理 sqlserver_Oracle RAC系列之:利用srvctl管理RAC数据库
  7. 【BIM+GIS】ArcGIS Pro中对Revit的Rvt数据进行地理配准操作
  8. 基于调用百度翻译API的简易翻译器(python)
  9. ZUMA(COCI#2009-2010#contest 5)
  10. 砸地鼠 php源码,分享一个html+js实现打地鼠游戏的实例代码