TGRSL-2017《Fast Spectral Clustering with Anchor Graph》
核心思想
该论文提出了一种名为快速谱聚类与锚图(Fast Spectral Clustering with Anchor Graph, FSCAG的算法,旨在高效处理大规模高光谱图像(HSI)的聚类问题。传统谱聚类(Spectral Clustering, SC)方法在处理大规模数据时面临两个主要瓶颈:
- 构建相似度矩阵的时间复杂度为 O(n2d)O(n^2d)O(n2d);
- 拉普拉斯矩阵的特征值分解复杂度为 O(n2c)O(n^2c)O(n2c)。
这两个步骤在 nnn(样本数)非常大时变得不可行。为解决此问题,FSCAG引入了锚图(Anchor Graph结构,通过选取少量“锚点”(anchors)来近似全图的相似性关系,从而将复杂度显著降低。其核心思想包括:
- 锚点机制:从原始数据中选取 mmm 个锚点(m≪nm \ll nm≪n),用这些锚点作为中介来构建样本与锚点之间的相似性矩阵 Z∈Rn×mZ \in \mathbb{R}^{n \times m}Z∈Rn×m,从而避免直接计算 n×nn \times nn×n 的全相似度矩阵。
- 融合空间信息:在构建锚图时,不仅考虑像素的光谱特征 xix_ixi,还引入其邻域均值 xˉi\bar{x}_ixˉi,以增强对噪声和混合像素的鲁棒性,提升聚类结果的空间一致性。
- 高效谱分析:利用锚图构造出的相似度矩阵具有双随机性质,使得度矩阵 D=ID = ID=I,从而拉普拉斯矩阵简化为 L=I−AL = I - AL=I−A,进一步通过SVD分解低秩矩阵 B=ZΛ−1/2B = Z\Lambda^{-1/2}B=ZΛ−1/2 来替代高维矩阵的特征分解,大幅降低计算开销。
目标函数
FSCAG的目标函数是在构建锚图时,学习一个稀疏且具有空间鲁棒性的相似性分配矩阵 ZZZ。具体目标函数如下:
minziT1=1,zij≥0∑j=1m(∥xi−uj∥22+α∥xˉi−uj∥22)zij+γzij2 \min_{z_i^T \mathbf{1} = 1, z_{ij} \geq 0} \sum_{j=1}^{m} \left( \|x_i - u_j\|_2^2 + \alpha \|\bar{x}_i - u_j\|_2^2 \right) z_{ij} + \gamma z_{ij}^2 ziT1=1,zij≥0minj=1∑m(∥xi−uj∥22+α∥xˉi−uj∥22)zij+γzij2
其中:
- xix_ixi 是第 iii 个像素的光谱向量;
- xˉi\bar{x}_ixˉi 是以 xix_ixi 为中心的邻域窗口内的平均光谱向量;
- uju_juj 是第 jjj 个锚点;
- zijz_{ij}zij 表示样本 xix_ixi 与锚点 uju_juj 的相似性权重;
- α≥0\alpha \geq 0α≥0 是控制光谱信息与空间平滑信息之间权衡的超参数;
- γ>0\gamma > 0γ>0 是正则化参数,用于鼓励稀疏性。
该目标函数结合了光谱距离和空间一致性,使相似性度量更具鲁棒性。
目标函数的优化过程
上述目标函数可以重写为向量形式:
令 dij=∥xi−uj∥22+α∥xˉi−uj∥22d_{ij} = \|x_i - u_j\|_2^2 + \alpha \|\bar{x}_i - u_j\|_2^2dij=∥xi−uj∥22+α∥xˉi−uj∥22,定义向量 di∈Rmd_i \in \mathbb{R}^mdi∈Rm,其第 jjj 个元素为 dijd_{ij}dij,则原问题等价于:
minzi∥zi+12γdi∥2 \min_{z_i} \left\| z_i + \frac{1}{2\gamma} d_i \right\|^2 ziminzi+2γ1di2
在约束 ziT1=1z_i^T \mathbf{1} = 1ziT1=1 且 zij≥0z_{ij} \geq 0zij≥0 下,该问题有闭式解。根据文献[19],为了获得稀疏解(仅保留 kkk 个非零项),可设定:
γ=k2di,k+1−12∑j=1kdi,j \gamma = \frac{k}{2} d_{i,k+1} - \frac{1}{2} \sum_{j=1}^{k} d_{i,j} γ=2kdi,k+1−21j=1∑kdi,j
其中 di,k+1d_{i,k+1}di,k+1 是 did_idi 中第 (k+1)(k+1)(k+1) 小的值。此时,最优解为:
zij=di,k+1−di,jkdi,k+1−∑j=1kdi,j,if j∈Nk(i) z_{ij} = \frac{d_{i,k+1} - d_{i,j}}{k d_{i,k+1} - \sum_{j=1}^{k} d_{i,j}}, \quad \text{if } j \in \mathcal{N}_k(i) zij=kdi,k+1−∑j=1kdi,jdi,k+1−di,j,if j∈Nk(i)
否则 zij=0z_{ij} = 0zij=0,其中 Nk(i)\mathcal{N}_k(i)Nk(i) 是锚点集中离 xix_ixi 最近的 kkk 个锚点索引集合。
这一解法确保了 ZZZ 矩阵的稀疏性,极大减少了后续计算负担。
主要贡献点
- 提出FSCAG算法:首次将锚图机制应用于大规模高光谱图像聚类,显著降低计算复杂度。
- 融合空间信息的目标函数:在锚图构建中引入邻域均值 xˉi\bar{x}_ixˉi,增强了对噪声和混合像素的鲁棒性,提升了聚类结果的空间平滑性。
- 极低的计算复杂度:整体复杂度降至 O(ndm)O(ndm)O(ndm),相比传统图聚类方法的 O(n2d)O(n^2d)O(n2d) 是数量级的提升,适用于百万级像素的大规模HSI。
- 无需显式参数调优的核方法:避免使用高斯核带来的带宽 σ\sigmaσ 调参问题,采用无参数的距离建模方式。
- 理论保障的归一化性质:所构造的相似度矩阵 A=ZΛ−1ZTA = Z\Lambda^{-1}Z^TA=ZΛ−1ZT 是双随机矩阵(doubly stochastic),自动满足归一化条件,使得 D=ID = ID=I,简化谱聚类流程。
算法实现过程详解
以下是FSCAG算法的完整实现步骤(对应论文Algorithm 1):
输入:
- 高光谱数据矩阵 X∈Rn×dX \in \mathbb{R}^{n \times d}X∈Rn×d
- 聚类类别数 ccc
- 锚点数量 mmm
- 邻域大小 kkk
- 空间权重参数 α\alphaα
步骤1:生成锚点
采用随机采样方式从 nnn 个样本中选取 mmm 个锚点 U=[u1,...,um]T∈Rm×dU = [u_1, ..., u_m]^T \in \mathbb{R}^{m \times d}U=[u1,...,um]T∈Rm×d。该步骤时间复杂度为 O(1)O(1)O(1),也可用k-means但代价更高。
步骤2:构建锚图(计算矩阵 ZZZ)
对每个样本 xix_ixi:
- 计算其邻域均值 xˉi\bar{x}_ixˉi(如 3×33\times33×3 窗口内的平均值),可预先计算。
- 对每个锚点 uju_juj,计算加权距离:
dij=∥xi−uj∥22+α∥xˉi−uj∥22 d_{ij} = \|x_i - u_j\|_2^2 + \alpha \|\bar{x}_i - u_j\|_2^2 dij=∥xi−uj∥22+α∥xˉi−uj∥22 - 找出距离最小的 kkk 个锚点(即最近邻)。
- 根据公式计算 zijz_{ij}zij:
zij=di,k+1−di,jkdi,k+1−∑j=1kdi,j,j∈Nk(i) z_{ij} = \frac{d_{i,k+1} - d_{i,j}}{k d_{i,k+1} - \sum_{j=1}^{k} d_{i,j}}, \quad j \in \mathcal{N}_k(i) zij=kdi,k+1−∑j=1kdi,jdi,k+1−di,j,j∈Nk(i)
其余 zij=0z_{ij} = 0zij=0。 - 得到稀疏矩阵 Z∈Rn×mZ \in \mathbb{R}^{n \times m}Z∈Rn×m,总复杂度 O(ndm)O(ndm)O(ndm)。
步骤3:构造相似度矩阵 AAA
计算对角矩阵 Λ∈Rm×m\Lambda \in \mathbb{R}^{m \times m}Λ∈Rm×m,其中:
Λjj=∑i=1nzij
\Lambda_{jj} = \sum_{i=1}^{n} z_{ij}
Λjj=i=1∑nzij
然后构造相似度矩阵:
A=ZΛ−1ZT
A = Z \Lambda^{-1} Z^T
A=ZΛ−1ZT
该矩阵为对称双随机矩阵,满足 ∑jaij=1\sum_j a_{ij} = 1∑jaij=1,故度矩阵 D=ID = ID=I。
步骤4:谱分析(SVD分解)
令:
B=ZΛ−1/2
B = Z \Lambda^{-1/2}
B=ZΛ−1/2
对 BBB 进行奇异值分解(SVD):
B=UΣVT
B = U \Sigma V^T
B=UΣVT
则 A=BBTA = BB^TA=BBT 的前 ccc 个最大特征值对应的特征向量即为 UUU 的前 ccc 列,构成连续松弛解 F∈Rn×cF \in \mathbb{R}^{n \times c}F∈Rn×c。该步骤复杂度为 O(nmc+m2c)O(nmc + m^2c)O(nmc+m2c)。
步骤5:k-means聚类
对 FFF 的每一行(即每个样本的低维嵌入)运行k-means算法,得到最终的离散聚类标签。复杂度为 O(nmct)O(nmc t)O(nmct),ttt 为迭代次数。
输出:
- ccc 个聚类结果
总结
FSCAG通过锚图 + 空间正则 + 高效SVD三者结合,在保证聚类质量的同时,实现了对大规模高光谱图像的高效聚类。其 O(ndm)O(ndm)O(ndm) 的复杂度使其能轻松处理数十万甚至上百万像素的HSI数据,在Salinas和Pavia Center等大规模数据集上表现出色,而传统谱聚类因内存溢出无法运行。该方法为遥感图像分析中的大规模聚类任务提供了实用且高效的解决方案。
为什么“求解 A=BBTA = BB^TA=BBT 的最大特征值对应的特征向量,就等价于求解 BBB 的奇异值分解(SVD)”。
1. 核心思想:从 A=BBTA = BB^TA=BBT 到 SVD
假设我们有一个矩阵 B∈Rn×mB \in \mathbb{R}^{n \times m}B∈Rn×m,并定义了一个对称半正定矩阵:
A=BBT
A = B B^T
A=BBT
我们的目标是找到 AAA 的最大特征值及其对应的特征向量。
根据线性代数理论,矩阵 A=BBTA = BB^TA=BBT 的特征值和特征向量可以通过对 BBB 进行奇异值分解(SVD)来直接获得。
2. 奇异值分解(SVD)回顾
对任意实矩阵 B∈Rn×mB \in \mathbb{R}^{n \times m}B∈Rn×m,其SVD分解为:
B=UΣVT
B = U \Sigma V^T
B=UΣVT
其中:
- U∈Rn×nU \in \mathbb{R}^{n \times n}U∈Rn×n 是左奇异向量矩阵(正交矩阵),其列向量是 BBTBB^TBBT 的特征向量。
- Σ∈Rn×m\Sigma \in \mathbb{R}^{n \times m}Σ∈Rn×m 是奇异值矩阵(对角线元素为奇异值 σ1,σ2,...,σr\sigma_1, \sigma_2, ..., \sigma_rσ1,σ2,...,σr,其中 r=rank(B)r = \text{rank}(B)r=rank(B),且 σ1≥σ2≥...≥σr>0\sigma_1 \geq \sigma_2 \geq ... \geq \sigma_r > 0σ1≥σ2≥...≥σr>0)。
- V∈Rm×mV \in \mathbb{R}^{m \times m}V∈Rm×m 是右奇异向量矩阵(正交矩阵),其列向量是 BTBB^TBBTB 的特征向量。
3. 推导:A=BBTA = BB^TA=BBT 的特征值与 BBB 的SVD的关系
将 B=UΣVTB = U \Sigma V^TB=UΣVT 代入 A=BBTA = BB^TA=BBT:
A=BBT=(UΣVT)(VΣTUT)=UΣ(VTV)ΣTUT=UΣΣTUT
A = BB^T = (U \Sigma V^T)(V \Sigma^T U^T) = U \Sigma (V^T V) \Sigma^T U^T = U \Sigma \Sigma^T U^T
A=BBT=(UΣVT)(VΣTUT)=UΣ(VTV)ΣTUT=UΣΣTUT
因为 VTV=IV^T V = IVTV=I(单位矩阵)。
现在,ΣΣT\Sigma \Sigma^TΣΣT 是一个 n×nn \times nn×n 的对角矩阵,其对角线元素是 σi2\sigma_i^2σi2(即奇异值的平方)。因此:
A=U(ΣΣT)UT
A = U (\Sigma \Sigma^T) U^T
A=U(ΣΣT)UT
这正是矩阵 AAA 的特征值分解!其中:
- UUU 是 AAA 的特征向量矩阵。
- ΣΣT\Sigma \Sigma^TΣΣT 的对角线元素 σi2\sigma_i^2σi2 是 AAA 的特征值。
4. 结论:最大特征值与最大奇异值的关系
由于 σ1≥σ2≥...≥σr\sigma_1 \geq \sigma_2 \geq ... \geq \sigma_rσ1≥σ2≥...≥σr,所以 σ12\sigma_1^2σ12 是 A=BBTA = BB^TA=BBT 的最大特征值。
而 AAA 的最大特征值对应的特征向量,就是 UUU 的第一列,也就是 BBB 的SVD分解中的第一个左奇异向量。
5. 为什么说“等价”?
- 计算上的等价性:要找 A=BBTA = BB^TA=BBT 的最大特征值和对应特征向量,最高效的方法不是直接对 AAA 进行特征分解(复杂度高),而是先对 BBB 进行SVD,然后取最大的奇异值 σ1\sigma_1σ1 和对应的左奇异向量 u1u_1u1。
- 数学上的等价性:A=BBTA = BB^TA=BBT 的特征值是 BBB 的奇异值的平方,特征向量是 BBB 的左奇异向量。
6. 在FSCAG算法中的应用
在FSCAG中,相似度矩阵 AAA 被构造为:
A=ZΛ−1ZT=BBT,其中 B=ZΛ−1/2
A = Z \Lambda^{-1} Z^T = B B^T, \quad \text{其中 } B = Z \Lambda^{-1/2}
A=ZΛ−1ZT=BBT,其中 B=ZΛ−1/2
因此,求解谱聚类的目标函数 maxFTF=Itr(FTAF)\max_{F^T F = I} \text{tr}(F^T A F)maxFTF=Itr(FTAF) 就等价于求解 BBB 的SVD,从而避免了直接对 n×nn \times nn×n 的 AAA 矩阵进行特征分解,大大降低了计算复杂度。
总结
“求解 A=BBTA = BB^TA=BBT 的最大特征值对应的特征向量,就等价于求解 BBB 的奇異值分解(SVD)”
这句话的意思是:
- A=BBTA = BB^TA=BBT 的特征值是 BBB 的奇异值的平方。
- AAA 的特征向量是 BBB 的左奇异向量。
因此,通过计算 BBB 的SVD,我们可以直接得到 AAA 的所有特征值和特征向量,无需显式构造或分解 AAA。
这种方法在大规模数据处理中极为重要,因为它将一个高维、高复杂度的问题(特征分解)转化为一个更高效、可扩展的问题(SVD)。
这段文字揭示了奇异值分解(SVD)与特征值分解之间的深刻联系,是理解FSCAG等算法高效性的核心数学基础。我们来逐步解析它。
1. 回顾:从 SVD 到 A=BBTA = BB^TA=BBT 的特征分解
在FSCAG中,相似度矩阵 AAA 被构造为:
A=BBT
A = B B^T
A=BBT
其中 B∈Rn×mB \in \mathbb{R}^{n \times m}B∈Rn×m 是一个由锚点构建的矩阵。
现在,我们对 BBB 进行奇异值分解(SVD):
B=UΣVT
B = U \Sigma V^T
B=UΣVT
其中:
- U∈Rn×nU \in \mathbb{R}^{n \times n}U∈Rn×n:左奇异向量矩阵。
- Σ∈Rn×m\Sigma \in \mathbb{R}^{n \times m}Σ∈Rn×m:奇异值矩阵(对角线元素为奇异值 σ1,σ2,...,σr\sigma_1, \sigma_2, ..., \sigma_rσ1,σ2,...,σr)。
- V∈Rm×mV \in \mathbb{R}^{m \times m}V∈Rm×m:右奇异向量矩阵。
2. 关键推导:计算 A=BBTA = BB^TA=BBT
将 B=UΣVTB = U \Sigma V^TB=UΣVT 代入 A=BBTA = BB^TA=BBT:
A=BBT=(UΣVT)(VΣTUT)
A = BB^T = (U \Sigma V^T)(V \Sigma^T U^T)
A=BBT=(UΣVT)(VΣTUT)
由于 VTV=IV^T V = IVTV=I(正交矩阵的性质),上式简化为:
A=UΣ(VTV)ΣTUT=UΣΣTUT
A = U \Sigma (V^T V) \Sigma^T U^T = U \Sigma \Sigma^T U^T
A=UΣ(VTV)ΣTUT=UΣΣTUT
注意:ΣΣT\Sigma \Sigma^TΣΣT 是一个 n×nn \times nn×n 的矩阵。由于 Σ\SigmaΣ 是一个 n×mn \times mn×m 的矩阵,其形式为:
Σ=[σ10⋯00σ2⋯0⋮⋮⋱⋮00⋯σr00⋯0⋮⋮⋱⋮00⋯0]n×m
\Sigma = \begin{bmatrix}
\sigma_1 & 0 & \cdots & 0 \\
0 & \sigma_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \sigma_r \\
0 & 0 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & 0 \\
\end{bmatrix}_{n \times m}
Σ=σ10⋮00⋮00σ2⋮00⋮0⋯⋯⋱⋯⋯⋱⋯00⋮σr0⋮0n×m
那么 ΣΣT\Sigma \Sigma^TΣΣT 就是一个 n×nn \times nn×n 的对角矩阵,其对角线元素是 σi2\sigma_i^2σi2(即奇异值的平方)。具体来说:
- 第 iii 个对角线元素是 σi2\sigma_i^2σi2(如果 i≤ri \leq ri≤r)。
- 其余为0。
因此,我们可以写成:
ΣΣT=diag(σ12,σ22,...,σr2,0,...,0)
\Sigma \Sigma^T = \text{diag}(\sigma_1^2, \sigma_2^2, ..., \sigma_r^2, 0, ..., 0)
ΣΣT=diag(σ12,σ22,...,σr2,0,...,0)
所以:
A=U(ΣΣT)UT
A = U (\Sigma \Sigma^T) U^T
A=U(ΣΣT)UT
3. 理解:这正是 AAA 的特征值分解!
矩阵的特征值分解形式为:
A=PΛP−1
A = P \Lambda P^{-1}
A=PΛP−1
对于对称矩阵(如 A=BBTA = BB^TA=BBT),其特征值分解可以写成:
A=PΛPT
A = P \Lambda P^T
A=PΛPT
其中 PPP 是特征向量矩阵,Λ\LambdaΛ 是特征值对角矩阵。
对比上面的结果:
A=U(ΣΣT)UT
A = U (\Sigma \Sigma^T) U^T
A=U(ΣΣT)UT
我们发现:
- UUU 正是 AAA 的特征向量矩阵(因为 UUU 是正交矩阵,且 UT=U−1U^T = U^{-1}UT=U−1)。
- ΣΣT\Sigma \Sigma^TΣΣT 正是 AAA 的特征值对角矩阵,其对角线元素 σi2\sigma_i^2σi2 就是 AAA 的特征值。
4. 结论:为什么这个等价性如此重要?
传统方法 | FSCAG 方法 |
---|---|
直接对 n×nn \times nn×n 的 AAA 做特征值分解,复杂度 O(n3)O(n^3)O(n3) | 对 n×mn \times mn×m 的 BBB 做 SVD,复杂度 O(nmmin(n,m))O(n m \min(n,m))O(nmmin(n,m)) |
由于 m≪nm \ll nm≪n,FSCAG 的计算效率远高于传统方法。
例如,在 Pavia Center 数据集上:
- n=783,640n = 783,640n=783,640,m=1000m = 1000m=1000
- 传统方法:O(n3)≈1018O(n^3) \approx 10^{18}O(n3)≈1018 次操作(不可行)
- FSCAG:O(nm2)≈1012O(n m^2) \approx 10^{12}O(nm2)≈1012 次操作(可行)
5. 总结
“A=U(ΣΣT)UTA = U(\Sigma \Sigma^T)U^TA=U(ΣΣT)UT 正是矩阵 AAA 的特征值分解”
这句话的意思是:
- A=BBTA = BB^TA=BBT 的特征向量就是 BBB 的左奇异向量 UUU。
- AAA 的特征值就是 BBB 的奇异值的平方 σi2\sigma_i^2σi2。
因此,通过计算 BBB 的 SVD,我们就可以直接得到 AAA 的所有特征值和特征向量,无需显式构造或分解 AAA。
这种方法在大规模数据处理中极为重要,因为它将一个高维、高复杂度的问题(特征分解)转化为一个更高效、可扩展的问题(SVD)。
您提出的问题非常关键,它直接关系到FSCAG算法为何能实现“快速”聚类。我们来详细分析对矩阵 BBB 进行奇异值分解(SVD)的复杂度。
2. B矩阵进行SVD的计算复杂度
对于一个 n×mn \times mn×m 的矩阵 BBB(假设 n≥mn \geq mn≥m),其标准的SVD分解 B=UΣVTB = U \Sigma V^TB=UΣVT 的计算复杂度为:
O(nmmin(n,m)) O(n m \min(n, m)) O(nmmin(n,m))
更具体地,当 m≪nm \ll nm≪n 时,这个复杂度可以近似为:
O(nm2)
O(n m^2)
O(nm2)
为什么是这个复杂度?
SVD的计算通常通过迭代算法(如分而治之法或Lanczos算法)实现。其核心思想是将一个大矩阵的分解问题,转化为一系列较小规模的、更易处理的子问题。这个过程的计算量主要取决于矩阵的维度。
3. 与传统谱聚类的对比
这是理解FSCAG高效性的关键。
方法 | 要分解的矩阵 | 矩阵维度 | 计算复杂度 | 备注 |
---|---|---|---|---|
传统谱聚类 (SC) | 拉普拉斯矩阵 LLL 或相似度矩阵 AAA | n×nn \times nn×n | O(n2c)O(n^2 c)O(n2c) 或 O(n3)O(n^3)O(n3) | 需要对 n×nn \times nn×n 的矩阵进行特征值分解,当 nnn 很大时(如百万级像素),这在时间和内存上都不可行。 |
FSCAG | 矩阵 BBB | n×mn \times mn×m (m≪nm \ll nm≪n) | O(nm2)O(n m^2)O(nm2) | 只需对一个“瘦高”矩阵进行SVD。由于 mmm 远小于 nnn,计算量大大降低。 |
4. 在FSCAG中的具体应用
在FSCAG算法中,矩阵 BBB 的定义是:
B=ZΛ−1/2
B = Z \Lambda^{-1/2}
B=ZΛ−1/2
其中 ZZZ 是 n×mn \times mn×m 的稀疏矩阵,Λ\LambdaΛ 是 m×mm \times mm×m 的对角矩阵。
因此,BBB 也是一个 n×mn \times mn×m 的矩阵。根据上面的复杂度分析,对其进行SVD的计算量是 O(nm2)O(n m^2)O(nm2)。
这段文字描述了FSCAG算法中谱分析(Spectral Analysis)步骤的计算复杂度,并解释了为什么通过SVD分解矩阵 BBB 而不是直接对相似度矩阵 AAA 进行特征值分解,可以显著降低计算开销。我们来详细拆解和理解它。
1. 核心思想:用 SVD 替代特征值分解
在传统谱聚类中,我们需要对一个 n×nn \times nn×n 的拉普拉斯矩阵 LLL 或相似度矩阵 AAA 进行特征值分解,以找到其最小的 ccc 个特征值对应的特征向量。这个过程的复杂度是 O(n2c)O(n^2 c)O(n2c),对于大规模数据(如百万级像素的高光谱图像)来说是不可接受的。
FSCAG的核心创新在于,它利用了相似度矩阵 AAA 的特殊结构(A=BBTA = B B^TA=BBT),将问题转化为对一个更小的矩阵 BBB 进行奇异值分解(SVD)。这极大地降低了计算复杂度。
2. 复杂度公式详解
原文中的复杂度是:
O(nmc+m2c)
O(nmc + m^2c)
O(nmc+m2c)
这个复杂度由两部分组成:
第一部分:O(nmc)O(nmc)O(nmc)
这是对矩阵 BBB 进行SVD分解的主要计算成本。
- BBB 是一个 n×mn \times mn×m 的矩阵。
- 对 BBB 进行SVD分解(即 B=UΣVTB = U \Sigma V^TB=UΣVT)的标准复杂度是 O(nmmin(n,m))O(n m \min(n, m))O(nmmin(n,m))。
- 由于 m≪nm \ll nm≪n,所以 min(n,m)=m\min(n, m) = mmin(n,m)=m,因此复杂度为 O(nm2)O(n m^2)O(nm2)。
但是,我们不需要完整的SVD分解。我们只需要前 ccc 个最大的奇异值及其对应的左奇异向量(因为我们要的是 A=BBTA = BB^TA=BBT 的前 ccc 个最大特征值对应的特征向量)。
因此,我们可以使用截断SVD(Truncated SVD),只计算前 ccc 个奇异三元组(singular triplets)。这种优化后的SVD复杂度是 O(nmc)O(n m c)O(nmc)。
注意:这里有一个常见的误解。虽然完整的SVD是 O(nm2)O(n m^2)O(nm2),但截断SVD(用于求前 ccc 个主成分)的复杂度通常是 O(nmc)O(n m c)O(nmc),当 c≪mc \ll mc≪m 时,这比 O(nm2)O(n m^2)O(nm2) 更优。
第二部分:O(m2c)O(m^2c)O(m2c)
这是从SVD结果中提取最终嵌入矩阵 FFF 的额外成本。
- 在得到 B=UΣVTB = U \Sigma V^TB=UΣVT 后,我们需要计算 FFF 的近似解。
- 具体来说,FFF 可以取为 UUU 的前 ccc 列,或者更精确地,通过 F=UcΣc1/2F = U_c \Sigma_c^{1/2}F=UcΣc1/2 得到。
- 计算 Σc1/2\Sigma_c^{1/2}Σc1/2 和矩阵乘法涉及 m×mm \times mm×m 的操作,其复杂度为 O(m2c)O(m^2c)O(m2c)。
3. 为什么这个复杂度是革命性的?
让我们对比一下两种方法的复杂度:
方法 | 复杂度 | 分析 |
---|---|---|
传统谱聚类 (SC) | O(n2c)O(n^2 c)O(n2c) | 对 n×nn \times nn×n 的矩阵进行特征值分解,当 nnn 很大时(如百万级),这在时间和内存上都不可行。 |
FSCAG | O(nmc+m2c)O(n m c + m^2 c)O(nmc+m2c) | 由于 m≪nm \ll nm≪n,这个复杂度远低于传统方法。例如,当 n=106n=10^6n=106, m=1000m=1000m=1000, c=10c=10c=10 时,传统方法需要约 101410^{14}1014 次操作,而 FSCAG 只需要约 101010^{10}1010 次操作,效率提升巨大。 |
4. 总结
“Instead of directly performing eigenvalue decomposition on A, we prefer to perform SVD on B to obtain the relaxed continuous solution of F, and the computational complexity reduces to O(nmc + m²c).”
这句话的意思是:
- 我们不直接对 n×nn \times nn×n 的 AAA 做特征值分解(复杂度 O(n2c)O(n^2c)O(n2c)),而是对 n×mn \times mn×m 的 BBB 做SVD(复杂度 O(nmc+m2c)O(nmc + m^2c)O(nmc+m2c))。
- 由于 mmm 远小于 nnn,后者的复杂度远低于前者。
- 这种策略使得FSCAG能够高效处理大规模高光谱图像聚类问题,避免了传统方法的“内存溢出”(OM error)问题。