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) 的显式计算公式.

符号说明

  • \(\mathcal{G} = \{\mathcal{V}, \mathcal{E}\}\), 图;
  • \(\mathcal{V} = \{v_1, \ldots, v_n\}\), 顶点;
  • \(\mathcal{E} = \{e_{ij}\}\), 边集;
  • \(W \in \mathbb{R}^{n \times n}\), \(w_{ij}\) 为边 \(e_{ij}\) 上的权重, 若 \(w_{ij} = 0\) 表示 \(i, j\) 之间不存在边;
  • \(\bm{d} \in \mathbb{R}^n\), \(d_i = \sum_j w_{ij}\);
  • \(D := \text{diag}(\bm{d}) \in \mathbb{R}^{n \times n}\), 对角化;
  • \(L := D - W\), 带权重的 Laplacian 矩阵;
  • \(P = D^{-1}W \in \mathbb{R}^{n \times n}\), \(p_{ij} = P(j|i) = w_{ij} / d_i\), 转移概率 (\(i \rightarrow j\)).
  1. 假设图 \(\mathcal{G}\) 是连通图, 此时可证明 \(\text{rank}(L) = n - 1\), 此时我们可以将 \(L\) 表示为:

    \[\tag{1} L = U\Lambda U^T = \sum_{i=2}^n \lambda_i \bm{u}_i \bm{u}_i^T, \]

    其中

    \[U = [\bm{u}_2, \ldots, \bm{u}_n] \in \mathbb{R}^{n \times (n - 1)}, \\ \Lambda = \text{diag}([\lambda_2, \ldots, \lambda_n]) \in \mathbb{R}^{(n - 1) \times (n - 1)}, \\ 0 < \lambda_2 \le \ldots \le \lambda_n; \]

  2. 注意到

    \[\tag{2} L \bm{1} = \bm{0}, \]

    故实际上 \(\bm{1}\)\(L\) 的对应 \(\lambda_1 = 0\) 的特征向量,
    于是我们可以定义其 \(L\) 的伪逆

    \[L^{\dagger} := U \Lambda^{-1} U^T, \]

    且满足

    \[LL^{\dagger} = L^{\dagger}L = \sum_{i = 2}^n \bm{u}_i \bm{u}^T = I - \frac{1}{n} \bm{1}\bm{1}^T. \]

主要内容

Random Walk

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

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

time/cost/distance

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

\[\sum_{\tau=1}^t c_{s(\tau - 1)s(\tau)}, \]

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

\[\xi(i, j | s) = \sum_{\tau=1}^{T_{ij}} c_{s(\tau - 1)s(\tau)}, \\ T_{ij} = \min (t \ge 0 | s(t) = k \text{ and } s(0) = i). \]

注意到, \(c_{ij} \equiv 1, \forall i, j\), \(\xi(i, j|s) = T_{ij}\).

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

\[\tag{3} o(j|i) := \mathbb{E}_{s} [\xi(i,j|s)], \]

特别地定义

\[\tag{4} m(j|i) := \mathbb{E}_{s} [T_{ij}]. \]

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

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

\[\tag{5} o(j|i) = p_{ij} \cdot c_{ij} + \sum_{k \not = j} p_{ik} \big(c_{ik} + o(j|k) \big), \: \ j \not = i, \\ o(i|i) = 0. \]

即从状态 \(i\) 到状态 \(j\) 的消耗等价于直接到 \(j\) 的消耗 \(p_{ij} c_{ij}\) 加上先到其它点 \(j\) 的消耗 \(p_{ik} c_{ik}\) 然后加上再从这个 \(k\)\(j\) 的消耗 \(p_{ik} o(j | k)\). 类似地

\[\tag{6} m(j|i) = p_{ij} + \sum_{k \not = j} p_{ik} \big(1 + m(j|k) \big), \: j \not = i, \\ 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) \ge 0 \
n(i, j) = 0 \Leftrightarrow i = j \
n(i, j) = n(j, i) \
n(i, j) \le n(i, k) + n(k, j).
$$
注: 证明请参考文章中的参考文献.


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

\[o(j|i) + o(i|j), \]

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


利用伪逆求解 o, m

\[o(j|i) = \sum_k (L_{ik}^{\dagger} - L_{jk}^{\dagger} + L_{jj}^{\dagger} - L_{ij}^{\dagger} ) d_k r_k, \\ m(j|i) = \sum_k (L_{ik}^{\dagger} - L_{jk}^{\dagger} + L_{jj}^{\dagger} - L_{ij}^{\dagger} ) d_k. \\ \]

其中 \(r_k = \sum_j p_{kj} c_{kj}\).


proof:

定义 \(O = [o(j|i)], C = [c_{ij}]\), 此外我们用 \(\bm{o}_i, \bm{c}_i\) 来表示 \(O, C\) 的第 \(i\) 行, 其它的也是类似规定的.
注意到 (\(j \not = i\))

\[\begin{array}{ll} o_{ij} = o(j|i) &=p_{ij} c_{ij} + \sum_{k \not = j} p_{ik}(c_{ik} + o_{kj}) \\ &=[\sum_{k \not = j} p_{ik}(c_{ik} + o_{kj}) + p_{ij} (c_{ik} + \tilde{o}_{jj})] - p_{ij} \tilde{o}_{jj}. \end{array} \]

其中 \(\tilde{o}_{jj}\)人为给定的数, 其存在的目的是为了方便我们用矩阵的形式表达.
\(\bm{r} \in \mathbb{R}^n\) 满足 \(r_i = \bm{p}_i^T \bm{c}_i\), 并记 \(\tilde{O}\) 满足 \([\tilde{O}]_{ii} = \tilde{o}_{ii}, [\tilde{O}]_{ij} = o_{ij}, j \not = i\), 则
用矩阵形式表达即为:

\[\tag{A1} [\tilde{O}]_{ij} = [\bm{r} \bm{1}^T + P(\tilde{O} - \tilde{O}_d)]_{ij} \: j \not = i, \]

其中 \(\tilde{O}_d := \text{diag}([\tilde{o}_{11},\ldots, \tilde{o}_{nn}])\).

我们再来考察下列方程:

\[\tag{A2} \tilde{O} = \bm{r} \bm{1}^T + P(\tilde{O} - \tilde{O}_d), \]

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

\[\begin{array}{ll} \bm{d}^T \tilde{O} &=\bm{d}^T \bm{r} \bm{1}^T + \bm{d}^T P (\tilde{O} - \tilde{O}_d) \\ &=\bm{d}^T \bm{r} \bm{1}^T + \bm{d}^T (\tilde{O} - \tilde{O}_d) \: \leftarrow \bm{d}^T P = \bm{d}^T, \end{array} \]

故 (A2) 有解必须满足:

\[\tag{A3} \bm{d}^T \tilde{O}_d = \bm{d}^T \bm{r} \bm{1}^T \rightarrow \tilde{o}_{ii} = \frac{\bm{d}^T \bm{r}}{d_{i}}. \]

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

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

  1. 用 (A3) 的值指定 \(o_{ii}\);
  2. 然后用 (A2) 求解 \(\tilde{O}\);
  3. 令 (保证 \(o_{ii} = 0\) ):

    \[O = \tilde{O} - \tilde{O}_d, \]

    此时 \(O\) 为 (A1) 的解.

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

\[\tilde{O} - \tilde{O}_d = \bm{r}\bm{1}^T + P (\tilde{O} - \tilde{O}_d) - \tilde{O}_d \\ \leftrightarrow O = \bm{r}\bm{1}^T + PO - \tilde{O}_d \\ \leftrightarrow O = \bm{r}\bm{1}^T + D^{-1} W O - \tilde{O}_d \\ \leftrightarrow DO = D \bm{r}\bm{1}^T + W O - D \tilde{O}_d \\ \leftrightarrow LO = D \bm{r}\bm{1}^T - D \tilde{O}_d \\ \leftrightarrow L^{\dagger}LO = L^{\dagger} D [\bm{r}\bm{1}^T - \tilde{O}_d] \\ \leftrightarrow (I - \frac{1}{n} \bm{11}^T) O = L^{\dagger} D [\bm{r}\bm{1}^T - \tilde{O}_d]. \\ \]

\(\bm{z}^T = \frac{1}{n} \bm{1}^T O\) 可得:

\[o_{ij} = z_j + \sum_k (L_{ik}^{\dagger} - L_{ij}^{\dagger}) d_k r_k, \]

通过 \(o_{jj} = 0\) 可以得到

\[z_{j} = \sum_k (L_{jj}^{\dagger} - L_{jk}^{\dagger}) d_k r_k, \]

于是

\[\tag{A4} o(j|i) = o_{ij} = \sum_k (L_{ik}^{\dagger} - L_{jk}^{\dagger} + L_{jj}^{\dagger} - L_{ij}^{\dagger} ) d_k r_k. \]

因为上式对于 \(o(i, i) = 0\) 也满足, 所以 (A4) 就是最终的解. 此外, 在 \(c_{ij} \equiv 1\) 的时候, \(r_k = 1\), 故

\[\tag{A5} m(j|i) = o_{ij} = \sum_k (L_{ik}^{\dagger} - L_{jk}^{\dagger} + L_{jj}^{\dagger} - L_{ij}^{\dagger} ) d_k. \]


CTD

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

\[n(i, j) = m(j|i) + m(i|j) = (L_{ii}^{\dagger} + L_{jj}^{\dagger} - 2L_{ij}^{\dagger}) vol(\mathcal{G}). \]

这里 \(vol(\mathcal{G}) = \sum_k d_k\).

假设我们为每个结点 \(v_i\) 指定一个 embedding \(\bm{x}_i \in \mathbb{R}^{n-1}\), 满足

\[X = [\bm{x}_1, \bm{x}_2, \ldots, \bm{x}_n] = \Lambda^{-\frac{1}{2}} U^T \in \mathbb{R}^{(n - 1) \times n}. \]

\[L^{\dagger} = X^TX, \]

于是

\[\|\bm{x}_i - \bm{x}_j\|_2^2 = L_{ii}^{\dagger} + L_{jj}^{\dagger} - 2L_{ij}^{\dagger}. \]

\[n(i, j) = vol(\mathcal{G}) \|\bm{x}_i - \bm{x}_j\|_2^2 . \]

故 CTD 实际上衡量了'最优' embeddings 的一个 \(\|\cdot \|_2^2\) 度量.

posted @ 2022-07-24 19:05  馒头and花卷  阅读(141)  评论(0编辑  收藏  举报