结合K近邻的改进密度峰值聚类算法总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结合K近邻的改进密度峰值聚类算法总结相关的知识,希望对你有一定的参考价值。

参考技术A 结合K近邻的改进密度峰值聚类算法总结

解决的问题:

解决了处理维数较高,含噪声及结构复杂数据集时聚类性能不佳等问题。

DPC优点:

不仅能够检测出样本集中存在的聚类数目,而且能够有效地处理不规则形状的簇以及异常样本。

DPC缺点:

(1)对于大小不同的数据集,采用的局部密度计算方式不同,这无形中降低了算法的灵活性;

(2)对剩余点的分配策略易造成误差传播 

隐患:

对于分布稀疏的数据,ρ - δ 决策图难以确定聚类中心。可以用γ = ρ × δ 决策图来代替。

改进的点:

改进点1:密度计算方式的改进

由距离 δ 定义可知,δ 值的大小与密度 ρ 也密切相关,故 ρ 对于聚类中心的选取至关重要。由于 DPC 算法的密度计算方法不一致且深受截断距离 dc 影响,其不能够保证与当前点距离小于 dc 的点的数目,故有不少成果对该算法中的密度公式进行了改进 所以首先改进密度公式:

相当低于把dc换掉了,换成了K,尽管K相对有更容易确定些,但面对类 间 样 本 数 不 均 衡 以 及 疏 密 度 不 一 的 数 据 ,使 用γ = ρ × δ 方式选取聚类中心时,类中心点与其他点的区分度并不高 

为了解决这一问题,从数据整体分布出发,引入了相似性调节系数,给出了一种带有相似性系数的高斯核函数来计算局部密度。

其中,σ 取数据量的2%,r(人工给,仍然存在隐患) 为相似性系数,表示密度函数与数据点间相似度的关系程度,该值越大,距离点 xi越近的点对其密度 ρi 的贡献权重越大。

改进点2:分配方式的改进

引入核心点的概念:

由于聚类中心往往出现在高密度区域,故将各聚类中心某邻域内的点看作核心点,而将其他点看作非核心点。

核心点的获取方法:

1,先求出簇中心

2,将剩下的点分配到距离其最近的聚类中心所在的类中

3,计算类中所有点到簇中心的距离,求出平均距离。

4,若点在平均距离之内,叫做核心点。 

分配剩余点(非核心点):

两种方式:(全局搜索策略和统计学习分配策略)

全局搜索策略:

以核心点的中心,不断搜索未分配KNN点,并将其分配到核心点所在的簇中。

统计学习分配策略:

通过学习每个剩余点被分配的至各个簇的概率来将其归类。

注: 每点的归属由其KNN分布信息决定,若 xi 的KNN(KNNi)中属于某个簇的点越多且与 xi 的距离越近,则两点之间相似度越大,此时xi 被分配到这个类的概率也越大。 

论文中算法步骤:

输入:数据集 X ,相似性系数 r ,最近邻个数 K 。

输出:类标签 labels 。

步骤1 计算每点的 δ 与 ρ (新的方式)值。

步骤2 通过决策图获取聚类中心。

步骤3 提取核心点,并采用全局搜索分配策略将待分类点归类:

(1)将核心点集合 Xcore 置入队列 Q 。

(2)取队列头 xa ,并将之从 Q 中删除,然后查找其K 个最近邻 KNNa 。

(3)若 x′ ∈ KNNa 未被分配,则将 x′ 分配到 xa 所在的类中,并将 x′ 添加至 Q 尾部;否则转(2)。

(4)若 Q = ∅ ,终止该策略。

步骤4 采用统计学习策略分配剩余 k 个点:

(1)依式(9)和(10)计算每点的 Pim(i = 1,2,…,k) ,并将该值存至矩阵 P k × M,同时将 max(Pim) 的值以及类别号 m 分别存至向量 MP 和 MI  

(2)若 MP 中有非零值,则将 Pom 值最大的点 xo 归入 MI(o) 所表示的类中,转(3);否则终止该策略。

(3)更新 P、MP、MI ,令 MP(o) = 0 。对于未分配点xp ∈ KNNo ,更新 P[p][m] 、MP(p) 及 MI(p) 。

(4)若 MP 中所有元素均为0,则终止;否则转(3)。

步骤5 仍未被处理的点可看作噪声点,并将之归入到其最近邻所在的类中 

以上是关于结合K近邻的改进密度峰值聚类算法总结的主要内容,如果未能解决你的问题,请参考以下文章

密度峰值聚类算法(DPC)

三分钟看懂密度峰值聚类算法

深度解读 python 实现 dbscan算法

DBSCAN聚类算法原理总结

简单易学的机器学习算法——基于密度的聚类算法DBSCAN

机器学习实战精读--------K-均值聚类算法