主要思想

LE将 D D D维特征 X = [ x 1 , x 2 , ⋯ , x N ] ∈ R D × N \mathbf{X}=[\mathbf{x}_1, \mathbf{x}_2, \cdots, \mathbf{x}_N]\in\mathbb{R}^{D\times N} X=[x1,x2,,xN]RD×Nx i ∈ R D \mathbf{x}_i\in\mathbb{R}^{D} xiRD)映射到 d ( d ≪ D ) d(d\ll D) d(dD)维空间中( Y = [ y 1 , y 2 , ⋯ , y N ] ∈ R d × N \mathbf{Y}=[\mathbf{y}_1, \mathbf{y}_2, \cdots, \mathbf{y}_N]\in\mathbb{R}^{d\times N} Y=[y1,y2,,yN]Rd×N),使得在降维后的空间中,尽量使在原始空间 X \mathbf{X} X中近的点在新的空间 Y \mathbf{Y} Y中仍然近,远的仍然远。

推导方法

根据原始数据 X \mathbf{X} X构造无向加权图邻接矩阵 W ∈ R N × N \mathbf{W}\in\mathbb{R}^{N\times N} WRN×N(距离越近的两个点,权重越大),根据此矩阵构造度数矩阵
D = [ ∑ i W 1 , i ∑ i W 2 , i ⋱ ∑ i W N , i ] \mathbf{D}=\left[ \begin{matrix} \sum_i{\mathbf{W}_{1,i}}& & & \\ & \sum_i{\mathbf{W}_{2,i}}& & \\ & & \ddots& \\ & & & \sum_i{\mathbf{W}_{N,i}}\\ \end{matrix} \right] D=

iW1,iiW2,iiWN,i


那么拉普拉斯矩阵 L = D − W \mathbf{L}=\mathbf{D}-\mathbf{W} L=DW,所以优化目标为
a r g min ⁡ Y 1 2 ∑ i , j = 1 N W i , j ∥ y i − y j ∥ 2 a r g min ⁡ Y 1 2 ∑ i , j = 1 N W i , j ( y i − y j ) T ( y i − y j ) a r g min ⁡ Y 1 2 ∑ i , j = 1 N W i , j ( y i T y i − y i T y j − y j T y i + y j T y j ) a r g min ⁡ Y ∑ i = 1 N y i T y i ∑ j = 1 N W i , j − ∑ i , j = 1 N W i , j y i T y j a r g min ⁡ Y t r a c e ( Y D Y T ) − t r a c e ( Y W Y T ) [ t r a c e ( y i T y j ) = t r a c e ( y j y i T ) ] a r g min ⁡ Y t r a c e ( Y ( D − W ) Y T ) a r g min ⁡ Y t r a c e ( Y L Y T ) \mathop {\mathrm{arg} \min} \limits_{\mathbf{Y}}\,\,\frac{1}{2}\sum_{i,j=1}^N{\mathbf{W}_{i,j}\parallel \mathbf{y}_i-\mathbf{y}_j\parallel ^2} \\ \mathop {\mathrm{arg} \min} \limits_{\mathbf{Y}}\,\,\frac{1}{2}\sum_{i,j=1}^N{\mathbf{W}_{i,j}\left( \mathbf{y}_i-\mathbf{y}_j \right) ^T\left( \mathbf{y}_i-\mathbf{y}_j \right)} \\ \mathop {\mathrm{arg} \min} \limits_{\mathbf{Y}}\,\,\frac{1}{2}\sum_{i,j=1}^N{\mathbf{W}_{i,j}\left( \mathbf{y}_{i}^{T}\mathbf{y}_i-\mathbf{y}_{i}^{T}\mathbf{y}_j-\mathbf{y}_{j}^{T}\mathbf{y}_i+\mathbf{y}_{j}^{T}\mathbf{y}_j \right)} \\ \mathop {\mathrm{arg} \min} \limits_{\mathbf{Y}}\,\,\sum_{i=1}^N{\mathbf{y}_{i}^{T}\mathbf{y}_i{\color{red} \sum_{j=1}^N{\mathbf{W}_{i,j}}}}-\sum_{i,j=1}^N{\mathbf{W}_{i,j}\mathbf{y}_{i}^{T}\mathbf{y}_j} \\ \mathop {\mathrm{arg} \min} \limits_{\mathbf{Y}}\,\,trace\left( \mathbf{Y}{\color{red} \mathbf{D}}\mathbf{Y}^T \right) -trace\left( \mathbf{YWY}^T \right) \,\, {\color{blue} \left[ trace\left( \mathbf{y}_{i}^{T}\mathbf{y}_j \right) =trace\left( \mathbf{y}_j\mathbf{y}_{i}^{T} \right) \right] } \\ \mathop {\mathrm{arg} \min} \limits_{\mathbf{Y}}\,\,trace\left( \mathbf{Y}{\color{green} \left( \mathbf{D}-\mathbf{W} \right) }\mathbf{Y}^T \right) \\ \mathop {\mathrm{arg} \min} \limits_{\mathbf{Y}}\,\,trace\left( \mathbf{Y}{\color{green} \mathbf{L}}\mathbf{Y}^T \right) \\ Yargmin21i,j=1NWi,jyiyj2Yargmin21i,j=1NWi,j(yiyj)T(yiyj)Yargmin21i,j=1NWi,j(yiTyiyiTyjyjTyi+yjTyj)Yargmini=1NyiTyij=1NWi,ji,j=1NWi,jyiTyjYargmintrace(YDYT)trace(YWYT)[trace(yiTyj)=trace(yjyiT)]Yargmintrace(Y(DW)YT)Yargmintrace(YLYT)
引入约束 Y D Y T = I \mathbf{Y}\mathbf{D}\mathbf{Y}^T=\mathbb{I} YDYT=I(确保尺度大小不变且不会退化到更低维度空间)后的优化目标为
{ a r g min ⁡ Y t r a c e ( Y L Y T ) s . t . Y D Y T = I ⇔ { a r g min ⁡ Y t r a c e ( Z D − 1 / 2 L D − 1 / 2 Z T ) s . t . Z Z T = I Y = Z D − 1 / 2 \left\{ \begin{array}{c} \mathop {\mathrm{arg}\min} \limits_{\mathbf{Y}}\,\,trace\left( \mathbf{YLY}^T \right)\\ s.t.\mathbf{YDY}^T=\mathbb{I}\\ \end{array} \right. \\ \Leftrightarrow \left\{ \begin{array}{c} \mathop {\mathrm{arg}\min} \limits_{\mathbf{Y}}\,\,trace\left( \mathbf{ZD}^{-1/2}\mathbf{LD}^{-1/2}\mathbf{Z}^T \right)\\ s.t.\mathbf{ZZ}^T=\mathbb{I}\\ \mathbf{Y}=\mathbf{ZD}^{-1/2}\\ \end{array} \right. \\

Yargmintrace(YLYT)s.t.YDYT=I

Yargmintrace(ZD1/2LD1/2ZT)s.t.ZZT=IY=ZD1/2

由上可知,最优值 Y \mathbf{Y} Y为矩阵 D − 1 L \mathbf{D}^{-1}\mathbf{L} D1L所对应的最小 d d d个特征值对应的特征向量的转置

此外,由于拉普拉斯矩阵 L \mathbf{L} L自身含有特征值为0的全1的特征向量,则相应的 D − 1 L \mathbf{D}^{-1}\mathbf{L} D1L也有全1的特征向量,这样一来,所有的 y i ∣ i = 1 N \mathbf{y}_i|_{i=1}^{N} yii=1N都有个维度的值为1,所以一般来说不取最小的0特征值对应的特征向量,从倒数第二小的特征值对应的特征向量开始取。

from numpy.random import RandomState
import matplotlib.pyplot as plt
from matplotlib import ticker# unused but required import for doing 3d projections with matplotlib < 3.2
import mpl_toolkits.mplot3d  # noqa: F401from sklearn import manifold, datasets
import numpy as np
from scipy.sparse import diagsrng = RandomState(0)n_samples = 1500
S_points, S_color = datasets.make_s_curve(n_samples, random_state=rng)def plot_3d(points, points_color, title):x, y, z = points.Tfig, ax = plt.subplots(figsize=(6, 6),facecolor="white",tight_layout=True,subplot_kw={"projection": "3d"},)fig.suptitle(title, size=16)col = ax.scatter(x, y, z, c=points_color, s=50, alpha=0.8)ax.view_init(azim=-60, elev=9)ax.xaxis.set_major_locator(ticker.MultipleLocator(1))ax.yaxis.set_major_locator(ticker.MultipleLocator(1))ax.zaxis.set_major_locator(ticker.MultipleLocator(1))fig.colorbar(col, ax=ax, orientation="horizontal", shrink=0.6, aspect=60, pad=0.01)# plt.show()def plot_2d(points, points_color, title):fig, ax = plt.subplots(figsize=(3, 3), facecolor="white", constrained_layout=True)fig.suptitle(title, size=16)add_2d_scatter(ax, points, points_color)# plt.show()def add_2d_scatter(ax, points, points_color, title=None):x, y = points.Tax.scatter(x, y, c=points_color, s=50, alpha=0.8)ax.set_title(title)ax.xaxis.set_major_formatter(ticker.NullFormatter())ax.yaxis.set_major_formatter(ticker.NullFormatter())def sklearn_le():spectral = manifold.SpectralEmbedding(n_components=n_components, n_neighbors=n_neighbors)S_spectral = spectral.fit_transform(S_points)plot_2d(S_spectral, S_color, "Sklearn LE")def my_le():# 借助sklearn LE 构造邻接矩阵 偷个懒!!spectral = manifold.SpectralEmbedding(n_components=n_components, n_neighbors=n_neighbors)W = spectral._get_affinity_matrix(S_points).toarray()D = np.diag(np.sum(W, axis=1))S = np.diag(1. / np.sum(W, axis=1)) @ (D - W)values, vectors = np.linalg.eig(S)idxs = np.argsort(values)# 除去最小的0特征向量W = vectors[:,[idxs[i] for i in range(1,3)]]W[:,0] = -W[:,0] #确保与sklearn一样plot_2d(W, S_color, "My Imple. LE")if __name__ == "__main__":n_neighbors = 12  # neighborhood which is used to recover the locally linear structuren_components = 2  # number of coordinates for the manifoldplot_3d(S_points, S_color, "Original S-curve samples")sklearn_le()my_le()plt.show()



拉普拉斯特征映射(Laplacian Eigenmaps, LE)相关推荐

  1. 图嵌入(拉普拉斯特征映射Laplacian Eigenmaps)

    图嵌入(Graph embedding)的意义 Graph广泛存在于真实世界的多种场景中,即节点和边的集合.比如社交网络中人与人之间的联系,生物中蛋白质相互作用以及通信网络中的IP地址之间的通信等等. ...

  2. 深入理解拉普拉斯特征映射

    目录 1. 一些定义 2. 矩阵的迹求导 3. LE 3.1 目标函数 3.2 约束条件 3.3 优化 3.4 广义特征值问题 3.5 结果 拉普拉斯特征映射(Laplacian Eigenmaps, ...

  3. 拉普拉斯特征映射(Laplacian Eigenmaps)

    1.介绍 拉普拉斯特征映射(Laplacian Eigenmaps)是一种不太常见的降维算法,它看问题的角度和常见的降维算法不太相同,是从局部的角度去构建数据之间的关系.也许这样讲有些抽象,具体来讲, ...

  4. 拉普拉斯分布_理解拉普拉斯特征映射中的优化问题的约束条件

    引言:在学习拉普拉斯特征映射(Laplacian Eigenmaps, LE)的过程中,发现大多数参考资料仅列出了其中的最优化问题,然后直接过渡到特征值问题,对于该优化问题,特别是其中的约束条件解释的 ...

  5. Laplacian Eigenmaps 拉普拉斯特征映射

    Laplacian Eigenmaps 继续写一点经典的降维算法,前面介绍了PCA,LDA,LLE,这里讲一讲Laplacian Eigenmaps.其实不是说每一个算法都比前面的好,而是每一个算法都 ...

  6. 机器学习降维算法四:Laplacian Eigenmaps 拉普拉斯特征映射

    继续写一点经典的降维算法,前面介绍了PCA,LDA,LLE,这里讲一讲Laplacian Eigenmaps. 其实不是说每一个算法都比前面的好,而是每一个算法都是从不同角度去看问题,因此解决问题的思 ...

  7. Laplacian eigenmap 拉普拉斯特征映射

    下面是实验室大牛师兄自己写的一段总结,主要内容是Laplacian Eigenmap中的核心推导过程. 有空还是多点向这位师兄请教,每次都会捡到不少金子. Reference : <Laplac ...

  8. Laplacian Eigenmaps与LPP(Locality Preserving Projections)简介

    一.拉普拉斯特征映射(Laplacian Eigenmaps) 1.Introduction 机器学习与模式识别的一个核心问题是找到一种合适的对复杂数据的表示. 我们把这个问题叫做数据低维流形的嵌入在 ...

  9. 【流行学习】拉普拉斯映射(Laplacian Eigenmaps)

    一.前言 拉普拉斯特征映射是一种基于图的降维算法,它希望在原空间中相互间有相似关系的点,在降维后的空间中尽可能的靠近,从而在降维后仍能保持原有的数据结构信息. 二.主要步骤 拉普拉斯特征映射通过构建邻 ...

最新文章

  1. JAVA-初步认识-第五章-数组-常见操作-最值
  2. frp后台运行和停止
  3. SQLite学习-临时文件
  4. java二叉树的深度优先遍历_二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式...
  5. Nutanix企业云助力嘉里大通提升核心竞争力
  6. 计算机二级vfp程序语言,2012年计算机二级VFP语言基础学习教程
  7. 2021虫虫百度域名URL批量采集工具【自动去重】
  8. 验证码短信是如何实现的?怎么用短信平台发送验证码短信?
  9. html 文字段后间距怎么设置,p字间距 html段落内文字设置字间距间隔
  10. 拉网小调(民歌介绍)
  11. 线性回归 假设_违反线性回归假设的后果
  12. 使用outlook 2007配置microsoft exchange邮箱方法步骤
  13. 计算机如何共享手机网络,怎么把电脑网络共享给手机
  14. 计算机光驱无法启用,刻录的系统盘用USB光驱无法启动是怎么回事?
  15. result returns more than one elements; nested exception is javax.persistence.NonUniqueResultExceptio
  16. 微信开发者工具更换存储目录将C盘数据User Data迁移到D盘
  17. NICO EXCHANGE NICO 交易所系統維護公告
  18. 海康威视嵌入式软件开发工程师笔试+面试经历【已拿offer】
  19. 沙盒勇者服务器维护,沙盒勇者攻略大全 沙盒勇者通关攻略
  20. 【数值分析】拉格朗日插值法与牛顿插值法的C++实现

热门文章

  1. 独家 | 脑洞大开!机器学习与AI突破(附链接)
  2. 开机流程,模块管理与loader0.0
  3. 亚马逊刚开始做什么模式靠谱?
  4. element audio 标签 不显示_BenQ 明基专业摄影显示器SW270C开箱评测体验
  5. javaweb银行账目管理系统
  6. 第三章:JQuery基础---核心函数选择器、工具方法
  7. 计算机毕业论文Java项目源码下载基于SSM的旅游资讯网站含前台与后台
  8. Python爬虫中文小说网点查找小说并且保存到txt(含中文乱码处理方法)
  9. 机器学习笔记 - 图像搜索的常见网络模型
  10. 制作打卡表-列出周六周日-Python