想象你是小区物业经理。深夜里,你发现某些楼栋的路灯总是一起明灭,另一些楼栋自成节奏——你想把小区分成几个“同频小组”。最优雅的办法不是挨个统计,而是给每盏灯接上电线,画一张“灯与灯的电路图”,然后追问:怎样的“明暗模式”能让一条电线两端永远差不多亮?这个模式的答案,就藏在一张叫拉普拉斯矩阵的表里。 在数据世界里,每盏灯是一个数据点,每条电线是数据间的相似关系。把点连成图后,我们想找出“连接紧密的分块”,这就是谱聚类。拉普拉斯矩阵正是这张图的“导电总表”——它只是用度矩阵减去邻接矩阵,却蕴含着整个图的分割密码。看懂它,你就从“会用接口”升级到“看得懂内部”,能亲手设计聚类场景、调试参数,在社区发现、图像分割、推荐分群等场景里真正游刃有余。

岗位关联

对 AI 从业者而言,拉普拉斯矩阵是谱聚类的数学心脏。吃透它,你就能在图像分割、社交社区发现、用户分群等任务中亲手调优和创新,而不是只会调用现成接口。

目录
  1. 可视化演示
  2. 第一步:给路灯接线——图的构建
  3. 度矩阵:数一数每盏灯的接线
  4. 拉普拉斯矩阵:电路的导电总表
  5. 归一化拉普拉斯:把灯功率纳入计算
  6. 特征分解:找出电路的固有频率
  7. 特征向量与分割:最平滑的明暗地图
  8. 特征向量个数:看谱悬崖选数字
  9. 谱聚类流程:从电路图到社区分组
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示图结构聚类、拉普拉斯矩阵特征值谱、以及特征向量嵌入空间中的聚类分离效果。

本节配有交互动效(进入视口后自动加载,约 3KB)。

图结构与聚类划分 同簇节点密集连接,跨簇边稀疏 虚线圈标记谱聚类发现的三个簇 L=D-A 拉普拉斯矩阵编码图结构信息用于聚类

第一步:给路灯接线——图的构建

给小区路灯装电线之前,你得先回答一个问题:哪两盏灯该接一根线?在谱聚类里,这个动作叫“构建相似度图”。每个数据点是路灯,每根电线是两个点的相似关系。接线不能乱接,通常有三条规则:ε-邻域图(距离小于 ε 才接线)、K 近邻图(只连最近的 K 个邻居)、全连接高斯核图(所有灯都接线,但线越细阻抗越大,也就是权重越低)。

最常用的是高斯核:两盏灯离得越近,相似度越接近 1;离得越远,相似度指数衰减到 0。这就好比物业给路灯接线,近的用粗铜线(导电好),远得多的干脆不接。把所有相似度写进一张方方正正的表格,表格第 i 行第 j 列就是第 i 盏灯与第 j 盏灯的“电线的粗细”,这张表叫邻接矩阵 W。

邻居选好了、权重写好了,图的骨架就立起来了。下一节,我们要给每盏灯记录一个简单却重要的数字——它接了几根线。

wij=exp⁡(−∥xi−xj∥22σ2)\displaystyle w_{ij} = \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right)
高斯核把“距离”翻译成“相似度”:距离为零时最高为 1,距离越远越趋近 0。σ 控制“多近才算近”的敏感度。
  1. 距离平方先算两个数据点在空间的欧氏距离并平方,度量它们分离得有多开。
    ∥xi−xj∥2\displaystyle \|x_i - x_j\|^2
  2. 尺度归一用 $2\sigma^2$ 做分母,起到“标尺”作用——σ 大,则远处的灯也能沾上关系;σ 小,则只有很近的灯才有连线。
    ∥xi−xj∥22σ2\displaystyle \frac{\|x_i - x_j\|^2}{2\sigma^2}
  3. 指数映射把任意大的距离压缩到 $(0,1]$ 区间,距离为 0 时相似度等于 1,距离很大时趋近 0。
    exp⁡(−∥xi−xj∥22σ2)\displaystyle \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right)

度矩阵:数一数每盏灯的接线

接线图纸画好后,物业经理要统计每盏灯“接了多少根线、线加起来多粗”。对第 i 盏灯,把邻接矩阵第 i 行的所有元素加起来,得到的就是这盏灯的度。度大的灯是社区里的“交通枢纽”,度小的灯是偏僻角落的孤灯。

把所有灯的度依次放在一个对角矩阵的对角线上,其他位置全是 0,就得到度矩阵 D。它像一个“登记册”,每一页只记录一盏灯自己的接线总量,不掺和别人的事。这个登记册虽然简陋,却是后面构造拉普拉斯矩阵的左膀右臂。

度矩阵记住了每盏灯的重要程度。现在,我们要把这张“登记册”和“接线图纸”合并成一张更深的表——拉普拉斯矩阵。

di=∑j=1nwij,D=diag(d1,d2,…,dn)\displaystyle d_i = \sum_{j=1}^{n} w_{ij}, \qquad D = \text{diag}(d_1, d_2, \dots, d_n)
度矩阵是“接线总量登记册”:度大说明这盏灯跟很多邻居连接紧密,度小说明它是边缘节点。
  1. 逐行求和固定第 i 盏灯,把邻接矩阵第 i 行的 n 个权重加起来,得到这一盏灯的总接线量。
    ∑j=1nwij\displaystyle \sum_{j=1}^{n} w_{ij}
  2. 对角摆放用 $\text{diag}$ 操作把 n 个度依次摆到对角线上,非对角元素保持 0,得到一个只登记“自己”的矩阵。
    D=diag(d1,d2,…,dn)\displaystyle D = \text{diag}(d_1, d_2, \dots, d_n)

拉普拉斯矩阵:电路的导电总表

把度矩阵 D 减去邻接矩阵 W,得到的矩阵就是拉普拉斯矩阵 L。它像电路里的“导纳总表”:对角线记录每盏灯的接线总量,非对角线上则记着“两灯之间连线”的负值。这张表有三条奇妙性质:第一,每一行的和都是 0;第二,它是半正定矩阵,所有特征值大于等于 0;第三,全 1 向量一定是它特征值 0 的特征向量。这三条性质让 L 成为图论里的“能量计”——任何一盏灯的亮度如果和邻居差得大,就会在 L 面前现出原形。

为什么 L 能测量“明暗差异”?因为对任意一组亮度 f(每个灯一个亮度值),二次型 $f^T L f$ 恰好等于“所有相邻灯亮度之差的平方和”再除以 2。这个公式是整个谱聚类的灵魂:找一种明暗模式,让所有电线两端的亮度差尽量小,本质上就是在最小化 $f^T L f$。

有了这张“导电总表”,我们还没考虑每盏灯自己的功率。下面要给它做一次“归一化手术”,让它更公平。

L=D−W,fTLf=12∑i=1n∑j=1nwij(fi−fj)2\displaystyle L = D - W, \qquad f^T L f = \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} w_{ij} (f_i - f_j)^2
二次型公式把“矩阵运算”翻译成“物理直觉”:它数的是每根电线两端亮度落差的平方,再按电线粗细加权求和。路灯分组,就是要找这种落差最小的模式。
  1. 拉普拉斯定义对角线上放度、非对角线上放负相似度,一张表同时记录“自己的接线量”和“与邻居的负连接”。
    L=D−W\displaystyle L = D - W
  2. 展开二次型把 $f^T L f$ 写成 $\sum_{i,j} L_{ij} f_i f_j$,然后代入 $L_{ij} = -w_{ij}$(i≠j)与 $L_{ii} = d_i$。
    fTLf=∑idifi2−∑i≠jwijfifj\displaystyle f^T L f = \sum_{i} d_i f_i^2 - \sum_{i \neq j} w_{ij} f_i f_j
  3. 重组为平方差把“自己的度”看作所有邻居权重的总和,交换求和顺序后,两两配对的项合并成 $(f_i - f_j)^2$,并出现系数 2。
    ∑i∑jwijfi2−∑i≠jwijfifj=12∑i,jwij(fi−fj)2\displaystyle \sum_{i} \sum_{j} w_{ij} f_i^2 - \sum_{i \neq j} w_{ij} f_i f_j = \frac{1}{2}\sum_{i,j} w_{ij}(f_i - f_j)^2

归一化拉普拉斯:把灯功率纳入计算

细心的物业经理会发现,只按“接线量”看问题有点不公平:一盏接了 100 根线的小区主灯,和一间只接了 2 根线的角落灯,根本不在一个量级上。为了让每一盏灯在“明暗模式”里享有平等话语权,我们引入归一化拉普拉斯矩阵。

最常用的有两种变体:对称归一化 $L_{\text{sym}} = I - D^{-1/2} W D^{-1/2}$ 和随机游走归一化 $L_{\text{rw}} = I - D^{-1} W$。前者在数学上保持对称美观,方便理论分析;后者对应“从某盏灯出发随机走到邻居”的概率过程,解释起来更直观。两条路殊途同归:它们的特征值谱非常接近,而且都能把“度大的枢纽灯”的数值影响压下来,让算法数值更稳定,对小簇也更敏感。

归一化做好了,接下来真正激动人心的时刻到了——对拉普拉斯矩阵做特征分解,把电路的“固有频率”一条条找出来。

Lsym=I−D−1/2WD−1/2,Lrw=I−D−1W\displaystyle L_{\text{sym}} = I - D^{-1/2} W D^{-1/2}, \qquad L_{\text{rw}} = I - D^{-1} W
归一化就是在“度数”上做平衡:度数高的灯不再垄断电路话语权,度数低的角落灯也能发出同样清晰的信号。这也是工业界推荐优先使用归一化拉普拉斯的原因。
  1. 对称归一化在 L 左右各乘以 $D^{-1/2}$,相当于把每盏灯的“权重”先缩小再还原,变换后矩阵仍然对称。
    Lsym=D−1/2LD−1/2=I−D−1/2WD−1/2\displaystyle L_{\text{sym}} = D^{-1/2} L D^{-1/2} = I - D^{-1/2} W D^{-1/2}
  2. 随机游走归一化只在左边乘以 $D^{-1}$,得到行和为 1 的转移矩阵变体,对应随机游走的概率视角。
    Lrw=D−1L=I−D−1W\displaystyle L_{\text{rw}} = D^{-1} L = I - D^{-1} W
  3. 两变体联系两者通过相似变换关联,特征值完全一致,但特征向量需要再乘 $D^{1/2}$ 才能互相转换。
    Lrw=D−1/2LsymD1/2\displaystyle L_{\text{rw}} = D^{-1/2} L_{\text{sym}} D^{1/2}

特征分解:找出电路的固有频率

一栋楼的自来水管有它自己的“水锤频率”,一张电路图也有自己的“共振频率”。拉普拉斯矩阵的特征分解,就是把整张图的振动特性拆成一个个独立的“频率模式”:每个模式由一个特征值 λ 和一个特征向量 u 组成。把所有模式按特征值从小到大排列,就得到谱。

特征分解公式 $L = U \Lambda U^T$ 读起来很吓人,其实意思很简单:U 是“所有模式排列成的表”,Λ 是“每个模式对应频率的对角表”,$U^T$ 是“拆解回原先坐标”的逆操作。对谱聚类最关键的信息是:特征值 0 的个数,正好等于图中天然连通的块数。一张完全连成一片的图只有 1 个 0 特征值;若图分成两块互不相连的社区,就有 2 个 0 特征值。

谱揭示了图的“天然块数”,但真正把每个点划分到哪个社区,要看下一步:特征向量本身。

L=UΛUT=∑i=1nλiuiuiT\displaystyle L = U \Lambda U^T = \sum_{i=1}^{n} \lambda_i u_i u_i^T
特征分解把复杂的“电路总表”拆成一串独立的“固有频率”。零频率的个数揭示了小区里天然分成了几个互不相通的区域。
  1. 正交模式表U 的每一列是一个特征向量,列与列互相正交,长度都为 1,构成了一组描述图的“基模式”。
    U=[u1,u2,…,un],UTU=I\displaystyle U = [u_1, u_2, \dots, u_n], \quad U^T U = I
  2. 频率对角表Λ 的对角线上放着从小到大排列的特征值,非对角线全是 0,直接读出每个模式的“频率”。
    Λ=diag(λ1,λ2,…,λn)\displaystyle \Lambda = \text{diag}(\lambda_1, \lambda_2, \dots, \lambda_n)
  3. 外积展开矩阵乘法可以写成 n 个“模式外积”的加权和,每一项都是特征值乘特征向量自己和自己转置的积。
    L=∑i=1nλiuiuiT\displaystyle L = \sum_{i=1}^{n} \lambda_i u_i u_i^T

特征向量与分割:最平滑的明暗地图

现在,我们回到路灯明灭实验。物业经理想要一种“明暗模式”,让每根电线两端的亮度差尽量小。最没信息量的模式是所有灯一样亮——这就是全 1 向量,对应特征值 0。去掉这个“全亮”的平凡解后,下一个最平滑的模式就是次小特征向量(第二小特征值对应的特征向量)。

数学上,最小的那个非零“能量/能量”比值由瑞利商刻画:在跟全 1 向量正交的所有向量里,谁让 $f^T L f / f^T f$ 最小,谁就是第二小特征向量。这个向量里的每个分量,可以看作每盏灯在“从左边社区到右边社区”这条主路上的“水平坐标”。符号为正的灯大概在社区的一侧,为负的在另一侧——于是,一个向量就把图切成了两半。想切更多块,就再取第二三四个特征向量,把它们拼成一张低维“地图”,每个数据点在这张地图上有了新坐标,最后用 KMeans 就能轻松圈出社区。

有了最平滑的明暗地图,最后一个小问题:要拿几盏灯的分组信号当坐标?答案藏在特征值谱的“悬崖”上。

λ2=min⁡f⊥1,f≠0fTLffTf\displaystyle \lambda_2 = \min_{f \perp \mathbf{1}, f \neq 0} \frac{f^T L f}{f^T f}
瑞利商是“能量与能量的比值”:分子惩罚相邻灯亮度差大,分母防止向量无限变大。最小化它,就找到了最平滑、最有分割信息的那张明暗地图。
  1. 正交约束要求 f 与全 1 向量 $\mathbf{1}$ 正交,这一步去掉“所有灯一样亮”的平凡解,逼我们去找真正有分割信息的模式。
    f⊥1\displaystyle f \perp \mathbf{1}
  2. 能量比值分子是相邻亮度差的加权平方和(差异惩罚),分母是总能量(防止 f 无限增大),比值越小模式越平滑。
    fTLffTf\displaystyle \frac{f^T L f}{f^T f}
  3. 谱定理结论对拉普拉斯矩阵,这个最小化问题的最优值恰好等于第二小特征值 λ₂,对应的最优向量就是第二小特征向量。
    λ2=min⁡f⊥1,f≠0fTLffTf\displaystyle \lambda_2 = \min_{f \perp \mathbf{1}, f \neq 0} \frac{f^T L f}{f^T f}

特征向量个数:看谱悬崖选数字

小区分成几个社区,有时候一眼看不出。但把特征值从小到大排成一条“山脉”,你会发现一个神奇现象:前几个特征值平缓低矮,某个位置之后突然拔高,形成一道“悬崖”。这道悬崖的位置,就是谱间隙——相邻两个特征值之差最大处。悬崖之前的特征值个数,就是要选的特征向量个数 k。

直觉上讲,前 k 个“低频率模式”对应的是图里大尺度的结构分块,而高频率模式对应的是小区内部的细枝末节。挑 k 就是问:“图的大尺度结构里,有几条明显的分界线?” 用公式说,就是在所有相邻特征值间隙里找最大值。

选好了特征向量的个数 k,谱聚类的最后一步就水到渠成了——把前面所有零件拼成一台完整的机器。

k=arg⁡max⁡i(λi+1−λi)\displaystyle k = \arg\max_{i} (\lambda_{i+1} - \lambda_i)
谱间隙法像站在山脊上找悬崖:平缓的低频段代表“社区之间的差异”,陡峭的跳变处就是社区数目。工业实践中也常用目视特征值曲线拐点来定 k。
  1. 相邻做差把特征值从小到大排好后,逐个计算后一个减前一个的差值,差越大说明“两块结构”分得越开。
    Δi=λi+1−λi\displaystyle \Delta_i = \lambda_{i+1} - \lambda_i
  2. 取最大值位置找到所有 $\Delta_i$ 里最大的那个 i,这个 i 就是自然的聚类个数。
    k=arg⁡max⁡i(λi+1−λi)\displaystyle k = \arg\max_{i} (\lambda_{i+1} - \lambda_i)

谱聚类流程:从电路图到社区分组

现在把整个“夜间巡逻”流程串起来。谱聚类算法由四个动作组成,每一步都对应我们前面的准备:

1. 构建相似图:算出所有点的高斯相似度,用 K 近邻或 ε-邻域整理成邻接矩阵 W——这是给路灯接线的施工图。

2. 计算拉普拉斯矩阵:根据 W 算出度矩阵 D,再算归一化拉普拉斯矩阵——这是电路的导电总表。

3. 取前 k 个特征向量:对拉普拉斯矩阵做特征分解,取前 k 个(对应最小 k 个特征值)特征向量拼成矩阵 Z,每行是一个点的“新坐标”——这是把每盏灯在明暗地图上的坐标抄下来。

4. KMeans 聚类标注:把 Z 的每一行当作一个数据点,用 KMeans 聚成 k 组,得到最终标签——这是按地图坐标把小区圈成 k 个社区。

这套流程的精妙在于:原始数据可能形状复杂(比如两个交错的月牙),KMeans 直接上手根本分不开;但经过拉普拉斯特征向量这张“地图”的重新投影,原本缠绕的数据被拉成了紧致的小簇,KMeans 一下就能切开。这也是谱聚类被称为“聚类算法之王”的原因。

AI 应用场景

社交网络社区发现

阶段:图建模与无监督聚类

解决的问题:社交平台想给用户分组,但用户关系是复杂的网络,传统 KMeans 只能处理向量形式的数据,无法利用“谁和谁是好友”这种关系信息。谱聚类把用户当作节点、好友关系当作边,用拉普拉斯特征向量把用户映射到低维空间,自然分出兴趣社区。

具体案例:某内容平台对 1000 万用户的好友关系构图,用归一化拉普拉斯做谱聚类,把用户分成游戏、母婴、科技等兴趣社群,再为每个社群定制推荐策略,点击率提升 18%。

图像分割:把照片切出前后景

阶段:特征提取与分割

解决的问题:图像分割要把像素归属到不同物体。传统阈值法处理不了纹理复杂、前景背景交错的照片。谱聚类把每个超级像素当作路灯,颜色纹理相似度当作电线,拉普拉斯特征向量就画出了物体与背景的分界线。

具体案例:在自动驾驶语义分割中,算法先对一帧街景图生成约 2000 个超级像素,用谱聚类快速分成道路、车辆、天空等大块区域,再送入精细分类网络,既省算力又提升分割一致性。

非凸形状的用户分群

阶段:用户画像与精细化运营

解决的问题:用户购买行为常呈现环形、月牙形等非凸分布,KMeans 直接聚类会把同一群人拦腰切开。谱聚类先建“行为相似图”再投影,能把环形分布上的用户完整分成内外两圈,分群更符合真实业务。

具体案例:某电商平台分析用户“浏览时段 x 客单价”二维分布,发现存在环状偏好带。用谱聚类把环带内侧的“夜猫子精打细算族”和外侧“品质型用户”区分开,运营活动转化率提升 12%。

Python 演示

python35 行
import numpy as npfrom sklearn.cluster import KMeansfrom sklearn.datasets import make_moons  def gaussian_similarity(X, sigma=0.5):    sq = np.sum(X ** 2, axis=1, keepdims=True)    d2 = sq + sq.T - 2 * np.dot(X, X.T)    return np.exp(-d2 / (2 * sigma ** 2))  def knn_graph(W, k=4):    A = np.zeros_like(W)    for i in range(W.shape[0]):        idx = np.argsort(W[i])[-k:]        A[i, idx] = W[i, idx]    return (A + A.T) / 2  def spectral_cluster(X, k=2, sigma=0.5, knn=4):    W = gaussian_similarity(X, sigma)    A = knn_graph(W, knn)    D = np.diag(A.sum(axis=1))    L = D - A    d_inv_sqrt = np.diag(1.0 / np.sqrt(np.maximum(A.sum(axis=1), 1e-10)))    L_sym = np.eye(X.shape[0]) - d_inv_sqrt @ A @ d_inv_sqrt    eigvals, eigvecs = np.linalg.eigh(L_sym)    Z = eigvecs[:, :k]    return KMeans(n_clusters=k, n_init=10).fit_predict(Z)  if __name__ == "__main__":    X, y = make_moons(n_samples=200, noise=0.05, random_state=42)    pred = spectral_cluster(X, k=2)    print("聚类完成,前10个标签:", pred[:10])
目的:用 NumPy 手写完整谱聚类流程——高斯相似度、K 近邻图、度矩阵、对称归一化拉普拉斯、特征分解、KMeans 收尾,并在“两个月牙”这类非线性数据上跑通。
  1. sq = np.sum(X ** 2, axis=1, keepdims=True)先算每个点的模长平方,为下一步距离矩阵铺路。
  2. d2 = sq + sq.T - 2 * np.dot(X, X.T)用平方展开式一次性算出所有点对距离,避免笨重的双重循环。
  3. idx = np.argsort(W[i])[-k:]对第 i 行按相似度排序,取最大的 k 个索引作为“最近邻居”。
  4. A = (A + A.T) / 2把 K 近邻图强制对称化,保证“你连我、我也连你”,避免有向边破坏矩阵性质。
  5. L = D - A构造非归一化拉普拉斯矩阵,这是“导电总表”的起点。
  6. d_inv_sqrt @ A @ d_inv_sqrt左乘右乘 $D^{-1/2}$,实现对称归一化,压制高度数节点的主导地位。
  7. eigvals, eigvecs = np.linalg.eigh(L_sym)对称矩阵用 eigh 特征分解,输出从小到大排列的特征值。
  8. Z = eigvecs[:, :k]截取前 k 个特征向量作为每个样本的新坐标,这就把图“投影”到了低维空间。
  9. KMeans(n_clusters=k, n_init=10)最后用经典 KMeans 在新坐标上圈出社区。

常见误区

误区我一开始以为拉普拉斯矩阵就是负的邻接矩阵,反正对角线都是 0,两个矩阵长得挺像。

正解拉普拉斯矩阵 L = D − W,对角线是度而不是 0。正因为它把度放在对角线上,才能保证每一行元素之和为 0、半正定、零特征值对应连通分量。没有这个对角线修正,它就失去了“能量计”的作用,就像电路总表不记每盏灯自己的接线量,根本测不出明暗差异。

为何常见:非对角线的确全是负相似度,和邻接矩阵的符号正好相反,初学者盯着非对角线看,就容易忽略对角线上的度的关键作用。

误区既然 L = D − W 已经能聚类,归一化版本只是数值上好看,用不用都行。

正解归一化不仅是数值稳定,更改变了聚类的倾向性。非归一化拉普拉斯对度数不均匀的图敏感,容易把“枢纽大点”单独切成孤簇;归一化版把每个节点的度拉平,对度分布极端的小区更鲁棒。在真实社交网络这类“度数严重不均匀”的图上,两者结果差异显著。工业界默认用归一化版本。

为何常见:教材常常先讲非归一化版本,公式简单、性质直观,读者先入为主,把它当成“主场选手”。

误区谱聚类要取特征向量,那就取特征值最大的几个向量,和 PCA 选主成分的思路一样。

正解谱聚类恰恰相反——取的是最小的 k 个特征值对应的特征向量。最小特征值(接近 0)对应图的“低频率大结构”,最大特征值对应的是高频抖动细节。选最大特征向量等于去抓小区里最细碎的噪声明灭,聚类结果自然一塌糊涂。

为何常见:PCA 里“取最大特征值”的经验太深入人心,换到谱聚类的图谱视角,方向反了而不自知。

误区拿到第二小特征向量后,把大于 0 的当一类、小于 0 的当另一类就行,不需要再跑 KMeans。

正解只有切两簇且图结构非常干净时,“符号判组”才近似成立。一般要取 k 个特征向量拼成矩阵 Z,每一行是样本的低维坐标,再交给 KMeans。原因是最平滑的模式往往不止一维,多取几个向量才能完整描述多分块结构;而且特征向量分量的数值是连续的,不是硬 0/1 标签,直接符号截断会丢掉大量信息。

为何常见:可视化案例常展示“单个特征向量符号分成两色”的漂亮图,让人误以为这就是完整算法,忘了 KMeans 才是真正的收尾动作。

面试题

Q1. 拉普拉斯矩阵 L = D − W 中的矩阵 D 是什么?

单选题 · easy

  • A.度矩阵,对角线存储度信息求和← 正确答案
  • B.邻接矩阵,对角线存储相似度信息
  • C.协方差矩阵,对角线存储数据方差
  • D.拉普拉斯矩阵,对角线存特征值

答案:A。D 是度矩阵,它的对角线上放着每个节点的度(即邻接矩阵该行元素之和),非对角线全是 0。它像路灯接线登记册,只记录每盏灯自己的接线总量。B、C、D 分别把 D 误认成邻接、协方差或拉普拉斯矩阵,混淆了这三张表的分工。

Q2. 对于一个连通图,拉普拉斯矩阵最小的特征值等于多少?

单选题 · easy

  • A.1,全 1 常数向量对应
  • B.0,全 1 常数向量对应← 正确答案
  • C.0,完全随机向量对应
  • D.边数,最大度节点对应

答案:B。因为 L 每一行之和为 0,所以 L 乘以全 1 向量等于 0,即全 1 向量是特征值 0 的特征向量。连通图只有一个连通块,零特征值重数为 1。A、D 数值错误,C 的随机向量不是零特征向量。

Q3. fᵀLf 的几何含义是什么?

单选题 · mid

  • A.每盏灯亮度与邻居差异的平方和← 正确答案
  • B.所有点对之间距离的平方总和
  • C.邻接矩阵所有非零元素之和
  • D.度矩阵所有对角元素之和

答案:A。二次型展开后等于 1/2 乘所有边上(fᵢ−fⱼ)² 的加权和。就像物业经理看每根电线两端亮度差,再按电线粗细加权。B 说的是所有节点两两距离,C、D 只是矩阵元素求和,都不是“相邻差异”的度量。

Q4. 对称归一化拉普拉斯矩阵的正确表达式是?

单选题 · mid

  • A.I − D^(−1/2) W D^(−1/2)← 正确答案
  • B.I − D^(−1) W,即随机游走版本
  • C.D − W,即非归一的拉普拉斯
  • D.D^(1/2) L D^(1/2),对称半正定

答案:A。对称归一化在普通拉普拉斯左右各乘 D^(−1/2),等价于 I − D^(−1/2) W D^(−1/2)。B 是随机游走归一化,C 是非归一化版本,D 的乘方符号方向反了。三者都是谱聚类常用变体,但只有 A 是题目所问的对称形式。

Q5. 用谱间隙选择特征向量个数 k 的经典启发式是什么?

单选题 · mid

  • A.找特征值谱中最大的相邻间隙← 正确答案
  • B.找邻接矩阵非零元素的个数
  • C.找度矩阵最大对角元素的值
  • D.找数据点总数量的一半

答案:A。把特征值从小到大排列后,相邻特征值之差最大的那个位置,就是“大结构”和“细碎噪声”的分界线,该位置之前的特征值个数即 k。B、C 看的是图的局部信息,D 纯属拍脑袋,都无法反映图的天然分块数。

Q6. 第二小特征向量能提示分割方向,其根本原因是什么?

单选题 · mid

  • A.它使相邻节点的差异平方和最小← 正确答案
  • B.它使互不相邻节点差异最大化
  • C.它等于节点特征的平均值
  • D.它在所有向量里模长最大

答案:A。谱聚类是在瑞利商约束下最小化 fᵀLf,即最小化相邻节点亮度差的加权平方和。第二小特征向量是去掉全 1 平凡解后最平滑的模式,因此天然把图沿“最弱联系”劈开。B、C、D 与拉普拉斯优化的目标无关。

Q7. 关于拉普拉斯矩阵的性质,以下哪些说法正确?

多选题 · hard

  • A.每一行的行和总是等于 0← 正确答案
  • B.是半正定矩阵且特征值非负← 正确答案
  • C.全 1 向量对应零特征值← 正确答案
  • D.所有特征值都严格大于 1

答案:ABC。L = D − W,每行之和为度减邻居权重和等于 0;对任意 f,fᵀLf 是相邻差的平方加权和≥0,故半正定;全 1 向量乘以 L 得 0,是零特征向量。D 错误,因为零特征值必然存在,不可能全部大于 1。

Q8. 谱聚类算法的完整流程包含哪些步骤?

多选题 · mid

  • A.构建相似度图并写出邻接矩阵← 正确答案
  • B.计算拉普拉斯矩阵并特征分解← 正确答案
  • C.取前 k 个特征向量组织新坐标← 正确答案
  • D.用经典 KMeans 完成聚类分组← 正确答案

答案:ABCD。标准谱聚类恰好四步:先建相似图得到 W,再算拉普拉斯并做特征分解,然后取最小 k 个特征向量拼成新坐标矩阵,最后对坐标跑 KMeans。四步缺一不可,A、B、C、D 分别对应“接线图、导电总表、明暗地图、圈社区”四个动作。

Q9. 为什么谱聚类最后把特征向量作为 KMeans 的输入?

单选题 · easy

  • A.嵌入低维空间后簇形更凸← 正确答案
  • B.数据维度更高更易划分
  • C.特征向量是原始数据单位
  • D.特征向量直接给出标签

答案:A。原始数据可能是缠绕的月牙形、环形等非凸分布,KMeans 直接聚类效果差。拉普拉斯特征向量把每个点重投影到“平滑模式”构成的新坐标系中,原本缠绕的结构被拉成紧致凸簇,KMeans 才好下手。B 方向相反,C、D 描述不符。

Q10. 以下哪些是构建谱聚类邻接矩阵的常见方式?

多选题 · hard

  • A.ε−邻域内就近连边← 正确答案
  • B.K 近邻法保证对称← 正确答案
  • C.全连接高斯核加权← 正确答案
  • D.最小生成树去冗余

答案:ABC。谱聚类的标准建图方式是 ε-邻域图、K 近邻图、全连接高斯核图,它们都是为了表达“局部相似关系”。D 的最小生成树属于图论中的稀疏化工具,并非谱聚类常见的邻接矩阵构建方式,用它替换会改变拉普拉斯矩阵的语义。