拉普拉斯矩阵特征向量的几个关键性质证明

前言

在读kipf-GCN《Semi-Supervised Classification With Graph Convolutional Networks》的过程中,提到标准化的拉普拉斯矩阵的最大特征值约等于2: λ m a x ≈ 2 \lambda_{max}\approx 2 λmax2,所有的特征值范围在区间 [ 0 , 2 ] [0,2] [0,2] 之间,遂搜索一些资料进行验证,写下此文。

本文部分内容参考了经典书籍的修正及改进版本《Spectral Graph Theory (revised and improved)》,值得一读。

拉普拉斯矩阵

公式

Laplacian矩阵是图的矩阵表示,无向图的Laplacian矩阵: L = D − A L=D-A L=DA,其中 D D D 为度矩阵, L L L 为邻接矩阵。
在这里插入图片描述

性质

可见,Laplacian矩阵是 n n n 阶实对称矩阵。实对称矩阵具有如下性质:

  • 实对称矩阵的特征值都是实数,有 n n n 个线性独立的特征向量,且特征向量都是实向量;
  • 实对称矩阵的不同特征值对应的特征向量是正交的;
  • n n n 阶实对称矩阵必可对角化,且相似对角矩阵上的元素就是它的特征值

证明

性质1: L L L 的特征向量正交

实对称矩阵不同特征值的特征向量正交。

L L L的 任意两个不相等的特征值 λ 1 , λ 2 \lambda_1, \lambda_2 λ1,λ2,它们对应的单位特征向量为 p 1 , p 2 ∈ R n p_1,p_2 \in \mathbb{R}^n p1,p2Rn,有:
L p 1 = λ 1 p 1 L p 2 = λ 2 p 2 \begin{aligned} &Lp_1=\lambda_1p_1 \\ &Lp_2=\lambda_2p_2 \\ \end{aligned} Lp1=λ1p1Lp2=λ2p2 ∵ \because
p 1 T L p 2 = p 1 T L T p 2 = ( L p 1 ) T p 2 = ( λ 1 p 1 ) T p 2 = λ 1 p 1 T p 2 ( 1 ) \begin{aligned} {p_1}^TLp_2&={p_1}^TL^Tp_2\\ &={(Lp_1)}^Tp_2 \\ &={(\lambda_1p_1)}^Tp_2 \\ &=\lambda_1{p_1}^Tp_2 \qquad(1) \end{aligned} p1TLp2=p1TLTp2=(Lp1)Tp2=(λ1p1)Tp2=λ1p1Tp2(1) ∵ \because
p 1 T L p 2 = p 1 T ( L p 2 ) = p 1 T λ 2 p 2 = λ 2 p 1 T p 2 ( 2 ) {p_1}^TLp_2={p_1}^T(Lp_2)={p_1}^T\lambda_2p_2=\lambda_2{p_1}^Tp_2 \qquad(2) p1TLp2=p1T(Lp2)=p1Tλ2p2=λ2p1Tp2(2) ( 1 ) − ( 2 ) (1)-(2) (1)(2)可得:
( λ 1 − λ 2 ) p 1 T p 2 (\lambda_1-\lambda_2){p_1}^Tp_2 (λ1λ2)p1Tp2 ∵ λ 1 ≠ λ 2 \because \lambda_1\neq\lambda_2 λ1=λ2

∴ p 1 T p 2 = 0 \therefore {p_1}^Tp_2=0 p1Tp2=0,即 p 1 p_1 p1 p 2 p_2 p2 正交。

■ \blacksquare

性质2: L L L 的特征向量组成的矩阵 P P P是正交矩阵,有 P − 1 = P T P^{-1}=P^{T} P1=PT

因为 P = [ p 1 , p 2 , … , p n ] ∈ R n × n P=\begin{bmatrix}p_1,p_2,\dots,p_n\end{bmatrix} \in \mathbb{R}^{n\times n} P=[p1,p2,,pn]Rn×n 的每个向量都是正交,所以有:
P T P = [ p 1 T p 1 p 1 T p 2 ⋯ p 1 T p n p 2 T p 1 p 2 T p 2 ⋯ p 2 T p n ⋮ ⋮ ⋮ p n T p 1 p n T p 2 ⋯ p n T p n ] = [ 1 1 ⋱ 1 ] = E P^TP= \begin{bmatrix} p_1^Tp_1 & p_1^Tp_2 & \cdots & p_1^Tp_n \\ p_2^Tp_1 & p_2^Tp_2 & \cdots & p_2^Tp_n \\ \vdots & \vdots & & \vdots \\ p_n^Tp_1 & p_n^Tp_2 & \cdots & p_n^Tp_n \\ \end{bmatrix} = \begin{bmatrix} 1 \\ & 1 & \\ & & \ddots\\ & & &1 \\ \end{bmatrix} = E PTP= p1Tp1p2Tp1pnTp1p1Tp2p2Tp2pnTp2p1Tpnp2TpnpnTpn = 111 =E 所以有
P − 1 = P T P^{-1}=P^{T} P1=PT ■ \blacksquare

代码验证

对于 前言 中的拉普拉斯矩阵,我们通过代码验证它性质2(性质2包括了性质1)。

  • 创建拉普拉斯矩阵并求特征向量
import numpy as np
# 创建拉普拉斯矩阵
L = np.array([
  [ 2, -1,  0,  0, -1,  0],
  [-1,  3, -1,  0, -1,  0],
  [ 0, -1,  2, -1,  0,  0],
  [ 0,  0, -1,  3, -1, -1],
  [-1, -1,  0, -1,  3,  0],
  [ 0,  0,  0, -1,  0,  1],
])
# 求特征值和特征向量(vecs_ori是标准化特征向量组成的矩阵)
vals_ori,vecs_ori = np.linalg.eig(L)
  • 查看特征值和特征向量
# 保留小数点后3位数便于查看
print(vals_ori.round(3))
"""
[-0.     0.722  1.683  3.     3.705  4.891]
"""
print(vecs_ori.round(3))
"""
[[-0.408 -0.415 -0.505  0.289 -0.567 -0.032]
 [-0.408 -0.309  0.04   0.289  0.658 -0.469]
 [-0.408 -0.069  0.759  0.289 -0.205  0.356]
 [-0.408  0.221  0.201 -0.577 -0.308 -0.562]
 [-0.408 -0.221 -0.201 -0.577  0.308  0.562]
 [-0.408  0.794 -0.294  0.289  0.114  0.144]]
"""
  • 验证性质2
print(np.matmul(vecs_ori.T, vecs_ori).round(3))
"""
[[ 1.  0.  0.  0. -0.  0.]
 [ 0.  1. -0. -0. -0.  0.]
 [ 0. -0.  1.  0. -0. -0.]
 [ 0. -0.  0.  1. -0. -0.]
 [-0. -0. -0. -0.  1.  0.]
 [ 0.  0. -0. -0.  0.  1.]]
"""

标准化的拉普拉斯矩阵

公式

在《关于谱图理论-图傅里叶变换-谱卷积等谱图领域知识的理解》的Laplacian矩阵一节中,说了拉普拉斯矩阵的三个主要定义,一种是原始版的 L = D − A L=D-A L=DA ,还有一个叫做 “对称标准化Laplacian矩阵”:
L s y m = ( D + ) 1 2 L ( D + ) 1 2 = I − ( D + ) 1 2 A ( D + ) 1 2 L^{sym}=(D^+)^{\frac 1 2}L(D^+)^{\frac 1 2}=I-(D^+)^{\frac 1 2}A(D^+)^{\frac 1 2} Lsym=(D+)21L(D+)21=I(D+)21A(D+)21 其中, D + D^+ D+穆尔-彭罗斯逆(M-P逆)

还有一种标准化拉普拉斯的写法为: L n o r m = D − 1 2 L D − 1 2 L^{norm}=D^{-\frac 1 2}LD^{-\frac 1 2} Lnorm=D21LD21,两者是等价的。因为 D D D是满秩矩阵, D D D 的M-P逆 D + D^+ D+ 就是 D D D 的常规逆,即 D + = D − D^+=D^- D+=D

下文将对 L n o r m = D − 1 2 L D − 1 2 L^{norm}=D^{-\frac 1 2}LD^{-\frac 1 2} Lnorm=D21LD21 进行介绍。

性质

性质拉普拉斯矩阵 L L L标准化拉普拉斯矩阵 L n o r m L^{norm} Lnorm
对称性 √ \surd √ \surd
半正定 √ \surd ? ? ?

证明

性质1: 对称性(symmetric)

证明:

邻接矩阵 A A A 为对称矩阵,度矩阵 D D D 为对角矩阵,很明显拉普拉斯矩阵 L = D − A L=D-A L=DA 是对称矩阵。

D − 1 2 = [ d 1 d 2 ⋱ d n ] D^{-\frac 1 2}= \begin{bmatrix} d_1 & & & \\ & d_2 & & \\ & & \ddots & \\ & & & d_n \\ \end{bmatrix} D21= d1d2dn L = [ l 11 l 12 ⋯ l 1 n l 21 l 22 ⋯ l 2 n ⋮ ⋮ ⋮ l n 1 l n 2 ⋯ l n n ] L = \begin{bmatrix} l_{11} & l_{12} & \cdots & l_{1n} \\ l_{21} & l_{22} & \cdots & l_{2n} \\ \vdots & \vdots & & \vdots \\ l_{n1} & l_{n2} & \cdots & l_{nn} \\ \end{bmatrix} L= l11l21ln1l12l22ln2l1nl2nlnn ,则:
L n o r m = D − 1 2 L D − 1 2 = [ d 1 d 2 ⋱ d n ] [ l 11 l 12 ⋯ l 1 n l 21 l 22 ⋯ l 2 n ⋮ ⋮ ⋮ l n 1 l n 2 ⋯ l n n ] [ d 1 d 2 ⋱ d n ] = [ l 11 d 1 l 12 d 1 ⋯ l 1 n d 1 l 21 d 2 l 22 d 2 ⋯ l 2 n d 2 ⋮ ⋮ ⋮ l n 1 d n l n 2 d n ⋯ l n n d n ] [ d 1 d 2 ⋱ d n ] = [ l 11 d 1 d 1 l 12 d 1 d 2 ⋯ l 1 n d 1 d n l 21 d 2 d 1 l 22 d 2 d 2 ⋯ l 2 n d 2 d n ⋮ ⋮ ⋮ l n 1 d n d 1 l n 2 d n d 2 ⋯ l n n d n d n ] \begin{aligned} L^{norm}=D^{-\frac 1 2}LD^{-\frac 1 2} &=\begin{bmatrix} d_1 & & & \\ & d_2 & & \\ & & \ddots & \\ & & & dn \\ \end{bmatrix} \begin{bmatrix} l_{11} & l_{12} & \cdots & l_{1n} \\ l_{21} & l_{22} & \cdots & l_{2n} \\ \vdots & \vdots & & \vdots \\ l_{n1} & l_{n2} & \cdots & l_{nn} \\ \end{bmatrix} \begin{bmatrix} d_1 & & & \\ & d_2 & & \\ & & \ddots & \\ & & & dn \\ \end{bmatrix} \\ &= \begin{bmatrix} l_{11}d_1 & l_{12}d_1 & \cdots & l_{1n}d_1 \\ l_{21}d_2 & l_{22}d_2 & \cdots & l_{2n}d_2 \\ \vdots & \vdots & & \vdots \\ l_{n1}d_n & l_{n2}d_n & \cdots & l_{nn}d_n \\ \end{bmatrix} \begin{bmatrix} d_1 & & & \\ & d_2 & & \\ & & \ddots & \\ & & & dn \\ \end{bmatrix} \\ &= \begin{bmatrix} l_{11}d_1d_1 & l_{12}d_1d_2 & \cdots & l_{1n}d_1d_n \\ l_{21}d_2d_1 & l_{22}d_2d_2 & \cdots & l_{2n}d_2d_n \\ \vdots & \vdots & & \vdots \\ l_{n1}d_nd_1 & l_{n2}d_nd_2 & \cdots & l_{nn}d_nd_n \\ \end{bmatrix} \end{aligned} Lnorm=D21LD21= d1d2dn l11l21ln1l12l22ln2l1nl2nlnn d1d2dn = l11d1l21d2ln1dnl12d1l22d2ln2dnl1nd1l2nd2lnndn d1d2dn = l11d1d1l21d2d1ln1dnd1l12d1d2l22d2d2ln2dnd2l1nd1dnl2nd2dnlnndndn ,可见 L i j n o r m = l i j d i d j L^{norm}_{ij}=l_{ij}d_id_j Lijnorm=lijdidj ∵ \because L是对称矩阵, l i j = l j i l_{ij}=l_{ji} lij=lji ∴ L n o r m \therefore L^{norm} Lnorm 是对称矩阵。

□ \Box

性质2: 半正定(positive-semidefinite)

L n o r m L^{norm} Lnorm 的所有特征值均为非负( λ i ≥ 0 \lambda_i\geq0 λi0 for all i i i)。

证明:

L L L 是对称且为对角优势矩阵,所以 L L L 是半正定矩阵。参见wiki百科-iagonally dominant matrix
□ \Box

性质3: 特征值范围介于0和2之间

相比于 L = D − A L=D-A L=DA L n o r m = D − 1 2 L D − 1 2 L^{norm}=D^{-\frac 1 2}LD^{-\frac 1 2} Lnorm=D21LD21 一开始看起来有点复杂,但 L n o r m L^{norm} Lnorm 的的特征值与一般图的其他图不变量有很好的联系,这是其他定义经常无法做到的。这个定义的优点是因为它与谱几何和随机过程中的特征值一致。它的许多性质可以推广到所有的图。

谱理论(Spectral Theory)的一半主要问题在于推导特征值分布的边界。另一半涉及特征值边界的影响和后果以及它们的应用。

其特征值的一个重要结论是:任何图的标准化拉普拉斯矩阵的特征值范围介于0和2之间。

证明请见:标准化拉普拉斯矩阵特征值范围为什么小于等于2?(证明)

代码验证

import numpy as np

def gen_adj(n):
    """创建邻接矩阵"""
    while True:
        A = np.zeros(shape=(n,n))
        for i in range(1,n):
            for j in range(i):
                rand = np.random.rand(1)[0]
                A[i][j]=1 if rand>0.4 else 0
        for i in range(n-1):
            for j in range(i+1,n):
                A[i][j]=A[j][i]
        # 防止孤立的顶点
        if A.sum(0).min()!=0:
            break
    return A

def get_eigval(argL):
    # 求矩阵特征值
    vals_ori,vecs_ori = np.linalg.eig(argL)
    return vals_ori.round(3)


def verify(n):
    """验证特征值范围"""
    A = gen_adj(n)
    D = np.diag(A.sum(0))
    D_norm = np.diag(np.power(A.sum(0), -1/2))

    L = D-A
    L_norm = np.matmul(np.matmul(D_norm,L),D_norm)
    
    res1 = get_eigval(L)
    res2 = get_eigval(L_norm)
    return res1,res2

if __name__=="__main__":
    ## 如果不抛出AssertionError, 则测试通过
    for i in range(1000):
        assert (verify(10)[1]).max()<2

■ \blacksquare

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值