一、简介
题目: PG-means: learning the number of clusters in data
会议: NIPS 2006
任务: 估计无标签数据的类别数量
k
k
k并聚类。
Idea: 最初给定一个较小的
k
k
k(最小为1)在原始无标签数据上拟合高斯混合模型(gaussian mixture model, GMM);将无标签数据和GMM的参数(均值、斜方差)映射为一维,然后基于映射后的GMM参数进行采样;之后使用Kolmogorov-Smirnov (KS) test检验映射后的数据和采样是否匹配,若匹配,则迭代终止,否则,令
k
=
k
+
1
k\!=\!k\!+\!1
k=k+1更新GMM并陆续进行映射、采样、检验。
Code: GitHub
Note: 虽然该方法叫PG-means,但与X-means和G-means基于
k
k
k-means不同,它是基于GMM的。
如图,为PG-means的算法流程,下节做详细介绍。
二、详情
1. 算法步骤
输入:无标签数据
{
X
}
d
×
n
\{\pmb X\}_{d\times n}
{X}d×n(
n
n
n是样本数,
d
d
d是样本维度),置信阈值
α
\alpha
α,映射次数
p
p
p。
输出:预测的类别数量和聚类结果。
(1)初始化
k
=
1
k=1
k=1;
(2)在
X
\pmb X
X上根据
k
k
k拟合GMM,GMM中有
k
k
k个均值
{
μ
}
d
×
1
\{\pmb\mu\}_{d\times 1}
{μ}d×1和协方差
{
Σ
}
d
×
d
\{\pmb\Sigma\}_{d\times d}
{Σ}d×d;
(3)随机取
p
p
p个与
x
∗
j
∈
X
\pmb x_{*j}\!\in\!\pmb X
x∗j∈X维度相同的映射向量
{
p
i
}
d
×
1
\{\pmb p_i\}_{d\times 1}
{pi}d×1,每次取一个
p
i
\pmb p_i
pi,共取
p
p
p次;
每次循环,将
X
\pmb X
X映射为
{
X
i
′
}
1
×
n
=
p
i
T
X
\{\pmb X_i^\prime\}_{1\times n}=\pmb p^T_i\pmb X
{Xi′}1×n=piTX,将GMM中的
k
k
k个均值
μ
\pmb\mu
μ和协方差
Σ
\pmb\Sigma
Σ分别映射为
k
k
k个
{
μ
i
′
}
1
×
1
\{\mu^{\prime}_i\}_{1\times 1}
{μi′}1×1和
{
Σ
i
′
}
1
×
1
\{\Sigma^{\prime}_i\}_{1\times 1}
{Σi′}1×1(
μ
i
′
=
p
i
T
μ
,
Σ
i
′
=
p
i
T
Σ
p
i
\mu_i^{\prime}=\pmb p^T_i\pmb\mu, \Sigma_i^{\prime}=\pmb p^T_i\pmb\Sigma\pmb p_i
μi′=piTμ,Σi′=piTΣpi);
若
k
k
k是合理的,则映射后的
X
i
′
\pmb X_i^\prime
Xi′应服从
k
k
k个
N
(
μ
i
′
,
Σ
i
′
)
N(\mu_i^{\prime},\Sigma_i^{\prime})
N(μi′,Σi′)的组合分布,所以假设基于映射后的GMM(其参数为映射后的
k
k
k个均值和协方差)进行
n
n
n次采样得到的数据与映射后的数据
X
i
′
\pmb X_i^\prime
Xi′匹配;
使用Kolmogorov-Smirnov (KS) test对
X
i
′
\pmb X_i^\prime
Xi′和采样数据进行匹配检验,若
p
p
p次检验值均高于置信阈值
α
\alpha
α,则程序终止,否则进入(4);
(4)没通过检验,说明
k
k
k不合适,令
k
=
k
+
1
k\!=\!k\!+\!1
k=k+1,转(2)。
2. 新簇参数
为了加快收敛速度,由步骤(4)转步骤(2)时,旧簇的均值和协方差被保留,新簇的协方差初始化为旧簇的协方差的平均,新簇的均值有如下两种方式进行选取:
(1)随机选取一个样本作为均值;
(2)选取概率密度低的样本作为均值。
作者使用上述方式各5次,进行GMM的拟合,每次GMM经EM算法迭代会有一个最佳拟合的对数似然下界值,直白来说就是对模型有一个自我的评估值,最后取最高的评估值对应的GMM。