一、简介
题目: X-means: Extending K-means with Efficient Estimation of the Number of Clusters
会议: ICML 2000
任务: 估计无标签数据的类别数量并聚类。
Idea: 给定预估的类别数上下界,从下界开始做一次
k
k
k-means,再对每个簇进行
k
k
k-means(
k
=
2
k=2
k=2),之后通过贝叶斯信息准则(Bayesian Information Criterion, BIC)判断
k
k
k应该等于2还是1,如此往复直至
k
k
k不再增加或到达上界。
二、详情
如图,X-means通过将现有簇一分为二并对比前后BIC分数来确定当前簇是否应该被分割。
1. 算法步骤
输入:无标签数据
D
D
D,预估类别数上下界限
K
max
K_{\max}
Kmax和
K
min
K_{\min}
Kmin。
输出:预测的类别数量和聚类结果。
(1)初始化
k
n
e
w
=
K
min
k_{new}=K_{\min}
knew=Kmin;
(2)设定
k
=
k
n
e
w
k=k_{new}
k=knew,执行一次
k
k
k-means,形成
k
n
e
w
k_{new}
knew个簇;
(3)对于每个簇,计算它们当前的BIC值(计算方法见下一节);
(4)在每个簇上,设定
k
=
2
k=2
k=2,执行
k
k
k-means,每个簇都被分割为2个新簇;
(5)对于每个新簇对(一对新簇是指分割自同一簇的两个新簇),计算它们的BIC值;
(6)比较(3)和(5)得到的BIC值,对于一个簇来说,如果后者BIC值更大,则应该对其进行分割,于是
k
n
e
w
=
k
n
e
w
+
1
k_{new}=k_{new}+1
knew=knew+1;
(7)如果(6)中
k
n
e
w
k_{new}
knew没有增加或
k
n
e
w
≥
K
max
k_{new}\geq K_{\max}
knew≥Kmax则算法终止;否则,转(2)。
2. BIC评分
BIC_notes中指出原文BIC计算公式存在错误,因此,我们仅对BIC_notes中的公式进行介绍,公式如下:
其中, ϕ \phi ϕ为簇的分割状态, p ϕ p_{\phi} pϕ为该状态下的模型参数量, R R R为样本总数, l ^ ϕ ( D ) \hat{l}_{\phi}(D) l^ϕ(D)公式如下:
其中, K K K为当前簇的数量, R n R_n Rn为第 n n n个簇的样本数, M M M为样本长度, σ ^ 2 \hat{\sigma}^2 σ^2公式如下:
其中, x i x_i xi为第 i i i个样本, μ ( i ) \mu_{(i)} μ(i)为 x i x_i xi所在簇的样本中心。
经过整理,去除与簇的分配无关的参数可知实际BIC得分对比公式如下:
其中, ϕ 1 \phi_1 ϕ1和 ϕ 2 \phi_2 ϕ2为分割前后簇的状态。可知,第一项对比的是各簇的样本数量是否平均,第二项对比的是簇的数量,第三项对比的是各簇的样本方差,第四项对比的是参数量。