15 KiB
如何确定kmeans的簇数?节点之间的流量,空间转为时间的图。
压缩感知 函数拟合 采样定理 傅里叶变换
谱分解与网络重构
实对称矩阵性质:
对于任意 n \times n
的实对称矩阵 $A$:
-
秩可以小于 $n$(即存在零特征值,矩阵不可逆)。
-
但仍然有
n
个线性无关的特征向量(即可对角化)。 -
特征值有正有负!!!
一个实对称矩阵可以通过其特征值和特征向量进行分解。对于一个 n \times n
的对称矩阵 $A$,
完整谱分解可以表示为:
A = Q \Lambda Q^T \\
A = \sum_{i=1}^{n} \lambda_i x_i x_i^T
$Q$是$n \times n$的正交矩阵,每一列是一个特征向量;$\Lambda$是$n \times n$的对角矩阵,对角线元素是特征值\lambda_i
,其余为0。
其中,\lambda_i
是矩阵 A
的第 i
个特征值,x_i
是对应的特征向量。(注意!这里的特征向量需要归一化!!!)
如果矩阵 A
的秩为 r
,那么谱分解里恰好有 r
个非零特征值。
用这 r
对特征值/特征向量就能精确重构出 $A$,因为零特征值对矩阵重构不提供任何贡献。
因此,需要先对所有特征值取绝对值,从大到小排序,取前 r
个!!!
截断的谱分解(取前 \kappa
个特征值和特征向量)
如果我们只保留前 \kappa
个绝对值最大的特征值和对应的特征向量,那么:
- 特征向量矩阵 $U_\kappa$:取
U
的前\kappa
列,维度为 $n \times \kappa$。 - 特征值矩阵 $\Lambda_\kappa$:取
\Lambda
的前\kappa \times \kappa
子矩阵(即前\kappa
个对角线元素),维度为 $\kappa \times \kappa$。
因此,截断后的近似分解为:
A \approx U_\kappa \Lambda_\kappa U_\kappa^T\\
A \approx \sum_{i=1}^{\kappa} \lambda_i x_i x_i^T
推导过程
- 特征值和特征向量的定义
对于一个对称矩阵 $A$,其特征值和特征向量满足:
A x_i = \lambda_i x_i
其中,\lambda_i
是特征值,x_i
是对应的特征向量。
-
谱分解
将这些特征向量组成一个正交矩阵Q
A = Q \Lambda Q^T
Q = \begin{bmatrix} x_1 & x_2 & \cdots & x_n \end{bmatrix},
Q \Lambda = \begin{bmatrix} \lambda_1 x_1 & \lambda_2 x_2 & \cdots & \lambda_n x_n \end{bmatrix}.
Q \Lambda Q^T = \begin{bmatrix} \lambda_1 x_1 & \lambda_2 x_2 & \cdots & \lambda_n x_n \end{bmatrix} \begin{bmatrix} x_1^T \\ x_2^T \\ \vdots \\ x_n^T \end{bmatrix}.
Q \Lambda Q^T = \lambda_1 x_1 x_1^T + \lambda_2 x_2 x_2^T + \cdots + \lambda_n x_n x_n^T.
可以写为
A = \sum_{i=1}^{n} \lambda_i x_i x_i^T.
- 网络重构
在随机网络中,网络的邻接矩阵A
通常是对称的。利用预测算法得到的谱参数\{\lambda_i, x_i\}
后,就可以用以下公式重构网络矩阵:
A(G) = \sum_{i=1}^{n} \lambda_i x_i x_i^T
性质 | 特征分解/谱分解 | 奇异值分解(SVD) |
---|---|---|
适用矩阵 | 仅限方阵($n \times n$) | 任意矩阵($m \times n$,包括矩形矩阵) |
分解形式 | A = P \Lambda P^{-1} |
A = U \Sigma V^* |
矩阵类型 | 可对角化矩阵(如对称、正规矩阵) | 所有矩阵(包括不可对角化的方阵和非方阵) |
输出性质 | 特征值($\lambda_i$)可能是复数 | 奇异值($\sigma_i$)始终为非负实数 |
正交性 | 仅当 A 正规时 P 是酉矩阵 |
U 和 V 始终是酉矩阵(正交) |
谱分解的对象为实对称矩阵,
网络重构分析
基于扰动理论的特征向量估算方法
设原矩阵为 $A$,扰动后矩阵为 $A+\zeta C$(扰动矩阵 $\zeta C$,$\zeta$是小参数),令其第 i
个特征值、特征向量分别为 \lambda_i,x_i
和 $\tilde\lambda_i,\tilde x_i$。
特征向量的一阶扰动公式:
\Delta x_i
=\tilde x_i - x_i
\;\approx\;
\zeta \sum_{k\neq i}
\frac{x_k^T\,C\,x_i}{\lambda_i - \lambda_k}\;x_k,
- 输出:对应第
i
个特征向量修正量 $\Delta x_i$。
特征值的一阶扰动公式:
\Delta\lambda_i = \tilde\lambda_i - \lambda_i \;\approx\;\zeta\,x_i^T\,C\,x_i
**关键假设:**当扰动较小( $\zeta\ll1$) 且各模态近似正交均匀时,常作进一步近似
x_k^T\,C\,x_i \;\approx\; x_i^T\,C\,x_i \;
正交: \{x_k\}
本身是正交基,这是任何对称矩阵特征向量天然具有的属性。
均匀:我们把 C
看作“不偏向任何特定模态”的随机小扰动——换句话说,投影到任何两个方向 (x_i,x_k)
上的耦合强度 x_k^T\,C\,x_i\quad\text{和}\quad x_i^T\,C\,x_i
在数值量级上应当差不多,因此可以互相近似。
因此,将所有的 x_k^T C x_i
替换为 $x_i^T C x_i$:
\Delta x_i \approx \zeta \sum_{k\neq i} \frac{x_i^T C x_i}{\lambda_i - \lambda_k} x_k = \zeta (x_i^T C x_i) \sum_{k\neq i} \frac{1}{\lambda_i - \lambda_k} x_k = \sum_{k\neq i} \frac{\Delta \lambda_i}{\lambda_i - \lambda_k} x_k \tag{*}
\Delta x_i \approx\sum_{k\neq i} \frac{\Delta \lambda_i}{\lambda_i - \lambda_k} x_k \tag{*}
问题:
-
当前时刻的邻接矩阵
A^{(1)}\in\mathbb R^{n\times n},\qquad A^{(1)}\,x_i^{(1)}=\lambda_i^{(1)}\,x_i^{(1)},\quad \|x_i^{(1)}\|=1.
-
下一时刻的邻接矩阵
A^{(2)}\in\mathbb R^{n\times n},
已知它的第
i
个特征值 $\lambda_i^{(2)}$(卡尔曼滤波得来). 求当前时刻的特征向量 $x_i^{(2)}$。
下一时刻第 i
个特征向量的预测为
\boxed{
x_i^{(2)}
\;=\;
x_i^{(1)}+\Delta x_i
\;\approx\;
x_i^{(1)}
+\sum_{k\neq i}
\frac{\lambda_i^{(2)}-\lambda_i^{(1)}}
{\lambda_i^{(1)}-\lambda_k^{(1)}}\;
x_k^{(1)}.
}
通过该估算方法可以依次求出下一时刻的所有特征向量。
矩阵符号说明
-
原始(真实)邻接矩阵
A
,假设A
的秩为 $r$:\lambda_{r+1}=\cdots=\lambda_n=0
A = \sum_{m=1}^n \lambda_m\,x_m x_m^T=\begin{align*} \sum_{m=1}^r \lambda_m x_m x_m^T + \sum_{m=r+1}^n \lambda_m x_m x_m^T = \sum_{m=1}^r \lambda_m x_m x_m^T \end{align*},
-
滤波估计得到的矩阵及谱分解:
\widetilde A = \sum_{m=1}^r \widetilde\lambda_m\,\widetilde x_m\widetilde x_m^T, \quad \widetilde\lambda_1\ge\cdots\ge\widetilde\lambda_n\;
-
只取前
\kappa
项重构 :A_\kappa \;=\;\sum_{m=1}^\kappa \widetilde\lambda_m\,\widetilde x_m\widetilde x_m^T,
-
对
A_\kappa
进行K-means聚类,得到A_{final}
目标是让 A_{final}
= A
0/1矩阵
其中 \widetilde{\lambda}_i
和 \widetilde{x}_i
分别为通过预测得到矩阵 \widetilde A
的第 i
个特征值和对应特征向量。 然而预测值和真实值之间存在误差,直接进行矩阵重构会使得重构误差较大。 对于这个问题,文献提出一种 0/1 矩阵近似恢复算法。
a_{ij} =
\begin{cases}
1, & \text{if}\ \lvert a_{ij} - 1 \rvert < 0.5 \\
0, & \text{else}
\end{cases}
只要我们的估计值与真实值之间差距小于 0.5,就能保证阈值处理以后准确地恢复原边信息。
文中提出网络特征值扰动与邻接矩阵扰动具有相同的规律
真实矩阵 A
与预测矩阵 \widetilde{A}
之间的差为 (秩为 $r$)
A - \widetilde{A}=\sum_{m=1}^r \lambda_m\,x_m x_m^T-\sum_{m=1}^r \widetilde\lambda_m\,\widetilde x_m\widetilde x_m^T
若假设特征向量扰动可忽略,即\widetilde x_m\approx x_m
,扰动可简化为(这里可能有问题,特征向量的扰动也要计算)
A - \widetilde{A} = \sum_{m=1}^r \Delta \lambda_m {x}_m {x}_m^T.
对于任意元素 (i, j)
上有
|a_{ij} - \widetilde{a}_{ij}|=\left| \sum_{m=1}^r \Delta \lambda_m ({x}_m {x}_m^T)_{ij} \right| < \frac{1}{2}
于一个归一化的特征向量 ${x}_m$,其外积矩阵 {x}_m {x}_m^T
满足
|({x}_m {x}_m^T)_{ij}| \leq 1.
例:
x_m = \begin{bmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{bmatrix}\\
x_m x_m^T = \begin{bmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{bmatrix} \begin{bmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{bmatrix} = \begin{bmatrix} \frac{1}{2} & \frac{1}{2} \\ \frac{1}{2} & \frac{1}{2} \end{bmatrix}
每个元素的绝对值\leq1
\left| \sum_{m=1}^r \Delta \lambda_m (x_m x_m^T)_{ij} \right| \leq \sum_{m=1}^r |\Delta \lambda_m| \cdot |(x_m x_m^T)_{ij}| \leq \sum_{m=1}^r |\Delta \lambda_m|.
为了确保 |a_{ij} - \widetilde{a}_{ij}| < \frac{1}{2}
对所有 (i,j)
成立,网络精准重构条件为:
\sum_{m=1}^r\left| \Delta \lambda_m\right| < \frac{1}{2}
0-1 矩阵能够精准重构的容忍上界与网络中的节点数量成反比,网络中节点数量越多,实现精准重构的要求也就越高。
如果在高层次(特征值滤波)的误差累积超过了一定阈值,就有可能在低层次(邻接矩阵元素)中出现翻转。公式推导了只要谱参数的误差之和不超过 0.5,就可以保证0-1矩阵的精确重构。
非0/1矩阵
量化误差
对估计矩阵 \tilde{A}
的所有元素 \{\tilde{a}_{ij}\}
进行 $K$-means 聚类,得到每个簇中心 ${c_k}_{k=1}^K$。
-
簇内平均偏差: 对于第 $k$簇,算该簇所有点到中心的平均绝对偏差:
\text{mean}_k = \frac{1}{|\mathcal{S}_k|} \sum_{(i,j)\in\mathcal{S}_k} |\tilde{a}_{ij} - c_k|
-
全局允许误差:
\delta_{\max} = \frac{1}{K} \sum_{k=1}^K \text{mean}_k
带权重构需控制两类误差:
这里暂时忽略特征向量的扰动,即 x_m=\widetilde x_m
-
滤波误差$\eta$:
来源:滤波器在谱域对真实特征值/向量的估计偏差,包括
- 特征值偏差
\Delta\lambda_m=\lambda_m-\widetilde\lambda_m
- 特征向量:矩阵扰动得来
- 设矩阵
A
的秩为r
A - \widetilde A=\sum_{m=1}^r \lambda_m\,x_m x_m^T-\sum_{m=1}^r \widetilde\lambda_m\,\widetilde x_m\widetilde x_m^T=\sum_{m=1}^r \Delta \lambda_m {x}_m {x}_m^T.
\Bigl\|\sum_{m=1}^r \Delta\lambda_m\, x_m x_m^T\Bigr\|_F = \sqrt{\sum_{m=1}^r (\Delta\lambda_m)^2}.
- 特征值偏差
- 截断谱分解误差 $\epsilon$:
只取前
\kappa
个特征对重构
A_\kappa \;=\;\sum_{m=1}^\kappa \widetilde\lambda_m\,\widetilde x_m\widetilde x_m^T=\;\sum_{m=1}^\kappa \widetilde\lambda_m\, x_m x_m^T
\widetilde A - A_\kappa=\sum_{m=\kappa+1}^r \widetilde\lambda_m\, x_m x_m^T
\Bigl\|\sum_{m=\kappa+1}^r \widetilde\lambda_m\, x_m x_m^T\Bigr\|_F=\sqrt{\sum_{m = \kappa + 1}^{r} \widetilde{\lambda}_{m}^{2}}.\epsilon
= \Bigl\|\sum_{m=\kappa+1}^r \widetilde\lambda_m\, x_m x_m^T\Bigr\|_F=\sqrt{\sum_{m = \kappa + 1}^{r} \widetilde{\lambda}_{m}^{2}}.
- 总的误差
\text{误差矩阵: } A - A_\kappa = \left( A - \widetilde{A} \right) + \left( \widetilde{A} - A_\kappa \right) = \sum_{m=1}^r \Delta \lambda_m x_m x_m^T + \sum_{m=\kappa+1}^r \widetilde{\lambda}_m x_m x_m^T
-
研究单个元素误差:
\text{元素误差绝对值:}|(A - A_\kappa)_{ij}| \leq \sum_{m=1}^r |\Delta \lambda_m| \cdot |(x_m x_m^T)_{ij}| + \sum_{m=\kappa+1}^r |\widetilde\lambda_m| \cdot |(x_m x_m^T)_{ij}|
由于 $|(x_m x_m^T)_{ij}| \leq 1$(归一化特征向量):
|(A - A_\kappa)_{ij}| \leq \sum_{m=1}^r |\Delta \lambda_m| + \sum_{m=\kappa+1}^r |\widetilde\lambda_m|
-
研究整个矩阵误差:
\| A - A_\kappa \|_F^2 = \left\| \sum_{m=1}^r \Delta \lambda_m x_m x_m^T + \sum_{m=\kappa+1}^r \widetilde{\lambda}_m x_m x_m^T \right\|_F^2
而 $| x_m x_m^T |_F = \sqrt{\text{tr}(x_m x_m^T x_m x_m^T)} = \sqrt{\text{tr}(x_m x_m^T)} = | x_m |_2 = 1$,因此:
\| A - A_\kappa \|_F^2 = \sum_{m=1}^r \Delta \lambda_m^2 + \sum_{m=\kappa+1}^r \widetilde{\lambda}_m^2
最终:
\| A - A_\kappa \|_F = \sqrt{ \sum_{m=1}^r |\Delta \lambda_m|^2 + \sum_{m=\kappa+1}^r |\widetilde{\lambda}_m|^2 }
-
- 最终约束条件:
|(A - A_\kappa)_{ij}| \leq 量化阈值\tau
\sum_{m=1}^r |\Delta \lambda_m| + \sum_{m=\kappa+1}^r |\widetilde\lambda_m|\leq 量化阈值\tau
量化阈值推导
要保证重构矩阵 A_\kappa
在每个位置上“落到”正确的某一 簇而不搞混,就必须让重构误差的最大绝对值严格小于任意两个相邻量化级别之间的半距(half‐spacing)。具体地:
-
量化级别及间距定义 设原始矩阵元素只能取
K
个离散值:v_1 < v_2 < \cdots < v_K,
相邻级别间距为:
d_m = v_{m+1} - v_m,\quad m=1,\dots,K-1.
-
最小间距确定 计算所有相邻级别的最小间距:
d_{\min} = \min_{1\le m\le K-1} d_m.
-
通用误差阈值 为确保重构值不会"越界"到相邻级别,取阈值:
\boxed{\tau = \frac{d_{\min}}{2}.}
示例:
- 0-1矩阵,$a=0, b=1,K=2$,量化阈值为0.5。
- 量化级别
\{0,\,0.3,\,0.7,\,1\}
,K=4
时:- 相邻间距:
0.3, 0.4, 0.3
- $d_{\min}=0.3$,故
\tau=0.15
- 相邻间距:
维数选择推导
\sum_{m=1}^r |\Delta \lambda_m| + \sum_{m=\kappa+1}^r |\widetilde\lambda_m|\leq 量化阈值\tau
已知 \sum_{m=1}^r |\Delta \lambda_m|=\eta
,量化阈值 \tau
,令 s=\tau-\eta
,设截断谱分解误差为 \epsilon
\epsilon \leq \tau-\eta
借助前缀和+二分查找寻找最小的 \kappa
:
-
预处理:计算前缀和
设已经有绝对值降序的估计特征值列表a_m = \bigl|\widetilde\lambda_m\bigr|,\quad m=1,\dots,r,
并算出它们的前缀和
S_k = \sum_{m=1}^k a_m,\quad k=0,1,\dots,r, \quad S_0=0.
同时总和
S_r = \sum_{m=1}^r a_m
就是当\kappa=0
时的尾部累积(最大截断误差)。 -
将「尾和 ≤ 预算 $s$」转成前缀和条件
记预算 $s = \tau - \eta$,尾部累积T(k) = \sum_{m=k+1}^r a_m = S_r - S_k.
要 $T(k)\le s$,等价于
S_k \;\ge\; S_r - s.
令阈值
\theta = S_r - s.
-
二分查找最小 $\kappa$
在已排好序的数组 $S_k$(严格单调递增或非减)中,用二分查找找出最小的k
使得S_k \;\ge\;\theta.
这个
k
就是最小满足T(k)\le s
的截断秩 $\kappa$。
伪代码:
# 输入:绝对值降序的列表 a[1..r], 预算 s ≥ 0
S = [0] * (r+1)
for k in range(1, r+1):
S[k] = S[k-1] + a[k] # 前缀和
theta = S[r] - s # 查找阈值
# 在 S[0..r] 中二分找最小 k 使 S[k] >= theta
low, high = 0, r
while low < high:
mid = (low + high) // 2
if S[mid] < theta:
low = mid + 1
else:
high = mid
kappa = low
量化的间隔是不是就和分布有关,有无其他影响因素。
通信原理,采样量化。
压缩感知的话量化分隔不是均匀的。
假设都是破松分布
估计带权邻接矩阵(存在量化误差),比较分布式算法的误差。