GMC: Graph-based Multi-view Clustering
文章连接地址:https://doi.org/10.1109/TKDE.2019.2903810
一、文章介绍
GMC 模型是一个多视图学习,侧重于无监督的多视图聚类。
多视图(Multi-view):多个视图来描述同一个对象或者系统,每个视图都是一个学习任务,但每个视图之间的侧重点是不一样,假设现有一个新闻数据,我们可以用多个视图(eg:文字、图片)来描述同一个新闻,它们可以单独地表述,也可以聚合起来一起描述药物信息。单视图数据一般用一个矩阵表示,而多视图就相当于有 m m m 个矩阵。
多视图学习是聚合多个矩阵来训练模型以得到预测结果。通常的多视图图的聚类方法,首先在所有输入图(视图)上找到一个融合图,然后在这个融合图上使用一个额外的聚类算法来产生最终的聚类。
但是在 GMC 模型中,首先为每个视图构建一个 SIG(similarity-induced graph) 矩阵,就会产生 m m m 个 SIG 矩阵 { S 1 , . . . , S m } \{\mathbf{S}^1, ..., \mathbf{S}^m\} {S1,...,Sm};然后将这些 SIG 矩阵融合在一起,学习得到 a unified matrix U \mathbf{U} U,在 U \mathbf{U} U 的学习过程中会自动计算每个视图的权重;最后,对最终学习到 U \mathbf{U} U 的拉普拉斯矩阵添加一个 rank constraint(秩约束),即意味着约束了 U \mathbf{U} U 的连通数量,以确保 U \mathbf{U} U 中的连通数量等于所需的聚类数目 c c c。
二、GMC 模型的构建
SIG 矩阵的构建
对于有
m
m
m 个视图的多视图数据集:
X
1
\mathbf{X}^1
X1,
X
2
\mathbf{X}^2
X2, …,
X
m
\mathbf{X}^m
Xm ,且第
v
v
v 个视图矩阵为
X
v
=
{
x
1
v
,
x
2
v
,
.
.
.
,
x
n
v
}
∈
R
d
v
×
n
\mathbf{X}^v = \{\mathbf{x}_1^v, \mathbf{x}_2^v, ..., \mathbf{x}_n^v\} \in \mathbb{R}^{d_v \times n}
Xv={x1v,x2v,...,xnv}∈Rdv×n。
X
v
\mathbf{X}^v
Xv 的一列表示一个数据点,因此一共有
n
n
n 个样本点,其中
x
i
v
\mathbf{x}_i^v
xiv 表示为
X
v
\mathbf{X}^v
Xv 的第
i
i
i 列向量且有
d
v
d_v
dv 个维度。
相似度计算可以将原始的数据转为点与点之间的关系(距离)。这种关系可以表示为一个关系矩阵,其中矩阵的每个元素表示两个数据点之间的相似度或者关系程度;两个数据点之间的距离越小,对应的相似度值就越大,两个数据点之间的距离越大,对应的相似度值就越小(或为零)。
如果 S i j v \mathbf{S}^v_{ij} Sijv 表示数据点 i i i 和数据点 j j j 之间的相似度,那么当 S i j v \mathbf{S}^v_{ij} Sijv 的值较大时,可以认为数据点 i i i 和数据点 j j j 在图中是相连的;而当 S i j v \mathbf{S}^v_{ij} Sijv 的值较小或者为零时,则表示数据点 i i i 和数据点 j j j 在图中是没有连接的。
为此,我们使用一种稀疏表示 (sparse representation) 方法来构造 SIG 矩阵
S
v
∈
R
n
×
n
\mathbf{S}^v \in \mathbb{R}^{n \times n}
Sv∈Rn×n。在数学上,我们对这个问题的建模如下:
min
{
S
v
}
∑
v
=
1
m
∑
i
,
j
=
1
n
∥
x
i
v
−
x
j
v
∥
2
2
s
i
j
v
+
β
∑
v
=
1
m
∑
i
n
∥
s
i
v
∥
2
2
s
.
t
.
∀
v
,
s
i
i
v
=
0
,
s
i
j
v
≥
0
,
1
T
s
i
v
=
1.
(1)
\mathop{\min}_{\{ \mathbf{S}^v \}} \sum_{v=1}^{m} \sum_{i,j=1}^{n} \parallel \mathbf{x}_i^v - \mathbf{x}_j^v \parallel^2_2 s^v_{ij} + \beta \sum_{v=1}^{m} \sum_{i}^{n} \parallel \mathbf{s}_i^v \parallel^2_2 \\ s.t. \forall v, s_{ii}^v = 0, s_{ij}^v \geq 0, \mathbf{1}^T \mathbf{s}_i^v = 1. \tag{1}
min{Sv}v=1∑mi,j=1∑n∥xiv−xjv∥22sijv+βv=1∑mi∑n∥siv∥22s.t.∀v,siiv=0,sijv≥0,1Tsiv=1.(1)
其中,
∥
⋅
∥
2
2
\parallel \cdot \parallel^2_2
∥⋅∥22 是二范数,
s
i
v
\mathbf{s}_i^v
siv 是
S
v
\mathbf{S}^v
Sv 的第
i
i
i 个向量,且此时一行向量表示一个数据,
{
S
v
}
\{ \mathbf{S}^v \}
{Sv} 为
S
1
\mathbf{S}^1
S1, …,
S
m
\mathbf{S}^m
Sm。每个视图的 SIG 矩阵之间是独立的。
矩阵 U \mathbf{U} U 的构建
通过融合和学习 SIG 矩阵 {
S
1
\mathbf{S}^1
S1, …,
S
m
\mathbf{S}^m
Sm } ,得到
U
∈
R
n
×
n
\mathbf{U} \in \mathbb{R}^{n \times n}
U∈Rn×n 矩阵:
min
U
∑
v
=
1
m
w
v
∥
U
−
S
v
∥
F
2
s
.
t
.
∀
i
,
u
i
j
≥
0
,
1
T
u
i
=
1.
(2)
\mathop{\min}_{\mathbf{U}} \sum_{v=1}^{m} w_v \parallel \mathbf{U} - \mathbf{S}^v \parallel^2_F \\ s.t. \forall i, u_{ij} \geq 0, \mathbf{1}^T \mathbf{u}_i=1. \tag{2}
minUv=1∑mwv∥U−Sv∥F2s.t.∀i,uij≥0,1Tui=1.(2)
其中,
∥
⋅
∥
F
2
\parallel \cdot \parallel^2_F
∥⋅∥F2 是 Frobenius 范数,
u
i
∈
R
n
×
1
\mathbf{u}_i \in \mathbb{R}^{n \times 1}
ui∈Rn×1 是
U
\mathbf{U}
U 的第
i
i
i 个向量,
u
i
j
u_{ij}
uij 是
u
i
\mathbf{u}_i
ui 的第
j
j
j 个元素(一行向量表示一个数据),
w
v
w_v
wv 是第
v
v
v 个 SIG 矩阵
S
v
\mathbf{S}^v
Sv 的权重,
w
=
{
w
1
,
w
2
,
.
.
.
,
w
m
}
\mathbf{w} = \{w_1, w_2, ..., w_m\}
w={w1,w2,...,wm} 。
在融合的过程中,注意条件 1 T u i = 1 \mathbf{1}^T \mathbf{u}_i = 1 1Tui=1 。
1 T u i = 1 \mathbf{1}^T \mathbf{u}_i=1 1Tui=1 表示了向量 u i \mathbf{u}_i ui 的所有元素之和等于 1。在概率分布中,确保概率值之和为 1。
根据文中描述,在对
U
\mathbf{U}
U 求解中将权重
w
v
w_v
wv 定义为:
w
v
=
1
2
∥
U
−
S
v
∥
F
2
(3)
w_v = \frac{1}{2\sqrt{\parallel \mathbf{U} - \mathbf{S}^v \parallel^2_F}} \tag{3}
wv=2∥U−Sv∥F21(3)
联合公式
(
1
)
(1)
(1),
(
2
)
(2)
(2) 和
(
3
)
(3)
(3),就可以将SIG 矩阵与统一图矩阵
U
\mathbf{U}
U 耦合起来,描述为:
min
{
S
v
}
,
U
∑
v
=
1
m
∑
i
,
j
=
1
n
∥
x
i
v
−
x
j
v
∥
2
2
s
i
j
v
+
β
∑
v
=
1
m
∑
i
n
∥
s
i
v
∥
2
2
+
∑
v
=
1
m
w
v
∥
U
−
S
v
∥
F
2
s
.
t
.
∀
v
,
s
i
i
v
=
0
,
s
i
j
v
≥
0
,
1
T
s
i
v
=
1
,
u
i
j
≥
0
,
1
T
u
i
=
1
(4)
\mathop{\min}_{\{ \mathbf{S}^v \}, \mathbf{U}} \sum_{v=1}^{m} \sum_{i,j=1}^{n} \parallel \mathbf{x}_i^v - \mathbf{x}_j^v \parallel^2_2 s^v_{ij} + \beta \sum_{v=1}^{m} \sum_{i}^{n} \parallel \mathbf{s}_i^v \parallel^2_2 \\ + \sum_{v=1}^{m} w_v \parallel \mathbf{U} - \mathbf{S}^v \parallel^2_F \\ s.t. \forall v, s_{ii}^v = 0, s_{ij}^v \geq 0, \mathbf{1}^T \mathbf{s}_i^v = 1, \\ u_{ij} \geq 0, \mathbf{1}^T \mathbf{u}_i=1 \tag{4}
min{Sv},Uv=1∑mi,j=1∑n∥xiv−xjv∥22sijv+βv=1∑mi∑n∥siv∥22+v=1∑mwv∥U−Sv∥F2s.t.∀v,siiv=0,sijv≥0,1Tsiv=1,uij≥0,1Tui=1(4)
添加约束拉普拉斯秩进行多视图聚类
为了可以直接从 U \mathbf{U} U 中得到簇类结果,需要在 U \mathbf{U} U 的图拉普拉斯矩阵 L U \mathbf{L}_U LU 上施加一个 秩约束 来限定 U \mathbf{U} U 的连通分量的个数。
定理2:拉普拉斯矩阵 L U \mathbf{L}_U LU 的特征值为 0 0 0 的重数 r r r 等于矩阵 U \mathbf{U} U 的图中连通分量的个数。
解释:拉普拉斯矩阵 L U \mathbf{L}_U LU 的特征值 0 0 0 的重数 r r r 表示图 U \mathbf{U} U 有 r r r 个连通分量,每个连通分量可以看作是一个独立的子图,其中的节点之间是相互连接的,而与其他连通分量的节点是没有连接的。
特征值的重数: 特征值的重数是指该特征值在特征多项式中出现的次数。
拉普拉斯矩阵至少有一个特征值为 0,零特征值的个数等于图的连通分量(Connected Components)的个数。
假设 ϑ i ( L U ) \vartheta_i(\mathbf{L}_U) ϑi(LU) 为 L U \mathbf{L}_U LU 中第 i i i 个最小的特征值,且需要 L U \mathbf{L}_U LU 是半正定矩阵,因为 ϑ i ( L U ) ≥ 0 \vartheta_i(\mathbf{L}_U) \ge 0 ϑi(LU)≥0 。
如果矩阵
L
U
\mathbf{L}_U
LU 有
c
c
c 个零特征值(
∑
i
=
1
c
ϑ
i
(
L
U
)
=
0
\sum_{i=1}^c \vartheta_i(\mathbf{L}_U) = 0
∑i=1cϑi(LU)=0),那么矩阵
L
U
\mathbf{L}_U
LU 就有
r
a
n
k
(
L
U
)
=
n
−
c
rank( \mathbf{L}_U ) = n − c
rank(LU)=n−c 。因此需要求解
L
U
\mathbf{L}_U
LU 的最小特征值:
∑
i
=
1
c
ϑ
i
(
L
U
)
=
min
F
∈
R
n
×
c
T
r
(
F
T
L
U
F
)
s
.
t
.
F
T
F
=
I
(5)
\sum_{i=1}^c \vartheta_i(\mathbf{L}_U) = \mathop{\min}_{\mathbf{F}\in \mathbb{R}^{n \times c}}Tr( \mathbf{F}^T \mathbf{L}_U \mathbf{F} ) \quad s.t. \mathbf{F}^T \mathbf{F} = \mathbf{I} \tag{5}
i=1∑cϑi(LU)=minF∈Rn×cTr(FTLUF)s.t.FTF=I(5)
其中,
F
=
{
f
1
,
.
.
.
,
f
c
}
\mathbf{F} = \{\mathbf{f}_1, ..., \mathbf{f}_c \}
F={f1,...,fc} 是一个嵌入矩阵,即为
L
U
\mathbf{L}_U
LU 的特征向量。
F T L U F \mathbf{F}^T \mathbf{L}_U \mathbf{F} FTLUF 表示拉普拉斯矩阵 L U \mathbf{L}_U LU 在其特征向量基底上的对角化形式,结果是一个对角矩阵,其对角元素为拉普拉斯矩阵的特征值。
T r ( F T L U F ) Tr( \mathbf{F}^T \mathbf{L}_U \mathbf{F} ) Tr(FTLUF) 求括号内矩阵的对角线上所有元素的和,即为求得拉普拉斯矩阵 L U \mathbf{L}_U LU 的所有特征值之和。
因此,我们在公式
(
4
)
(4)
(4) 中添加了一个秩约束
r
a
n
k
(
L
U
)
=
n
−
c
rank( \mathbf{L}_U ) = n − c
rank(LU)=n−c,通过上面的定理2,目标公式变为:
min
{
S
v
}
,
U
∑
v
=
1
m
∑
i
,
j
=
1
n
∥
x
i
v
−
x
j
v
∥
2
2
s
i
j
v
+
β
∑
v
=
1
m
∑
i
n
∥
s
i
v
∥
2
2
+
∑
v
=
1
m
w
v
∥
U
−
S
v
∥
F
2
+
2
λ
T
r
(
F
T
L
U
F
)
s
.
t
.
∀
v
,
s
i
i
v
=
0
,
s
i
j
v
≥
0
,
1
T
s
i
v
=
1
,
u
i
j
≥
0
,
1
T
u
i
=
1
,
F
T
F
=
I
(6)
\mathop{\min}_{\{ \mathbf{S}^v \}, \mathbf{U}} \sum_{v=1}^{m} \sum_{i,j=1}^{n} \parallel \mathbf{x}_i^v - \mathbf{x}_j^v \parallel^2_2 s^v_{ij} + \beta \sum_{v=1}^{m} \sum_{i}^{n} \parallel \mathbf{s}_i^v \parallel^2_2 \\ + \sum_{v=1}^{m} w_v \parallel \mathbf{U} - \mathbf{S}^v \parallel^2_F + 2 \lambda Tr( \mathbf{F}^T \mathbf{L}_U \mathbf{F} ) \\ s.t. \forall v, s_{ii}^v = 0, s_{ij}^v \geq 0, \mathbf{1}^T \mathbf{s}_i^v = 1, \\ u_{ij} \geq 0, \mathbf{1}^T \mathbf{u}_i=1, \mathbf{F}^T \mathbf{F} = \mathbf{I} \tag{6}
min{Sv},Uv=1∑mi,j=1∑n∥xiv−xjv∥22sijv+βv=1∑mi∑n∥siv∥22+v=1∑mwv∥U−Sv∥F2+2λTr(FTLUF)s.t.∀v,siiv=0,sijv≥0,1Tsiv=1,uij≥0,1Tui=1,FTF=I(6)
其中,
λ
\lambda
λ 是一个参数,且它的值由
c
c
c 个簇决定(In practice, we increase or decrease the value of
λ
\lambda
λ when the number of connected components is smaller or greater than
c
c
c. )。
三、OPTIMIZATION ALGORITHMS
1、初始化每个变量
- 初始化 SIG 矩阵
S
v
\mathbf{S}^v
Sv:每个维度为
d
v
×
n
d_{v} \times n
dv×n 的视图矩阵
X
v
\mathbf{X}^v
Xv 都会生成一个维度为
n
×
n
n \times n
n×n 的SIG 矩阵
S
v
\mathbf{S}^v
Sv,其中每一行表示一个数据点【可以根据
k
k
k 个邻居点进行构建 – 选取按从大到小排好序的一行的前 k+1 个元素】;
s i j = { b i , k + 1 − b i j k b i , k + 1 − ∑ h = 1 k b i h j ≤ k 0 j > k s_{ij} = \left\{ \begin{array}{ll} \frac{b_{i,k+1} - b_{ij}}{k b_{i, k+1} - \sum_{h=1}^k b_{ih}} &j \leq k \\ 0 & j > k \end{array} \right. sij={kbi,k+1−∑h=1kbihbi,k+1−bij0j≤kj>k
其中, b i j = ∥ x i v − x j v ∥ 2 2 b_{ij} = \|\mathbf{x}_i^v - \mathbf{x}_j^v \|_2^2 bij=∥xiv−xjv∥22, k k k 是邻居点的个数。 - 初始化 w v w_v wv:每个元素均为 1 m \frac{1}{m} m1,且维度为 m × 1 m \times 1 m×1 ;
- 初始化 U \mathbf{U} U:公式 ( 2 ) (2) (2),根据上一步得到 SIG 矩阵,生成一个 n × n n \times n n×n 的矩阵 U \mathbf{U} U,;
- 初始化 F \mathbf{F} F:公式 ( 5 ) (5) (5),先得到 U \mathbf{U} U 的拉普拉斯矩阵 L U ( n × n ) \mathbf{L}_U (n \times n) LU(n×n) ,再对这个 L U \mathbf{L}_U LU 进行 eig() 计算得到特征向量和特征值,其中维度为 n × c n \times c n×c 的特征向量就是 F \mathbf{F} F,而特征值的维度为 c × 1 c \times 1 c×1 。
[V, D] = eig(A):在 matlab 中这个函数求解方阵 A 的特征值和特征向量,返回得到的 V 是特征向量,而 D 是对角矩阵,对角元素为与特征向量所对应的特征值,且没有排序关系。
2、循环更新这些变量
- 固定
w
,
U
,
F
w,\mathbf{U},\mathbf{F}
w,U,F,逐个更新每个视图的相似度
S
v
\mathbf{S}^v
Sv,问题
(
6
)
(6)
(6) 变为:
min S v ∑ v = 1 m ∑ i , j = 1 n ∥ x i v − x j v ∥ 2 2 s i j v + β ∑ v = 1 m ∑ i n ∥ s i v ∥ 2 2 + ∑ v = 1 m w v ∥ U − S v ∥ F 2 s . t . s i i v = 0 , s i j v ≥ 0 , 1 T s i v = 1 (7) \mathop{\min}_{\mathbf{S}^v} \sum_{v=1}^{m} \sum_{i,j=1}^{n} \parallel \mathbf{x}_i^v - \mathbf{x}_j^v \parallel^2_2 s^v_{ij} + \beta \sum_{v=1}^{m} \sum_{i}^{n} \parallel \mathbf{s}_i^v \parallel^2_2 + \sum_{v=1}^{m} w_v \parallel \mathbf{U} - \mathbf{S}^v \parallel^2_F \\s.t. s_{ii}^v = 0, s_{ij}^v \geq 0, \mathbf{1}^T \mathbf{s}_i^v = 1 \tag{7} minSvv=1∑mi,j=1∑n∥xiv−xjv∥22sijv+βv=1∑mi∑n∥siv∥22+v=1∑mwv∥U−Sv∥F2s.t.siiv=0,sijv≥0,1Tsiv=1(7)
实际上,我们不需要选择全部的特征,而是选择具有较高相似度的点。也就是说,我们在 S v \mathbf{S}^v Sv 中学习 S i v \mathbf{S}^v_i Siv(一个数据点 (行) 中选择 k k k 个特征),从数据点的邻居中找出 k k k 个最高的相似度值作为学习的目标。因此变化为:
s i j v = { e i , k + 1 − e i j + 2 w v u i j − 2 w v u i , k + 1 k e i , k + 1 − ∑ h = 1 k e i h − 2 k w v u i , k + 1 + ∑ h = 1 k w v u i h j ≤ k 0 j > k (8) s_{ij}^v = \left\{ \begin{array}{ll} \frac{e_{i,k+1} - e_{ij} + 2 w_v u_{ij} - 2 w_v u_{i, k+1}}{k e_{i, k+1} - \sum_{h=1}^k e_{ih} - 2k w_v u_{i,k+1} + \sum_{h=1}^k w_v u_{ih}} &j \leq k \\ 0 & j > k \end{array} \right. \tag{8} sijv={kei,k+1−∑h=1keih−2kwvui,k+1+∑h=1kwvuihei,k+1−eij+2wvuij−2wvui,k+10j≤kj>k(8)
其中, e i j = ∥ x i v − x j v ∥ 2 2 e_{ij} = \parallel \mathbf{x}_i^v - \mathbf{x}_j^v \parallel^2_2 eij=∥xiv−xjv∥22 - 固定 S 1 , . . . , S m , U , F \mathbf{S}^1, ..., \mathbf{S}^m, \mathbf{U},\mathbf{F} S1,...,Sm,U,F,更新权重 w v w_v wv,则根据等式 ( 3 3 3) 直接求得;
- 固定
S
1
,
.
.
.
,
S
m
,
w
v
,
F
\mathbf{S}^1, ..., \mathbf{S}^m, w_v,\mathbf{F}
S1,...,Sm,wv,F,更新
U
\mathbf{U}
U,当
T
r
(
F
T
L
U
F
)
=
1
2
∑
i
,
j
∥
f
i
−
f
j
∥
2
2
u
i
j
Tr(\mathbf{F}^T \mathbf{L}_U \mathbf{F}) = \frac{1}{2}\sum_{i,j} \parallel \mathbf{f}_i - \mathbf{f}_j \parallel^2_2 u_{ij}
Tr(FTLUF)=21∑i,j∥fi−fj∥22uij,且求解单个的
u
i
\mathbf{u}_i
ui(注意条件关于
s
i
j
s_{ij}
sij 的范围),则问题
(
6
)
(6)
(6) 变成:
min u i ∑ v = 1 m ∑ j = 1 n w v ( u i j − s i j v ) 2 + λ ∑ j = 1 n ∥ f i − f j ∥ 2 2 u i j s . t . ∀ i , u i j ≥ 0 , 1 T u i = 1. (9) \mathop{\min}_{\mathbf{u}_i} \sum_{v=1}^{m} \sum_{j=1}^{n} w_v (u_{ij} - s_{ij}^v)^2 + \lambda \sum_{j=1}^{n} \parallel \mathbf{f}_i - \mathbf{f}_j \parallel^2_2 u_{ij} \\ s.t. \forall i, u_{ij} \geq 0, \mathbf{1}^T \mathbf{u}_i=1 . \tag{9} minuiv=1∑mj=1∑nwv(uij−sijv)2+λj=1∑n∥fi−fj∥22uijs.t.∀i,uij≥0,1Tui=1.(9)
其中,将 d i j = ∥ f i − f j ∥ 2 2 d_{ij} = \parallel \mathbf{f}_i - \mathbf{f}_j \parallel^2_2 dij=∥fi−fj∥22 ,则 ( 9 ) (9) (9) 变为(通过额外的步骤):
min u i ∑ v = 1 m ∥ u i − s i v + λ 2 m w v d i ∥ 2 2 s . t . ∀ i , u i j ≥ 0 , 1 T u i = 1. (10) \mathop{\min}_{\mathbf{u}_i} \sum_{v=1}^{m} \parallel \mathbf{u}_i - \mathbf{s}_i^v + \frac{\lambda}{2 m w_v}\mathbf{d}_i \parallel^2_2 \\ s.t. \forall i, u_{ij} \geq 0, \mathbf{1}^T \mathbf{u}_i=1 . \tag{10} minuiv=1∑m∥ui−siv+2mwvλdi∥22s.t.∀i,uij≥0,1Tui=1.(10)
关于 u i j u_{ij} uij 的求解需要参考 4.2 章节。 - 固定 S 1 , . . . , S m , w v , U \mathbf{S}^1, ..., \mathbf{S}^m, w_v, \mathbf{U} S1,...,Sm,wv,U,更新 F \mathbf{F} F:根据公式 ( 5 ) (5) (5) 更新,过程跟初始化差不多,需要 U \mathbf{U} U 的参与。
- 当迭代次数或 λ \lambda λ 大小到一定范围后,循环结束,得到最终 U \mathbf{U} U 。
- 对 U \mathbf{U} U 直接使用 graphconncomp() 函数进行求解,得到图的连通分量的个数以及每个数据点对应的连通分量。
graphconncomp 函数是 MATLAB 中用于计算图的连通分量的函数。[S, C] = graphconncomp(sparse(A)) :S 是连通分量的数量,C 是每个节点的连通分量标签。
然而在 MATLAB R2022b 及之后的版本中,该函数已被删除或不推荐使用,后续的版本可以用 conncomp 函数来代替。