一、简介
题目: Dip-means: an incremental clustering method for estimating the number of clusters
会议: NIPS 2012
任务: 估计无标签数据的类别数量
k
k
k并聚类。
Idea: 基于单个簇服从单峰分布(unimodal distribution)的假设。首先,根据初始
k
k
k,进行
k
k
k-means聚类。然后,通过Hartigans’ dip test对每个聚类簇进行单峰检验(并不是直接对样本点进行检验,而是对各样本点与同簇所有样本的距离向量进行检验),根据检验结果给每个簇一个评分,若评分均为0,则当前
k
k
k已合适程序终止,否则,将评分最高的簇一分为二并继续聚类、检验、评分、判断。
Code: GitHub
Note: 该方法与X-means和G-means一样都是基于
k
k
k-means的。
如图,为Dip-means的算法流程,下节做详细介绍。
二、详情
1. 算法步骤
输入:无标签数据
X
=
{
x
i
}
i
=
1
N
\pmb X=\{\pmb x_i\}_{i=1}^{N}
X={xi}i=1N,初始簇数量
k
i
n
i
t
k_{init}
kinit,置信度
α
\alpha
α,条件阈值
v
t
h
d
v_{thd}
vthd。
输出:预测的类别数量
k
k
k和聚类结果
{
C
,
M
}
\{\pmb C,\pmb M\}
{C,M}。
(1)初始化
k
=
k
i
n
i
t
k=k_{init}
k=kinit,执行
k
k
k-means,得到标签
C
C
C和各簇质心
M
M
M;
(2)针对簇
c
j
,
j
=
1
,
⋯
,
k
c_j,j=1,\cdots,k
cj,j=1,⋯,k,计算簇内样本两两之间的距离形成距离矩阵;
(3)针对簇
c
j
,
j
=
1
,
⋯
,
k
c_j,j=1,\cdots,k
cj,j=1,⋯,k,根据距离矩阵计算簇内各样本的dip统计量(距离矩阵的一行对应一个样本);
(4)针对簇
c
j
,
j
=
1
,
⋯
,
k
c_j,j=1,\cdots,k
cj,j=1,⋯,k,根据dip统计量计算簇内各样本的检验
p
p
p值,如果
p
p
p值大于
α
\alpha
α,则接受该簇符合单峰分布,否则,拒绝。记簇
c
j
c_j
cj中接受假设的样本数为
∣
ν
j
∣
|\nu_j|
∣νj∣;
(5)针对
c
j
,
j
=
1
,
⋯
,
k
c_j,j=1,\cdots,k
cj,j=1,⋯,k,若
∣
ν
j
∣
n
j
≥
v
t
h
d
\frac{|\nu_j|}{n_j}\geq v_{thd}
nj∣νj∣≥vthd,取簇内接受假设的样本的dip统计量的均值作为该簇的得分
s
c
o
r
e
j
score_j
scorej,否则,
s
c
o
r
e
j
=
0
score_j=0
scorej=0;
(6)若有
s
c
o
r
e
j
>
0
,
j
=
1
,
⋯
,
k
score_j>0,j=1,\cdots,k
scorej>0,j=1,⋯,k,将
s
c
o
r
e
j
score_j
scorej最大的簇一分为二,簇质心
m
m
m由
{
m
L
,
m
R
}
←
{
x
,
m
−
(
x
−
m
)
}
\{m_L,m_R\}\leftarrow\{x,m-(x-m)\}
{mL,mR}←{x,m−(x−m)}替换,
x
x
x是簇内随机选取的样本(两个质心与原
m
m
m距离相当方向相反),否则,算法终止。
(7)令
k
=
k
+
1
k=k+1
k=k+1,去掉
m
m
m其余旧簇质心
M
−
m
M-m
M−m保留与新簇质心
m
L
,
m
R
m_L,m_R
mL,mR合并初始化
k
k
k-means质心,并在原样本上再次执行
k
k
k-means得到新的标签
C
C
C和各簇质心
M
M
M,之后转(2)。
2. 步骤拆解
在步骤(2)-(3) 中,为了提升检验有效性,dip统计量是针对距离向量计算的,而不是原数据,因为维度越高检验能力越差。
不同样本的距离向量不同,dip统计量便不同, p p p值也就不同,与 α \alpha α的关系也就不同,检验通过情况也就不同。
如图,(a)、(d)、(g)均为一个均匀球和一个椭圆高斯分布,差别在于两个簇的距离不同。 × \color{blue}\times ×为接受簇为单峰分布的点, × \color{red}\times ×为拒绝接受簇为单峰分布的点(即接受一分为二的点), ◯ \small\bigcirc ◯和 □ \Box □为 × \color{red}\times ×中dip统计量最大和最小的点,后两列的图为距离向量的概率密度柱状图。
从图中第一列可以看出,随着两个簇逐渐接近,接受将两个簇一分为二的点在减少。从后两列可以看出,最强的分割视图(其实视图就是某个样本点)的距离向量能够很好地展示数据整体是否为单峰分布,最弱的则不行。鉴于不同样本的不同表现和强视图不易寻找,作者在步骤(2)-(4) 是对所有样本都进行距离向量、dip统计量、 p p p值的计算并在步骤(5) 以占比判断是否应该将簇一分为二并分配评估分数,公式如下:

在步骤(6) 中,为了避免分出过多的簇(overestimation),作者仅对得分最高的簇进行分割。
在步骤(6)-(7) 中,为了加速 k k k-means收敛,作者将旧的质心保留并取方向相反的两个新质心作为初始质心。