graph Laplacian 拉普拉斯矩阵
转自:https://www.kechuang.org/t/84022?page=0&highlight=859356,感谢分享!
在机器学习、多维信号处理等领域,凡涉及到图论的地方,相信小伙伴们总能遇到和拉普拉斯矩阵和其特征值有关的大怪兽。哪怕过了这一关,回想起来也常常一脸懵逼,拉普拉斯矩阵为啥被定义成 ?这玩意为什么冠以拉普拉斯之名?为什么和图论有关的算法如此喜欢用拉普拉斯矩阵和它的特征值?
最近读论文的时候,刚好趁机温习了一下相应的内容,寻本朔源一番,记录下来,希望大家阅读之后,也能够有个更加通透的理解。
要讲拉普拉斯矩阵,就要从拉普拉斯算子讲起,要讲拉普拉斯算子,就要从散度讲起~
于是我们从散度开始,发车啦~~~
通量与散度
首先我们来看一道初中物理题:
小明乘帆船出行,刮来一阵妖风,假设帆的面积为 , 和妖风的夹角为
,妖风在每单位面积上的垂直风压为
,求妖风对帆的推动力
那么聪明伶俐(?)的我们一定知道,这道题的答案应该是 。
如果我们用 表示风的向量(且
),用
表示帆的法向量,结合高中数学知识我们知道上述公式也可以写成
。。。
如果我们现在再把题目弄复杂一点,假设船帆不是一个平面,而是一个空间中的曲面 ,在
所在的每一点(面积微元
)处,其法向量为
,且空间中存在的风为
,根据大学数学知识我们可以得到:
于是我们就得到了通量 的定义,
。。。
那么如果我们有一个封闭曲面呢,比如:
在向量场下的封闭曲面
此时我们指定曲面每一点处的法向量为该点朝外的向量:
红色箭头为法向量,注意在上面的例子中风与帆的比喻并不完全恰当,在计算通量的时候一般我们认为向量场会穿过曲面,而非被挡住
于是我们有
对于上图,根据向量乘法的基本原理,聪明的我们很容易知道,对于射入曲面的那一部分(左半边),其通量为负,而对于射出曲面的那一部分(右半边),其通量为正。
更进一步的思考我们可以得出,相互抵消后,这一曲面上的总通量为
。。。
接下来我们看下一张图:
显然,在这一向量场中,红色曲面上的总通量为负,而绿色曲面上的总通量为正。 那么我们不断缩小这两个曲面,直至其无限接近一个点 ,并将其总通量除以曲面所围成的体积
,得到:
,
我们便得到了点 处的散度。
。。。
根据上面的分析,我们不难看出,在红圈所在圆心处的散度为负,而绿圈圆心处的散度为正。
结合上述定义,我们知道,散度衡量了一个点处的向量场是被发射还是被吸收,或者说,对于散度为正的点,散度越大,意味着相应的向量场越强烈地在此发散,而对于散度为负的点,意味着相应的向量场在此汇聚
嗯,就这么简单~ XD
拉普拉斯算子
接下来就是我们可爱的拉普拉斯算子啦~~
根据定义,函数 的拉普拉斯算子
又可以写成
,其被定义为函数
梯度的散度。
那么这又是什么意思呢?
我们知道,在直角坐标系下,一个函数 在
处的梯度是一个向量
,
于是函数 的梯度函数
就构成了一个在三维空间下的向量场。
于是乎,我们对这一向量场 求散度
,即得到了
的拉普拉斯算子
。
为什么要这样做呢?
让我们想像一座山,根据梯度的定义,在山峰周围,所有的梯度向量向此汇聚,所以每个山峰处的拉普拉斯算子为负;而在山谷周围,所有梯度从此发散,所以每个山谷处的拉普拉斯算子为正。所以说,对于一个函数,拉普拉斯算子实际上衡量了在空间中的每一点处,该函数梯度是倾向于增加还是减少
歪个楼,描述物理系统最优美的公式之一拉普拉斯方程, ,大家可以想一想,这一公式表达了物理系统怎么样的特征呢?
图论下的函数
我们知道,互相连接的节点可以构成一张图,其中包含所有点构成的集合 , 和所有边构成的集合
。
对于实数域上的函数 ,我们可以理解为一种对于
的映射,将每个可能的
映射到一个对应的
上(
)。
相应地,我们也可以定义一个图函数 ,使得图上的每一个节点
,都被映射到一个实数
上。
比如说,假设我们有一个这样的社交网络图谱:
假设说每一条边的权值对应两个人之间信息的流通程度。现在我们想要分析这个社交网络上的信息传播,我们不仅需要知道信息流通的程度,我们还要知道每个人发动态的活跃程度,于是我们现在给这个图一个函数 ,使得:
这里的负数似乎可以理解为, 和
是谣言终结者,可以阻止信息的传播~
那么我们得到这样一张图:
图函数的梯度
我们定义了图论的函数,那么应该如何给图论下的函数定义梯度呢?
我们记得,梯度的意义在于,衡量函数在每一个点处,在每个正交方向上的变化,如 的梯度在
方向的分量
在图论中,我们认为一个节点沿着每一条边通向它的相邻节点,而每两条边之间互相并没有什么关系,也就是说我们认为这个节点的每一条边互相都是正交的
并且对于两个节点,我们定义其距离 为其边权值的倒数(比如上面社交网络的例子,我们可以认为,两个人的信息流通程度越低,两个人的友谊就“越远”)
那么对于一个节点 ,我们认为其梯度在一条通向
的边
上的分量为
(其中 为
到
的距离),
为了计算梯度,我们给出一个这样的矩阵:
每一行代表一个点,每一列代表一条边,使得对于每个点每条边,如果该条边从该点发射出去,且权值为 ,则将矩阵中对应的这一元素置为
,如果该条边指向该点,则将对应的元素置为
具体到上面社交网络的例子,我们有相应的矩阵 :
我们又有关于图函数 的列向量
:
我们试着计算 :
经过观察我们可以知道,最后计算结果的向量,即是整个图 在
函数上的梯度
,其中每一行,为该梯度在一条边上的分量。
所以对于图 ,我们有
,使得
拉普拉斯算子与拉普拉斯矩阵
我们记得在函数中,拉普拉斯算子的定义为函数梯度的散度,即每一点上其梯度的增加/减少,那么对于图函数,其每一“点”即为每个“节点”,其梯度的散度该怎么定义呢?
我们几乎可以立刻可以想到,图函数每一点上梯度的散度,即是从该节点射出的梯度,减去射入该节点的梯度,那么我们几乎又可以立即想到(?),根据这样的定义去计算散度,只要把原来的梯度再左乘一个这样的矩阵就可以啦:
每一行代表一个点,每一列代表一条边,使得对于每个点每条边,如果该条边从该点发射出去,则将矩阵中对应的这一元素置为 ,如果该条边指向该点,则将对应的元素置为
命名这一矩阵为
也就是说,我们把 的每个元素,正的变成1,负的变成-1,就得到了
那么,
于是我们得到了图论函数的拉普拉斯算子 ,即我们常说的拉普拉斯矩阵。
注意在我们上面的范例中,将任意一条边的方向反转,等价于在 的一列上乘以
,这种情况下最终
不会改变,也就是说拉普拉斯矩阵的值与图中每一条边的方向无关,所以拉普拉斯矩阵一般用来表述无向图
计算 的值,我们得到矩阵:
注意到这一对称矩阵,对角线即是每个点的度,而其余的元素,则是负的邻接矩阵,于是乎我们得到了拉普拉斯矩阵的经典算式:
(至于外面的各种资料为什么往往只使用 而非
,个人认为是因为前者只涉及减法,计算远远快于后者,所以程序中一般使用前者。但是为了理解拉普拉斯矩阵的意义,对后者的了解在我看来是必须的)
拉普拉斯矩阵的重要性质
拉普拉斯矩阵之所以如此常用,是因为其一大重要性质: 拉普拉斯矩阵的 个特征值
都是非负值,且有
同时,我们引入关于矩阵 和
的瑞利熵的概念:
其中 为
的共轭矩阵,对于
为实数矩阵的情况下
而通过拉格朗日乘子法可以得出,瑞利熵的一个非常重要的特点就是: 瑞丽熵的最大值,等于 的最大特征值,瑞利熵的最小值,等于
的最小特征值
再看看图算法中对于拉普拉斯矩阵 的运算中常常出现的f
,结合上文所述的拉普拉斯矩阵的重要性质,那么拉普拉斯矩阵在各种图算法中的应用,想必大家也能够理解啦~
graph Laplacian 拉普拉斯矩阵的更多相关文章
- 拉普拉斯矩阵(Laplacian Matrix) 及半正定性证明
摘自 https://blog.csdn.net/beiyangdashu/article/details/49300479 和 https://en.wikipedia.org/wiki/Lapla ...
- SC3聚类 | 拉普拉斯矩阵 | Laplacian matrix | 图论 | R代码
Laplacian和PCA貌似是同一种性质的方法,坐标系变换.只是拉普拉斯属于图论的范畴,术语更加专业了. 要看就把一篇文章看完整,再看其中有什么值得借鉴的,总结归纳理解后的东西才是属于你的. 问题: ...
- 拉普拉斯矩阵(Laplacian matrix)
原文地址:https://www.jianshu.com/p/f864bac6cb7a 拉普拉斯矩阵是图论中用到的一种重要矩阵,给定一个有n个顶点的图 G=(V,E),其拉普拉斯矩阵被定义为 L = ...
- What’s up with the Graph Laplacian
What's up with the Graph Laplacian? 来源 作者:Jeremy Kun blog: Math ∩ Programming 在数学上图和与图关联的某些矩阵的代数性质有很 ...
- 拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient)
作者:桂. 时间:2017-04-13 07:43:03 链接:http://www.cnblogs.com/xingshansi/p/6702188.html 声明:欢迎被转载,不过记得注明出处哦 ...
- Laplacian matrix 从拉普拉斯矩阵到谱聚类
谱聚类步骤 第一步:数据准备,生成图的邻接矩阵: 第二步:归一化普拉斯矩阵: 第三步:生成最小的k个特征值和对应的特征向量: 第四步:将特征向量kmeans聚类(少量的特征向量):
- opencv —— Laplacian 拉普拉斯算子、二阶导数用于边缘检测
Laplacian 算子简介 求多元函数的二阶导数的映射又称为 Laplacian 算子: 计算拉普拉斯变换:Laplacian 函数 void Laplacian(InputArray src, ...
- HDU 5607 graph(DP+矩阵乘法)
[题目链接] http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=663&pid=1002 [题意] 给定一个有向 ...
- 拉普拉斯特征映射(Laplacian Eigenmaps)
1 介绍 拉普拉斯特征映射(Laplacian Eigenmaps)是一种不太常见的降维算法,它看问题的角度和常见的降维算法不太相同,是从局部的角度去构建数据之间的关系.也许这样讲有些抽象,具体来讲, ...
随机推荐
- Linux -- Proactor(及其与Reactor的比较)
高并发服务器常由多线程+IO复用服务器(one event loop per thread) 两种I/O多路复用模式:Reactor和Proactor 一般地,I/O多路复用机制都依赖于一个事件多路分 ...
- Angular实现简单数据计算与删除
AngularJS 1)什么是AngularJS AngularJS 简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. ...
- SpringMVC+Ajax实现文件批量上传和下载功能实例代码
需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...
- c#操作json数据使用newtonsoft.json
开源项目提供的一个读取示例 using System; using System.Collections.Generic; using System.IO; using System.Linq; us ...
- python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例
熟悉老一代QQ的小伙伴可能都知道,很早以前的QQ,鼠标滑到头像的位置,你的位置和IP会在详情页显示,那么这个是如何做到的呢?下面我们就来玩一玩这个东西 首先,需求分析: 1.拿到客户端IP 2.通过I ...
- python从hello world开始 - python基础入门(3)
万丈高楼平地起,编程亦如此.改变世界是结果,坚持努力学习改bug是过程,hello world是开始,所有语言均是如此. 一.使用pycharm创建第一个hello world 项目 1.Create ...
- [转载]ftp和http区别
本文围绕以下三个部分展开: 一.HTTP协议 二.FTP协议 三.HTTP与FTP的异同点 一.HTTP协议简介 1. 概念 HTTP: HyperText Transfer Protocal,超文本 ...
- 1、6 登陆 通过name 查到一个对象,如果没有。提示用户名不存在,再将查到的pwd 加传过来的pwd(需要加密)比较
@RequestMapping("/login") public Object login(Student student) { Student s=studentService. ...
- 用SQL语句从电脑导入图片到数据库
--创建图片表 CREATE TABLE W_PIC ( ID INT, --编号 WPATH ), --完整路径 PIC ), --图片名称,不带后缀 img image --图片内容 ) --图片 ...
- SQLite基础-1.SQL简介
目录 一.SQLite简介 二.SQLite命令 三.SQLite安装 在 Windows 上安装 SQLite 四.SQLite 点命令 一.SQLite简介 最近在使用Python+Flask框架 ...