密度峰值聚类算法(DPC)
目录
- 前言
- 一、DPC算法
- 1.1 DPC算法的两个假设
- 1.2 DPC算法的两个重要概念
- 1.3 DPC算法的执行步骤
- 1.4 DPC算法的优缺点
- 二、改进的DPC算法及其论文
- 2.1 局部密度和相对距离的定义
- 2.2 截断距离的调整
- 2.3 聚类中心的获取方法
- 2.4 制定新的分配规则
- 2.5 改进距离矩阵
- 三、聚类效果及其MATLAB代码
- 参考文献
前言
Rodriguez 等于2014年提出快速搜索和寻找密度峰值的聚类(clustering by fast search and find of density peaks),简称密度峰值聚类(density peaks clustering,DPC)算法。
一、DPC算法
1.1 DPC算法的两个假设
1)类簇中心被类簇中其他密度较低的数据点包围;
2)类簇中心间的距离相对较远。
1.2 DPC算法的两个重要概念
1)局部密度
设有数据集为 ,其中 ,N为样本个数,M为样本维数。
对于样本点i的局部密度,局部密度有两种计算方式,离散值采用截断核的计算方式,连续值则用高斯核的计算方式。
式中,dijd_{ij}dij 为数据点 iii 与数据点 jjj 的欧氏距离,dcd_{c}dc 为数据点i的邻域截断距离。
采用截断核计算的局部密度 ρiρ_{i}ρi 等于分布在样本点 iii 的邻域截断距离范围内的样本点个数;而利用高斯计算的局部密度 ρiρ_{i}ρi 等于所有样本点到样本点i的高斯距离之和。
DPC算法的原论文指出,对于较大规模的数据集,截断核的计算方式聚类效果较好;而对于小规模数据集,高斯核的计算方式聚类效果更为明显。
2)相对距离
相对距离 δiδ_{i}δi 指样本点 iii 与其他密度更高的点之间的最小距离。在计算样本点 iii 前需要对每个数据点的局部密度进行排序。
对于密度最高的样本,相对距离定义为:
δi=maxi≠j(dij)δ_{i}=\underset{i≠j}{max}(d_{ij}) δi=i=jmax(dij)
对于其余数据点,相对距离定义为:
δi=minj:ρj>ρi(dij)δ_{i}=\underset{j:ρ_{j}>ρ_{i}}{min}(d_{ij}) δi=j:ρj>ρimin(dij)
由于密度最高的样本不存在比其密度更高的点,DPC认为该点必为密度峰值(类簇中心),人为设定其相对距离为最大值。剩余的密度峰值需要同时满足两个条件:局部密度 ρρρ 较高,相对距离 δδδ 较大。为此,DPC算法的原论文通过决策值 γγγ 寻找这类密度峰值,下式给出了 γiγ_{i}γi 的定义:
γi=ρi×δiγ_{i}=ρ_{i}×δ_{i} γi=ρi×δi
找到密度峰值后,DPC将剩余数据点分配给密度比它高的最近数据点所在类簇,形成多个从密度峰值出发的树状结构,每一个树状结构代表一个类簇。
1.3 DPC算法的执行步骤
1)利用样本集数据计算距离矩阵 dijd_{ij}dij ;
2)确定邻域截断距离 dcd_{c}dc ;
3)计算局部密度 ρiρ_{i}ρi 和相对距离 δiδ_{i}δi ;
4)绘制决策图,选取聚类中心点;
5)对非聚类中心数据点进行归类,聚类结束。
最后可以将每个簇中的数据点进一步分为核心点和边缘点两个部分,并检测噪声点。其中,核心点是类簇核心部分,其 ρρρ 值较大;边缘点位于类簇的边界区域且 ρρρ 值较小,两者的区分界定则是借助于边界区域的平均局部密度。
1.4 DPC算法的优缺点
优点:
1)不需要事先指定类簇数;
2)能够发现非球形类簇;
3)只有一个参数需要预先取值。
缺点:
1)当类簇间的数据密集程度差异较大时,DPC算法并不能获得较好的聚类效果;
2)DPC算法的样本分配策略存在分配连带错误。
二、改进的DPC算法及其论文
2.1 局部密度和相对距离的定义
- 引入k近邻(KNN)思想计算局部密度。当样本类簇密集程度相差较大时,全局范围内密度较高的点可能均存在于密集类簇中,这将难以发现正确的密度峰值;另外,每个类簇中的密度峰值,它的密度是所在类簇中密度较高的样本,即局部范围内密度较高的样本。因此,样本与其近邻点的相对密度可更加准确地反映该样本是否能成为类簇中心[1]。
- 引入共享近邻(SNN)思想计算局部密度和相对距离。前者通过计算两个点之间的共享邻居的数量快速准确地识别和分配肯定属于一个集群的点;后者通过查找更多邻居所属的簇来分配剩余的点。
2.2 截断距离的调整
- 针对截断距离参数的确定问题,构造关于截断距离参数的局部密度信息熵,通过最小化信息熵自适应地确定截断距离参数[3]。
- 寻找使基尼系数取得最小值时所对应的截断距离,并且将优化后的截断距离作为下一步聚类的基础,代替人工选取截断距离[4]。
- 建立以ACC指标为目标函数的优化问题,利用鲸鱼优化算法对目标函数进行优化,寻找最佳的截断距离[5]。
2.3 聚类中心的获取方法
- 针对聚类中心的确定问题,利用从非聚类中心到聚类中心数据点局部密度和距离的乘积,存在明显跳跃这一特征确定阈值,从而能自动确定聚类中心[3]。
- 根据决策图和簇中心权值排序图提出自动选取聚类中心的策略[4]。
- 利用加权的局部密度和相对距离乘积的斜率变化趋势实现聚类中心的自动选择[5]。
- 基于KL散度的参数指标,用于描述数据集点与其他点γ值的差异度之和,差异度越大,值越趋近于0[6]。
2.4 制定新的分配规则
- 定义新的数据点间邻近程度的度量准则。采用k近邻思想寻找密度峰值,将密度峰值的k个近邻点分配给其对应类簇,对所有已分配数据点寻找相互邻近度最高的未分配数据点,将未分配数据点分配给已分配数据点所在类簇[1]。
- 提出两种基于K近邻的样本分配策略,依次分配样本到相应类簇中心[7]。
2.5 改进距离矩阵
由于所使用的数据集的量纲存在不统一的问题和数值的数量级对数据分布和类别划分有一定影响,采用马氏距离替代原算法中的欧式距离来消除这种影响[2]。
三、聚类效果及其MATLAB代码
通过计算样本的局部密度和相对距离绘制决策图如图1所示。图中分布在右上角的样本具有非常高的 δδδ 值和 ρρρ 值,可以考虑选择这三个样本为密度峰值点,即聚类中心点。
为了更准确的选择密度峰值点作为聚类中心点,可以对决策值 γγγ 进行降序排列如图2所示,进而选择前 kkk 个 γγγ 值最大的数据点作为聚类中心点。
从图中可以看出,聚类中心点的数目为3,可以通过程序确定γγγ 进行降序排列前的样本点所在下标,继而找到这三个聚类中心点。
数据集最终的聚类效果如下:
clc;
clear;
close all;load x;
load Feature;
x = Feature';
dc = 0.5; % 邻域截断距离
s = 2; % 选择局部密度的计算方式
[rho,delta,gamma,cluster] = DPC(x,dc,s);figure;
plot(rho,delta,'bo');
xlabel('\rho','FontAngle','italic','FontName','Times New Roman','FontWeight','bold','FontSize',14);
ylabel('\delta','FontAngle','italic','FontName','Times New Roman','FontWeight','bold','FontSize',14);
box off;figure;
plot(gamma,'r-o');
xlabel('n','FontAngle','italic','FontName','Times New Roman','FontWeight','normal','FontSize',14);
ylabel('\gamma','FontAngle','italic','FontName','Times New Roman','FontWeight','bold','FontSize',14);
box off;
ShowClusterResult(x, cluster);
数据集以及完整代码见链接:密度峰值聚类算法(DPC)MATLAB代码
参考文献
[1] 赵嘉, 姚占峰, 吕莉, 等. 基于相互邻近度的密度峰值聚类算法[J]. 控制与决策, 2021, 36(3): 543-552.
[2] 辜振谱, 刘晓波, 韩子东, 等. 基于改进密度峰值聚类的航空发动机故障诊断[J]. 计算机集成制造系统, 2020, 26(5): 1211-1217.
[3] 王军华, 李建军, 李俊山, 等. 自适应快速搜索密度峰值聚类算法[J]. 计算机工程与应用, 2019, 55(24): 122-127.
[4] 吴斌, 卢红丽, 江惠君. 自适应密度峰值聚类算法[J]. 计算机应用, 2020, 40(6): 1654-1661.
[5] 王芙银, 张德生, 张 晓. 结合鲸鱼优化算法的自适应密度峰值聚类算法[J]. 计算机工程与应用, 2021, 57(3): 94-102.
[6] 丁志成, 葛洪伟, 周 竞. 基于KL散度的密度峰值聚类算法[J]. 重庆邮电大学学报(自然科学版), 2019, 31(3): 367-374.
[7] 谢娟英, 高红超, 谢维信. K近邻优化的密度峰值快速搜索聚类算法[J]. 中国科学:信息科学, 2016, 46(2): 258-280.
[8] LIU R, WANG H, YU X. Shared-nearest-neighbor-based clustering by fast search and find of density peaks[J]. Information Sciences, 2018, 450: 200-226.
密度峰值聚类算法(DPC)相关推荐
- 密度峰值聚类算法DPC(Density Peak Clustering)理论基础与python实现
密度峰值聚类算法DPC(Density Peak Clustering) 基于密度峰值的聚类算法全称为基于快速搜索和发现密度峰值的聚类算法(clustering by fast search and ...
- 【聚类算法】密度峰值聚类算法DPC(Density Peak Clustering Algorithm)
every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=b ...
- 密度峰值聚类算法介绍(DPC)
目录 引言 一.DPC算法 1.1 DPC算法的两个假设 1.2 DPC算法的两个重要概念 2.方法模型 2.1 稳健深度自编码器 引言 Rodriguez 等于2014年提出快速搜索和寻找密度峰值的 ...
- DPC密度峰值聚类算法原理详解二
DPC密度峰值聚类算法原理详解二 1.计算数据点两两之间的距离 1.使用 Numpy 模块查找两点之间的欧几里得距离: 2.使用 distance.euclidean() 函数查找两点之间的欧式距离: ...
- 密度峰值聚类(Density Peak Cluster,DPC)——Python实现
密度峰值聚类(Density Peak Cluster,DPC)--Python实现 时间:2022/6/29 文章目录 密度峰值聚类(Density Peak Cluster,DPC)--Pytho ...
- 基于密度的聚类算法(3)——DPC详解
基于密度的聚类算法(1)--DBSCAN详解 基于密度的聚类算法(2)--OPTICS详解 基于密度的聚类算法(3)--DPC详解 1. DPC简介 2014年,一种新的基于密度的聚类算法被提出,且其 ...
- DPCA 密度峰值聚类记录
密度峰值算法(Clustering by fast search and find of density peaks),一种基于密度的聚类方法,主要思想是寻找被低密度区域分离的高密度区域. 密度峰值算 ...
- 基于密度的聚类算法(1)——DBSCAN详解
基于密度的聚类算法(1)--DBSCAN详解 基于密度的聚类算法(2)--OPTICS详解 基于密度的聚类算法(3)--DPC详解 1. DBSCAN简介 DBSCAN(Density-Based S ...
- 机器学习-无监督学习-聚类:聚类方法(二)--- 基于密度的聚类算法【DBSCAN文本聚类算法,密度最大值文本聚类算法】
密度聚类方法的指导思想是,只要样本点的密度大于某阀值,则将该样本添加到最近的簇中. 基于密度的聚类算法假设聚类结构能够通过样本分布的紧密程度确定,以数据集在空间分布上的稠密程度为依据进行聚类,即只要一 ...
最新文章
- R语言sys方法:sys.chmod函数改变指定文件的权限、Sys.Date函数返回系统的当前日期、Sys.time函数返回系统的当前时间
- SpringBoot高级篇MongoDB之修改基本使用姿势
- python读取文件按行分割字符串_python中分割字符串split切割并选择输出 逐行读取文件后字符串拼接...
- 用Visual C#打造多页面网页浏览器
- 如何使用CSDN- Markdown编辑器(给自己看的)
- [Android]如何减小APK的大小
- Android开发之View双指缩放ViewGroup双指缩放视频双指缩放图片双指缩放
- Python交换两个变量的三种方法
- Java程序员晋升之路:“Java高级核心知识全面解析
- Docker MySQL 8 慢查询日志监控详解
- c语言上机作业数组,2015二级c语言上机题库
- android 传感器使用与开发---陀螺仪传感器
- 关于iOS7越狱的整理
- 如何将Excel中以文本形式存储的数字批量快速地转换为数值类型
- win10系统更新之后经常蓝屏解决方法分享
- win10 microsoft edge 浏览器收藏夹位置
- 【无人机】基于matlab粒子群算法优化干扰受限下无人机群辅助网络【含Matlab源码 2245期】
- 计算机二级ms模拟题在线,全国计算机二级MSoffice高级应用模拟试题及答案
- EOJ Contest61 2018研究生面试机考(软件工程)个人题解
- dell远程控制卡的原理