Commute Time Distance

Fouss F., Pirotte A., Renders J. M. and Saerens M. Random-walk computation of similarities between nodes of a graph, with application to collaborative recommendation. IEEE Transactions on Knowledge and Data Engineering (TKDE), 2007.

本文介绍 first-passage time / cost 以及相应的 CTD (Commute Time Distance) 的显式计算公式.

符号说明

  • G={V,E}, 图;
  • V={v1,,vn}, 顶点;
  • E={eij}, 边集;
  • WRn×n, wij 为边 eij 上的权重, 若 wij=0 表示 i,j 之间不存在边;
  • dRn, di=jwij;
  • D:=diag(d)Rn×n, 对角化;
  • L:=DW, 带权重的 Laplacian 矩阵;
  • P=D1WRn×n, pij=P(j|i)=wij/di, 转移概率 (ij).
  1. 假设图 G 是连通图, 此时可证明 rank(L)=n1, 此时我们可以将 L 表示为:

    (1)L=UΛUT=i=2nλiuiuiT,

    其中

    U=[u2,,un]Rn×(n1),Λ=diag([λ2,,λn])R(n1)×(n1),0<λ2λn;

  2. 注意到

    (2)L1=0,

    故实际上 1L 的对应 λ1=0 的特征向量,
    于是我们可以定义其 L 的伪逆

    L:=UΛ1UT,

    且满足

    LL=LL=i=2nuiuT=I1n11T.

主要内容

Random Walk

Random Walk 是指给定状态 s(t)=i, 然后按照概率 P(s(t+1)=j|s(t)=i)=pij 的概率进行转移, 由此可以采样一个序列:

[s(0),s(1),].

time/cost/distance

假设从状态 s(t)=i 直接转移到状态 s(t+1)=j 需要消耗 cij, 则从 s(0)s(t) 总共消耗了:

τ=1tcs(τ1)s(τ),

自然地, 我们关心从状态 i 出发首次抵达状态 j所需的消耗:

ξ(i,j|s)=τ=1Tijcs(τ1)s(τ),Tij=min(t0|s(t)=k and s(0)=i).

注意到, cij1,i,j, ξ(i,j|s)=Tij.

那么对于整个图 G 而言, 从状态 i 到状态 j平均消耗可以定义为:

(3)o(j|i):=Es[ξ(i,j|s)],

特别地定义

(4)m(j|i):=Es[Tij].

为状态 i 到状态 j平均首达时间.

此外, 我们可以用马氏链的方式去理解 (3) (4):

(5)o(j|i)=pijcij+kjpik(cik+o(j|k)), ji,o(i|i)=0.

即从状态 i 到状态 j 的消耗等价于直接到 j 的消耗 pijcij 加上先到其它点 j 的消耗 pikcik 然后加上再从这个 kj 的消耗 piko(j|k). 类似地

(6)m(j|i)=pij+kjpik(1+m(j|k)),ji,m(i|i)=0.

无论是 o(j|i) 还是 m(j|i), 一般来讲都不具有对称性, 而以下的 CTD 则符合这一性质. Commute-time distance 定义为:

n(i,j)=m(j|i)+m(i|j),

此时 n(i,j) 满足一个距离的定义:
n(i,j)0 n(i,j)=0i=j n(i,j)=n(j,i) n(i,j)n(i,k)+n(k,j).
注: 证明请参考文章中的参考文献.


私以为, 可以定义一个类似的 commute-cost distance

o(j|i)+o(i|j),

不知道有没有类似的概念存在.


利用伪逆求解 o, m

o(j|i)=k(LikLjk+LjjLij)dkrk,m(j|i)=k(LikLjk+LjjLij)dk.

其中 rk=jpkjckj.


proof:

定义 O=[o(j|i)],C=[cij], 此外我们用 oi,ci 来表示 O,C 的第 i 行, 其它的也是类似规定的.
注意到 (ji)

oij=o(j|i)=pijcij+kjpik(cik+okj)=[kjpik(cik+okj)+pij(cik+o~jj)]pijo~jj.

其中 o~jj人为给定的数, 其存在的目的是为了方便我们用矩阵的形式表达.
rRn 满足 ri=piTci, 并记 O~ 满足 [O~]ii=o~ii,[O~]ij=oij,ji, 则
用矩阵形式表达即为:

(A1)[O~]ij=[r1T+P(O~O~d)]ijji,

其中 O~d:=diag([o~11,,o~nn]).

我们再来考察下列方程:

(A2)O~=r1T+P(O~O~d),

一般说来, 因为 O~d 是给定的, 所以 (A1, A2) 是等价的 (如果二者均存在解), 但是注意到:

dTO~=dTr1T+dTP(O~O~d)=dTr1T+dT(O~O~d)dTP=dT,

故 (A2) 有解必须满足:

(A3)dTO~d=dTr1To~ii=dTrdi.

这意味着, 倘若我们想通过 (A2) 来求解方程, 那么 O~d 必须满足 (A3) 的条件.

故我们现在求解的思路是:

  1. 用 (A3) 的值指定 oii;
  2. 然后用 (A2) 求解 O~;
  3. 令 (保证 oii=0 ):

    O=O~O~d,

    此时 O 为 (A1) 的解.

但是我们可以取巧, 直接通过下列方程求解 O:

O~O~d=r1T+P(O~O~d)O~dO=r1T+POO~dO=r1T+D1WOO~dDO=Dr1T+WODO~dLO=Dr1TDO~dLLO=LD[r1TO~d](I1n11T)O=LD[r1TO~d].

zT=1n1TO 可得:

oij=zj+k(LikLij)dkrk,

通过 ojj=0 可以得到

zj=k(LjjLjk)dkrk,

于是

(A4)o(j|i)=oij=k(LikLjk+LjjLij)dkrk.

因为上式对于 o(i,i)=0 也满足, 所以 (A4) 就是最终的解. 此外, 在 cij1 的时候, rk=1, 故

(A5)m(j|i)=oij=k(LikLjk+LjjLij)dk.


CTD

通过上面的结论, 我们可以知道

n(i,j)=m(j|i)+m(i|j)=(Lii+Ljj2Lij)vol(G).

这里 vol(G)=kdk.

假设我们为每个结点 vi 指定一个 embedding xiRn1, 满足

X=[x1,x2,,xn]=Λ12UTR(n1)×n.

L=XTX,

于是

xixj22=Lii+Ljj2Lij.

n(i,j)=vol(G)xixj22.

故 CTD 实际上衡量了'最优' embeddings 的一个 22 度量.

posted @   馒头and花卷  阅读(164)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
点击右上角即可分享
微信分享提示