前言
如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
BIRCH 聚类
要求数据为向量形式,则通过构建 CF-tree (Clustering Feature Tree) 实现可扩展地高效聚类,具体来说,每个簇存储一个三元组:
C
F
=
(
N
,
LS
,
SS
)
,
CF=(N,\text{LS},\text{SS}),
CF=(N,LS,SS),
其中
N
N
N 表示簇中点的数量,矢量
LS
\text{LS}
LS 表示各点线性求和,标量
SS
\text{SS}
SS 表示各点平方和。假设某簇中有
N
N
N 个
D
D
D 维数据点,则矢量
LS
\text{LS}
LS 是个各点的线性求和:
LS
=
∑
n
=
1
N
x
n
.
\text{LS}=\sum_{n=1}^N \boldsymbol{x}_n.
LS=n=1∑Nxn.
标量
SS
\text{SS}
SS 是各数据点的平方和:
SS
=
∑
n
=
1
N
x
n
T
x
n
.
\text{SS}=\sum_{n=1}^N \boldsymbol{x}_n^T \boldsymbol{x}_n.
SS=n=1∑NxnTxn.
有了 CF 特征后,两个簇合并,新的 CF 特征可以直接相加,即:
CF
1
+
CF
2
=
(
N
1
+
N
2
,
LS
1
+
LS
2
,
SS
1
+
SS
2
)
.
\text{CF}_1+\text{CF}_2=(N_1+N_2,\text{LS}_1+\text{LS}_2,\text{SS}_1+\text{SS}_2).
CF1+CF2=(N1+N2,LS1+LS2,SS1+SS2).
由于 CF 很容易地可以合并,CF-tree 可以实现增量式聚类,不断插入新节点。另外,由于数据为向量形式,得到了各点向量求和后,可以方便地计算「簇质心」、「簇半径」、「簇直径」以及各类簇间距离。详细内容可参考「数据挖掘入门笔记 —— BIRCH 聚类」。
Lance–Williams equation
层次聚类中有两种常见形式:
- 分裂式层次聚类 (Divisive Hierarchical Clustering):自顶向下,大簇不断分裂为小簇;
- 凝聚式层次聚类 (Agglomerative Hierarchical Clustering):自底向上,小簇不断合并为大簇。
在实际应用中,凝聚式层次聚类由于不用事先指定簇个数,因此更为常见,其通常采用下述方式进行:
可以看出,其主要思路是定义簇间距离
d
i
,
j
d_{i,j}
di,j,每次将簇间距离最小的两个簇
i
,
j
i,j
i,j 合并为一个新的簇
i
+
j
i+j
i+j,并更新其它簇到新簇的距离
d
k
,
i
+
j
d_{k,i+j}
dk,i+j。
由于每次重新计算簇间距离非常低效,因此存在 Lance–Williams equation,其定义了一种每次合并后,递归更新簇间距离的范式,如下所示:
d
k
,
i
+
j
=
α
i
d
k
,
i
+
α
j
d
k
,
j
+
β
d
i
,
j
+
γ
∣
d
k
,
i
−
d
k
,
j
∣
.
d_{k,i+j}=\alpha_i d_{k,i}+\alpha_j d_{k,j}+\beta d_{i,j}+\gamma|d_{k,i}-d_{k,j}|.
dk,i+j=αidk,i+αjdk,j+βdi,j+γ∣dk,i−dk,j∣.
满足上式的 merge 准则通常较为高效,此处列举一些常见的方式:
Method
α
i
α
i
β
γ
Single linkage
0.5
0.5
0
−
0.5
Complete linkage
0.5
0.5
0
0.5
Group average
n
i
n
i
+
n
j
n
j
n
i
+
n
j
0
0
Weighted group average
0.5
0.5
0
0
Centroid
n
i
n
i
+
n
j
n
j
n
i
+
n
j
−
n
i
⋅
n
j
(
n
i
+
n
j
)
2
0
Ward
n
i
+
n
k
(
n
i
+
n
j
+
n
k
)
n
j
+
n
k
(
n
i
+
n
j
+
n
k
)
−
n
k
(
n
i
+
n
j
+
n
k
)
0
\begin{array}{|l|c|c|c|c|} \hline \text { Method } & \alpha_i & \alpha_i & \beta & \gamma \\ \hline \text { Single linkage } & 0.5 & 0.5 & 0 & -0.5 \\ \text { Complete linkage } & 0.5 & 0.5 & 0 & 0.5 \\ \text { Group average } & \frac{n_i}{n_i+n_j} & \frac{n_j}{n_i+n_j} & 0 & 0 \\ \text { Weighted group average } & 0.5 & 0.5 & 0 & 0 \\ \text { Centroid } & \frac{n_i}{n_i+n_j} & \frac{n_j}{n_i+n_j} & \frac{-n_i \cdot n_j}{\left(n_i+n_j\right)^2} & 0 \\ \text { Ward } & \frac{n_i+n_k}{\left(n_i+n_j+n_k\right)} & \frac{n_j+n_k}{\left(n_i+n_j+n_k\right)} & \frac{-n_k}{\left(n_i+n_j+n_k\right)} & 0 \\ \hline \end{array}
Method Single linkage Complete linkage Group average Weighted group average Centroid Ward αi0.50.5ni+njni0.5ni+njni(ni+nj+nk)ni+nkαi0.50.5ni+njnj0.5ni+njnj(ni+nj+nk)nj+nkβ0000(ni+nj)2−ni⋅nj(ni+nj+nk)−nkγ−0.50.50000
参考资料
- 数据挖掘入门笔记 —— BIRCH 聚类
- Ward’s method
- Hierarchical Clustering 4: the Lance-Williams algorithm