PROCLUS算法
PROCLUS是由Aggarwal等人在1999年提出的一种子空间聚类算法。原文是《Fast Algorithms for Projected Clustering》,在ACM数据库可以进行下载。
算法总体介绍
PROCLUS是基于投影的子空间聚类算法,搜索策略为自顶向下。算法基于中心点思想,适合球形簇数据集,采用曼哈顿距离度量对象的相似性。
算法一共分为以下三个阶段:
- 初始阶段 ,选择中心点超集;
- 迭代阶段,确定每一个中心点的特征维度,通过对聚类结果进行分析,并不断迭代替换差的中心点,得到最优中心点集;
- 优化阶段,对中心点维度进行优化,改善聚类质量;
初始阶段
输入:数据集合
D,簇个数
K,常数
A,常数
B
输出:中心点集
MC
- 从数据集中随机选择
A∗K(
A是常数)个数据构成初始中心点超集
MC′;
- 使用贪心算法从
MC′中选择大小为
B∗K(
B为常数,且
B<A)的中心点集
MC;
2.1 初始化
MC为空集
2.2 从
MC′中随机选择一个样本
m加入
MC(同时将
m从
MC’中移除)
2.3 计算
MC′中每个点与
MC中离该点最近的点的距离
dis,选择
dis最大的点
n,将
n加入
MC中(同时将
n从
MC’中移除)
2.4 重复2.3直到
MC中样本点数为
B∗K
迭代阶段
输入:数据集
D(大小为
N),中心点集
MC,簇平均维度
L,簇个数
K
输出:最终的中心点集
M,
MC中每个中心点对应的维度
- 从
MC中选择一个样本
i
- 计算
MC中其他样本点与m的最小距离
imindist(曼哈顿距离)
- 计算数据集中i局部近邻点集合
ineighbor(数据集
D中离
i的曼哈顿距离小于
imindist的样本点即为i的局部近邻点)
- 计算
ineighbor与
i在每个特征维度的平均距离
Xij(i表示中心点,
j表示对应维度),计算所有维度维度均值
Yi
- 计算Xij的标准差
σi=d−1∑j=1d(Xij−Yi)2
- 对于每个特征维度计算
Zij=σiXij−Yi,对
Zij进行排序,选取
Zij最小的
K∗L(最小有两维特征)个特征对应的维度,作为候选中心点
m的子空间
- 重复1~6,为
MC中所有中心点找到对应子空间
- 从
MC中选择
K个中心点,通过计算数据集中其他样本点与中心点在中心点对应的子空间的曼哈顿截断距离(Manhattan segmental distance),进行样本点的分配,使用MC中其他中心点替换掉
Mbad(在聚类过长中分配到的数据点个数小于
KN∗C,C是一个常数,一般设为0.1)中心点
曼哈顿截断距离:
dD(x1,x2)=∣D∣∑i∈D∣X1,i−X2,i∣(
D表示中心点对应的子空间)
优化阶段
输入:最优的中心点集M,迭代阶段最后得到的簇分配结果
{Ci,C2....Ck}
输出:聚类结果
- 丢弃
M中每个中心点都包含的维度
- 使用迭代阶段的方法进行子空间选择,但是与迭代阶段不同的是,使用的不是局部近邻点而是迭代阶段输出的每个中心点的聚类结果
- M中的中心点会得到新子空间,基于新的子空间进行数据的重新分配
参考文献
[1]Aggarwal C C , Wolf J L , Yu P S , et al. Fast Algorithms for Projected Clustering[J]. Sigmod, 1999, 28(2):61-72.