最近在学习图信号处理的相关知识,想进行一些应用层面的实践,恰巧遇到一篇十分具有启发性的推荐算法的论文,故以此文进行简单总结,也作为自己的学习笔记。
Reference:
一、图信号基本知识
一个无向图 G G G(Graph) 可以定义为: G = ( V , E ) G=(V,E) G=(V,E)。即无向图由节点集合 V V V和边缘集合 E E E构成。 V = { 1 , 2 , . . . , N } V=\{1,2,...,N\} V={ 1,2,...,N}, N N N为节点个数。部分节点之间存在“连接”(译为links或edges),这些连接集合表示为 E E E。具体地,任意不同的两个节点为 i , j ∈ V i,j\in V i,j∈V,则 E = { i , j , w i j } E=\{i,j,w_{ij}\} E={ i,j,wij},表示节点 i i i与节点 j j j间的连接权值 w i j w_{ij} wij。
上述的三元组合表达方式并不是非常理想的,我们并不能通过这种表达方式发掘图本身的特征,因此,矩阵被广泛应用于图的表达。基本地,定义邻接矩阵 A A A,则一个带有 N N N个节点的图可以用大小为 N ∗ N N*N N∗N的 A A A表示,其中 A ( i , j ) = w i j A(i,j)=w_{ij} A(i,j)=wij。
除了 A A A以外,还有一些常用的矩阵表达方式,分别具有不同的性质,也能够反映不同的图的特征。在此之前,先定义 d i d_i di为节点 i i i的维度,其为节点 i i i的所有连接权值的总和。然后,定义维度矩阵 D = d i a g ( d 1 , d 2 , . . . , d N ) D=diag(d_1,d_2,...,d_N) D=diag(d1,d2,...,dN),其中 d i a g ( ) diag() diag()将向量转变为对角矩阵。
1) Incidence Matrix(关联矩阵)
注:为了方便描述,下述的图都给定为简单图,在简单图中, A A A的元素只由0和1构成。1表示该边存在,反之则为0。如果不是简单图,这些矩阵依然满足下述定义式。
给定无向图 G = ( V , E ) G=(V,E) G=(V,E),其对应的关联矩阵 ∇ \nabla ∇是一个长宽为 [ ∣ E ∣ ∗ ∣ V ∣ ] [|E|*|V|] [∣E∣∗∣V∣]的矩阵。对于矩阵里的每一条边 e = n i n j e=n_in_j e=ninj,可以任意给定一个方向。之后,如果节点 x x x是边缘 e e e的起始节点,则 ∇ e x = − 1 \nabla_{ex}=-1 ∇ex=−1,如果节点 x x x是终止节点,则 ∇ e x = 1 \nabla_{ex}=1 ∇ex=1。
即,每一行有且仅包含了一个1和一个-1,其余都是0元素。
2) Laplacian Matrix (拉普拉斯矩阵)
Laplacian Matrix可由Incidence Matrix得到: L =