图网络机器学习 | 社区发现 — 谱聚类算法

Posted Follow Me Juuump

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图网络机器学习 | 社区发现 — 谱聚类算法相关的知识,希望对你有一定的参考价值。

斯坦福大学-图机器学习-CS224W-笔记



上条推送介绍了社区的概念,社区是一个节点集合,集合中的节点有许多的内部连接,不同社区的节点之间有较少的外部连接。社区发现指在图数据集中,自动地找到与真实社区相近的网络社区。Louvain算法是其中一个有效的社区发现算法,社区隶属关系图模型解决了社区重叠的问题。


本文介绍 谱聚类算法


谱聚类算法(Spectral Clustering Algorithm)以邻接矩阵的方式表示图网络,通过研究矩阵的特征值和特征向量来解决图的聚类问题(社区发现问题)。谱聚类算法分为三个步骤:(1)构造图的矩阵表示;(2)计算矩阵的特征值和特征向量。基于特征向量,将每个节点嵌入到低维空间上;(3)根据上一步的节点表示,将每个节点归为一个或多个社区。

*本文需要一定线性代数的背景知识,一些结论可以通过严格的数学推导证明,在介绍中以红色字体标注并略去详细介绍。


对于无向图来说,二分类任务将图的节点划分为两个不相交的集合。随之带来的问题是:(1)如何评价一种划分方案的好坏程度?(2)如何高效地划分图?对于第一个问题,衡量划分好坏的基本想法是:最大化每个社区内的边数,最小化不同社区之间的边数。该想法与社区的定义相符。


图网络机器学习 | 社区发现 — 谱聚类算法


图割(Graph Cut)被定义为连接不同社区的边的数量,如上图所示,社区 A 和 B 的图割值等于2,若边有权重,则图割的值定义为边的权重和。


如果图划分的评价标准仅定义为:最小化社区之间的图割值,会导致社区之间只有一条边相连为最优解,如下图红色虚线所示,忽略了社区内部的连接情况,显然蓝色虚线的划分在直观上也更为合理。


图网络机器学习 | 社区发现 — 谱聚类算法


1997年 Shi & Malik 提出了通过图的传导(Conductance)来评价图的划分情况。公式中分母表示社区内部的节点度数之和的较小值,对于二分类任务来说,直觉上,不同社区的度数之和存在互补性,所以取较小值进行计算。这是一个平衡了社区内和社区之间的评价标准,但是找到图的最优划分方案依然是一个 NP 难的问题。


图网络机器学习 | 社区发现 — 谱聚类算法


谱聚类算法是近似地优化图的传导的聚类算法。在图的邻接矩阵中,1 表示节点之间有边相连,0 表示节点之间无边相连,记作 A(无向图的邻接矩阵是对称矩阵)。对于有 n 个节点的无向图,有一个 n 维向量(x_{1}, x_{2}, x_{3}, …, x_{n})记作 X,此向量的每一个维度视为相对应节点的标签值。若存在 A•X=Y,那么对于某一个节点来说,其 Y 值的意义是它的每个邻居节点的标签值的和。


图网络机器学习 | 社区发现 — 谱聚类算法


已知:矩阵的特征值和特征向量有公式:A•X=λ•X,A 为邻接矩阵,X 为特征向量,λ 为特征值,其含义是:对于图的所有节点来说,对节点的邻居的标签值求和,其值为自身标签的倍数(同比例缩放)。矩阵的(spectrum)定义为矩阵的特征值和特征向量,对于 n 维矩阵,有 n 对特征值和特征向量,按照他们的特征值从小到大排列,记作 {λ_{1}, λ_{2}, …, λ_{n}},且矩阵的特征向量之间互相垂直。


图网络机器学习 | 社区发现 — 谱聚类算法


通过部分实例来体会邻接矩阵的特征值和特征向量。


d-正规图(d-regular Graph)定义为在连通图 G 中,所有节点的度数均为d。那么显然可以想到的是 X =(1, 1, …, 1)和 λ = d 是一对特征对,且 d是 d-正规图的最大特征值。当 G 是不连通的两个部分,如下图所示,每个部分为 d-正规图时,特征向量是什么呢?集合 C 中所有节点的标签值为 1,B 中的为 0,或者两者的 0 和 1 的值互相替换,可以得出两对特征对,它们的特征值均为 d。


图网络机器学习 | 社区发现 — 谱聚类算法


图网络机器学习 | 社区发现 — 谱聚类算法


从直觉上来说,最大的 λ 对应的特征向量有几个,意味着图的连通部分有几个。如下图所示,λ_{n} = λ_{n-1}


图网络机器学习 | 社区发现 — 谱聚类算法


若 C 和 B 仅有几条边相连,是几乎要不连通的,那么 λ_{n} 和 λ_{n-1} 是几乎相等的,其差值趋近于 0。


图网络机器学习 | 社区发现 — 谱聚类算法


由于所有的特征向量之间是互相垂直的(垂直即向量点乘为 0),已知(1, 1, …, 1)为其中一个特征向量,那么其余特征向量与它的点乘为 0 意味着其余特征向量的各个维度的和为 0,也就是说部分维度上的值大于 0,部分维度上的值小于 0(按照正负值将各维度分为两类,是否联想到可以根据第二大特征值的各维度的正负情况,将节点分为两类,即两个社区呢?)


图网络机器学习 | 社区发现 — 谱聚类算法

图的邻接矩阵


图的矩阵表示,除了邻接矩阵以外还有度矩阵(Degree Matrix),度矩阵是对角矩阵(Diagonal Matrix,记作 D),对角线上的值为节点的度数。


图网络机器学习 | 社区发现 — 谱聚类算法


度矩阵与邻接矩阵的差为拉普拉斯矩阵(Laplacian Matrix,记作 L),L = D – A,对于图的拉普拉斯矩阵来说,最容易想到的特征对为:X =(1, 1, …, 1)和 λ = 0,因为矩阵的每一行的和为0。拉普拉斯矩阵的重要性质有:特征值为非负实数;特征向量是互相垂直的实数;是正半正定矩阵(Positive Semi-definite Matrix)


图网络机器学习 | 社区发现 — 谱聚类算法


另一个可以证明的结论是:对于对称矩阵 M,λ_{2} 是以下公式最小优化的解,λ_{2} 是矩阵 M 第二小的特征值。


图网络机器学习 | 社区发现 — 谱聚类算法


当矩阵 M 是图 G 的拉普拉斯矩阵 L 时,图 G 的 x^{T}•L•x 意味着什么呢?将表达式展开后化简可知:


图网络机器学习 | 社区发现 — 谱聚类算法


计算解释:(1)式根据对称的拉普拉斯矩阵 L 的定义展开;(2)式中 D 为对角矩阵,其余位置为 0 不参与计算,图中每条边的两个端点各计算了一次,产生了系数 2;(3)式中节点 i 有度数 d_{i},x_{i} 的平方需要被相加 d_{i} 次,即:每条边的 2 个端点各被计算一次,展开后通过平方和公式化简。


图 G 的 x^{T}•L•x 意味着图的所有邻居节点的标签值的差的平方和。关于 x 我们还知道:(1)x 是单位向量,即:各维度的元素和为 1(欧氏距离为 1);(2)x 与(1, 1, …, 1)垂直,即:各个维度的元素和为 0(部分值大于 0,部分值小于 0)。由性质(1)可知最小化公式中的分母为1,仅需对分子 x^{T}•L•x 最小化。


化简后对于 (x_{i} - x_{j})^2 来说,若两个节点的标签值在 0 的同侧(即:同时大于 0 或同时小于 0),那么此值偏小;当且仅当两个节点的标签值在 0 的异侧时,此值偏大。为了实现最小化,我们希望有较少的边跨越 0 坐标。这与社区划分的定义类似,所以我们可以通过对称矩阵 L 的第二小的特征值来辅助社区划分。


图网络机器学习 | 社区发现 — 谱聚类算法


回到寻找最优划分解的问题,1973年 Fiedler 提出将二划分的集合 A 和 B 的元素标签限制在 1 和 -1,且限制 2 个集合的元素个数相同(等价于与向量(1, 1, …, 1)垂直)。

图网络机器学习 | 社区发现 — 谱聚类算法

这相当于最小化公式:


图网络机器学习 | 社区发现 — 谱聚类算法


由于无法在求解的过程中严格满足上述条件,所以想到对元素的标签做松弛,允许它们取任意实数。

图网络机器学习 | 社区发现 — 谱聚类算法

瑞利原理(Rayleigh Theorem)提出最小化 Fiedler 提及的公式,就是求解拉普拉斯矩阵 L 的第二小的特征值 λ_{2} 所对应的特征向量 x,可以通过 x 各维度的值的正负符号来决定相应节点所属的社区。值得注意的是 λ_{2} 并非是准确的最优解,可以证明的是 λ_{2} 小于等于两倍的最优传导



图网络机器学习 | 社区发现 — 谱聚类算法


至此,我们提出了如何评价图划分的质量好坏;提出了利用图的拉普拉斯矩阵的特征值和特征向量来近似地逼近最优划分。按照谱聚类的三个步骤回顾此算法。


(1)预处理:构建图的拉普拉斯矩阵


图网络机器学习 | 社区发现 — 谱聚类算法


(2)矩阵分解:计算矩阵的特征值和特征向量,将节点嵌入到第二小的特征值对应的特征向量中


图网络机器学习 | 社区发现 — 谱聚类算法


(3)分组:对嵌入后的一维向量进行排序,将排序后的向量划分为两个部分(两个簇)如何选择划分点?最基本的思路是根据 0 坐标或中间值划分


图网络机器学习 | 社区发现 — 谱聚类算法


图网络机器学习 | 社区发现 — 谱聚类算法


以上讲述的是通过谱聚类进行二分类,如何实现 K 分类呢?


2个基本的方法:

1. 以分层划分的方式递归地调用二分类算法,缺点是效率低,不稳定。

2. 采用多个特征向量的谱聚类:根据多个特征向量,将节点嵌入到低维空间中,每个节点通过 K 维数据表示,之后通过 K-means 算法进行聚类。值得注意的是,此处的 K 未必是社区的数量,通常也不需要取很大的值,按照 λ 的值(排除最小的 λ)从小到大依次取。多个特征向量已被证明能够近似地逼近最优划分。


通过不同的特征向量,直观地观察图的划分结果:


图网络机器学习 | 社区发现 — 谱聚类算法

以 λ_{2} 对应的特征向量为节点表示进行二分类


图网络机器学习 | 社区发现 — 谱聚类算法

以 λ_{2} 对应的特征向量为节点表示进行二分类

能否发现潜在的四分类?


图网络机器学习 | 社区发现 — 谱聚类算法

λ_{1} 对应的特征向量无法进行分类

λ_{3} 对应的特征向量是否能实现四分类呢?


本文的最后一个问题是

如何选择社区的数量 K?


将特征值从大到小排序后,两个连续的特征值之间的差被称为特征差距(Eigengap)。通常来说,大多数稳定的类的数量是通过选取最大化特征差距的 K 产生的。


图网络机器学习 | 社区发现 — 谱聚类算法





图网络机器学习 | 社区发现 — 谱聚类算法




往期回顾:


  1.  

    ▶ 度分布

    ▶ 路径长度

    ▶ 聚类系数

    ▶ 连通部分

  2. ▶ 随机图模型

    ▶ 小世界模型

    ▶ Kronecker 图模型

  3. ▶ 子图

    ▶ 模块

    ▶ 图元

    ▶ 角色

  4. ▶ 社区

    ▶ 社区发现算法

    ▶ 重叠社区发现



以上是关于图网络机器学习 | 社区发现 — 谱聚类算法的主要内容,如果未能解决你的问题,请参考以下文章

机器学习之聚类算法(k-meansCanopy层次聚类谱聚类)

机器学习笔记之谱聚类k-Means聚类算法介绍

机器学习笔记之谱聚类k-Means聚类算法介绍

机器学习--谱聚类从初始到应用

谱聚类

SIGAI机器学习第二十五集 聚类算法2