通过快速寻找和找到密度高峰进行聚类
Alex Rodriguez and Alessandro Laio
聚类分析旨在依赖所要聚类元素之间的相似度以期将他们分成不同的类。该方法的应用领域范围包括航空航天、生物化学、文献计量学、模式识别等。基于聚类中心具有比相邻点密度更高以及它们之间具有相当远的距离的特点,我们依此提出了一种(新的聚类)方法。群的数目直观可见、噪声点自动标出并排除在分析之外、群的区分不依赖于它们的形状和所处的空间维度,该想法的出现便是来源于该聚类过程。(最后,)我们用一些测试数据来演示该算法的聚类效果。
聚类算法尝试依据不同元素之间的相似关系将它们分成不同的类别,或者叫做集群。在此之前已经提出了很多不同的聚类策略,但是甚至包括如何定义一个群这类基本问题都未达成共识。在K-means和K-medoids方法中,群是一些与聚类中心具有相近特征的数据组。目标函数通常会是所有元素与一套假设出的聚类中心的距离之和,然后对其优化3-6次以求出那些最合适的聚类中心。然而,由于一个数据点总是分配到离它最近的中心,因此这种方法不能检测非球形的群。在基于分配的算法中,人们试图通过(结合)观察和概率分布函数实现数据聚类。而这些方法的准确性取决于代表数据集的测试概率的可靠性。
具有不规则形状的群很容易通过数据点的局部密度检测出来。在基于密度的带噪声空间聚类应用(DBSCAN)中,人们选取一个密度阈值作为“门槛”,对于密度值低于该“门槛”的数据点则视为噪声点,并把断开的高密度区域(数据点集)分配给不同的群。然而,(该方法存在)一个在mean-shift聚类方法中没有出现的问题,选择一个合适的“门槛值”是不容易的(文中是can be nontrivial平凡的)。这种算法将簇定义为汇集了相同的局部最大密度分布函数的点集。该方法可以分出非球形的集群但是只适用于坐标化的数据而且计算花费时间很长。
这里,我们给出一种类似于K-medoids的,只依赖于数据点间距离的替代方法。就像DBSCAN和mean-shift方法一样,它能分出非球形集群并自动找出正确的集群数目。簇的中心就像在mean-shift方法中一样,由于数据集中的局部密度最大被定义出来。然而,与mean-shift方法不同的是,我们的方法不需要将数据嵌入向量空间,也不需明确地对每个数据点的密度场最大化。
该算法基于以下假设:簇的中心被局部密度更小的点包围而且这些中心距离局部密度比它们大的点相当远。对于每一个数据点,我们计算两个数值:局部密度ρi及它与更高密度点的距离δi。这两个值只依赖与数据点之间的距离,我们假定该距离满足三角不等式。我们将数据点的局部密度定义为:
ρi = ∑x(dij-dc)
x(x) = {█(1 x<0@0 其他)},dc为截断距离。ρi为到i的距离比dc小的点的数目。该算法支队在不同的点处ρi的相对大小敏感。这就意味着,对于大型数据集,该分析的结果对于dc的选择鲁棒性很强。
δi由点i和其它密度更高的点的最小距离得到。
δi=min⁡(dij),j:ρj > ρi
对于密度最高的点,我们一般记δi = maxj(dij)。注意到,δi比那些局部密度或全局密度最大的,典型的最邻近距离大得多。因此,那些δi的值异常大的点被视作簇的中心。
算法的核心思想见图片1的展示。因此,像预期那样,只有δ和ρ都很大的点才是簇的中心点。δ很大但是ρ很小的点被视为单独的点,叫做噪音点。
找到簇的中心以后,剩下的每个点被分配为离它最近的密度更高的点同一个簇。相比于其他的迭代进行最优化的聚类算法,(本算法)簇的分配是一个单独的步骤。
在簇的分析中,定量地测试分配的可靠性通常很有用。在基于优化的算法中,收敛处的值也是一个很重要的质量评价标准。像如DBSCAN方法,那些形成低密度的集群密度值超过阈值的可靠点,会被划分为噪音点。在我们的算法中,我们不引人噪声截断阈值。我们首先为每一个簇找到一个边界区域,是那些除了与其他集群点集距离在dc值以内的,分配到本簇的点集。然后我们发现,每个簇的密度最大值点在边界区域内。我们用ρb表示该截断密度。簇里那些密度高于ρb的点视为簇核心部分(分配的鲁棒性)。其他那些点作为簇的光环(作为噪声点很合适)。
为了检验我们的程序,先来看看图片2中测试结果。数据点是从非球形的概率分布中提取出来的,并在中心处多次重叠,出现概率最大的地方大约超过一个数量级。在图片2中,B和C分别按A中概率选出了4000个点和1000个点。在对应的决策图D和E中,我们观察到只有5个点有很大的δ值和相当大的密度值。这些点作为簇的中心在图中用大圆表示出来。中心被选出来以后,每个点不是分配为簇内就是分配为光环。算法找到了概率峰的位置和形状,甚至那些密度稀疏稠密的都同时找到,还有非球形的峰值。此外,对于A中那些人们视觉上感觉是光环的点也没有被分到任意一个峰里。
为了更数据化地证明该算法的鲁棒性,我们从图片2的A中取出10,000个点来实现此算法,并以图片2的A中簇分类结果作参照。之后,我们每次固定一部分点减少采样,并独立地对每次采样进行分类。图片2F,随着抽样的减少,分到簇中的部分不同于参照情况下分到簇中的部分。没有进行分类的点占到低于1%,甚至对于那些小的抽样只包含1000个点。
对于图片2B里的数据不同的dc产生了相对一致的聚类结果(见图S1)。根据经验,人们将数据集中总数的1%-2%选为dc值。对于那些由很少的数据点构成的数据集,ρi可能大量数据统计产生的错误而影响。在这些情况下,最好采取更精确的方法来估计密度。
然后我们用图3中的测试集来衡量该算法。计算数据点很少的密度,我们采用(11)里面描述的指数核的方法。在图片3A里面,我们用来自(12)的数据集,将得到的结果与那些原作相比较,表明之前的聚类方法不如本文提出的方法。在图片3B中,我们对取自(13)的共计15个类而数据点高度重叠的数据进行分类,我们的算法成功的确定了数据集的簇的结构。在图片3C中,我们考虑测试情况用FLAME(基于局部关系近似的模糊聚类)方法(14)来跟原来方法的结果作对比。该数据集所采用的方法是基于路径的谱聚类(15),见于图4D。我们的算法无需创建连通性曲线图便可正确分出三个集群。我们在图S3和S4中展示了通过K-means方法对这四个测试集及图片2中的数据进行聚类的结果。即使K-means采用正确的K值进行最优化,其结果大都与人眼实际看分出的结果不一样。
本方法对数据的量度变化有鲁棒性而不怎么影响到dc的取值,即公式1中密度估计值不变。显然,公式2中距离值会被这样的量值变化影响,但是很明显决策图的结构(特别是那些δ很大的数据点)是一个排名的结果密度值,而不是实际很远的点间,的距离值。实例演示见图5。
我们的方法只需计算所有数据对之间的距离,不需要概率分配的参数或是多维密度函数。因此,效果不受数据原本的空间维度所影响。通过实验,我们证实对于256维16个集群的数据(16),我们的算法找出了集群的个数,并把这些点正确的分类(见图S6)。对于三类小麦种子、七种用X射线得到特征的210个测量值这样一个数据集,该算法正确的预测了存在三种类型,分类正确率高达97%(见图S7和S8)。
我们还以该算法对Olivetti Face Database这一旨在分类的作为机器学习普遍基准的数据进行测试,而没有任何的先前训练。这些数据给我们的算法造成了很大的挑战,因为集群的核心数量(即独特的对象)与数据集中元素数量(即不同的人脸,每个对象有10张照片)相媲美。这就使得可靠的密度估计变得很难。两张图片的相似度计算方法如下(19)。密度估计以与之前相异的dc值0.07通过高斯核函数得到。有了这样一个小的设置,密度估计值便不会被数据庞大造成的误差所影响;这样,我们比之前例子多了一点限制标准把图像进行了分类。图像只有在距离比dc小的时候才会被分配与离它最近的更高密度的图像同一类。因此,那些与更高密度的图像之间的距离超过dc的图像没有被分类。在图4中,我们展示了对于数据集前100张图片的聚类结果。决策图(图4A)显示了几个明显的密度最大值。不像其他的例子,由于缺少数据点而使准确的数字不明显。对于如何选择中心数目由公式γi = ρiδi画出的降序图像(图4B)给出。这个决策图显示,通过定义大的簇中心得到的数值在降序点9以后开始变得不规则。因此我们采用9个集群中心。在图4D中,我们把与这些中心一致的集群用同一种颜色表示。 7个集群对应各自不同的对象,证明这个算法可以分出大约十分之七的对象。第八个对象被分为了两个集群。当对所有的40张图片进行聚类时,决策图再次难以清楚地分出共计有多少类(见图S9)。然而在图4C中,我们发现通过大量增加假想的中心,大约能清楚的分出30个对象。当增加更多的中心时,一些对象的图像被分为了两个集群,但仍旧所有的集群都很纯净,即是说一个集群中只有来自同一个对象的图片。按照(20)的方法,我们仍对同一对象的部分图像进行聚类并正确的分到了同一个类,但是那些来自不同对象的图片错误的分到了相同的类里。如果人们不提供分类的截断距离dc (即有人把我们的算法用在一般的聚类中),对于42-50个中心的情况,人们大约会得到分类正确68%,分类错误(不同类分到一起)1.2%,是目前最先进的无监督图像距离方法。
最后,我们用本文算法分析300K水下条件下分子动力学弹道轨道。在这种情况下,集群大约相当于动能盆地,即系统的独立构造对于大量时间和分离的自由能垒稳定,微观上交叉很少的时间尺度。我们首先用一个基于运动矩阵的谱分析的标准方法(22)来分析弹道,运动矩阵中特征值与弛豫时间相关。在第七个特征值之后出现了空隙(见图S10),表明系统有8个盆地。与之相同,我们的算法给出了8个集群,包括那些那些一一对应的动能盆地(22)。
就像是本文以及其他基于密度的聚类算法(9,10),通过密度最大值识别集群很简单而且选择直观,但是有个很严重的缺点。如果人们随机制造数据点,对于有限采样大小的密度估计,不是同一的,而是以一些极大值为特征的。然而,决策图有利于我们区分真实的集群和噪声波纹造成的数据密度。定性的分析,只有在前一种情况下那些簇的中心点与其他店因ρ和δ而有很明显的区分。对于随机分布,不再遵循ρ和δ值得连续分布。实际上,我们对于从超立方体一致的分布中随机抽取形成数据集。输入到方程组1、2的数据点的距离值由超立方体的周期边界得到。这一分析表明,随机分布的数据点,品质因数γi = ρiδi需要一个依赖于数据集的空间维度指数的幂次定律来进行选择。像如图2到4实际集群数据集γ的分布与幂次定律显著不同,对于高γ的区域更是这样(见图S11)。这一观察结果对于用本文算法进行分析自动选择簇中心以及统计学上确认是否可靠的情形提供了一个基本的准则。

Science上聚类算法论文——Clustering by fast search and find of density peaks翻译稿相关推荐

  1. 文献学习(part33)--Clustering by fast search and find of density peaks

    学习笔记,仅供参考,有错必究 文章目录 Clustering by fast search and find of density peaks 摘要 简介 算法 实验(略) Clustering by ...

  2. 谱聚类算法(Spectral Clustering)优化与扩展

    谱聚类算法(Spectral Clustering)优化与扩展 谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在社交 ...

  3. 谱聚类算法(Spectral Clustering)

    谱聚类算法(Spectral Clustering) 谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法--将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似 ...

  4. 聚类算法教程(3):层次聚类算法Hierarchical Clustering Algorithms

     基本工作原理 给定要聚类的N的对象以及N*N的距离矩阵(或者是相似性矩阵),层次式聚类方法的基本步骤(参看S.C. Johnson in 1967)如下: 1.     将每个对象归为一类,共得 ...

  5. 聚类算法小记(part1)--基于密度峰快速搜索的聚类算法

    学习笔记,仅供参考,有错必纠 文章目录 引言 DPC算法概述 例子 缺点 引言 2014 年 6 月 Science 发表了自动确定类簇数和类簇中心的新聚类算法 DPC (clustering by ...

  6. 基于密度聚类算法的改进

    基于密度算法的改进 本篇博客来自我的github小项目,如果对您有帮助,希望您前去点星 ! 使用基于密度的聚类算法,进行高维特征的聚类分析,从高维数据中提取出类似的有用信息,从而简化了特征数量,并且去 ...

  7. Science上发表的超赞聚类算法

    论文. Clustering by fast search and find of density peak. Alex Rodriguez, Alessandro Laio 参考链接:Science ...

  8. 密度峰值聚类算法DPC(Density Peak Clustering)理论基础与python实现

    密度峰值聚类算法DPC(Density Peak Clustering) 基于密度峰值的聚类算法全称为基于快速搜索和发现密度峰值的聚类算法(clustering by fast search and ...

  9. 基于密度的聚类算法(3)——DPC详解

    基于密度的聚类算法(1)--DBSCAN详解 基于密度的聚类算法(2)--OPTICS详解 基于密度的聚类算法(3)--DPC详解 1. DPC简介 2014年,一种新的基于密度的聚类算法被提出,且其 ...

最新文章

  1. Linux那些事儿 之 戏说USB(9)面纱
  2. MySQL 超时解决方案mysql报错处理: could not be resolved: getnameinfo() returned error (code: -3)...
  3. 如何使用Azure ML Studio开启机器学习
  4. c#只用一个for输出三角形
  5. 程序员经典面试题,高并发系统,一般需要怎么做
  6. 飞鱼知识变现小程序2.5.3源码_小程序功能模块
  7. 广东理工学院计算机考试大纲,2020年广东理工学院专插本专业课考试大纲汇总...
  8. pands库中的一些函数用法
  9. JAVA后台权限管理系统
  10. 网易云信浏览器WebRTC视频聊天集成
  11. .json格式转为.yml格式
  12. 使用ildasm反编译修改c# dll
  13. 组装电脑基础知识之内存条
  14. 瞬时功率与有功功率计算公式
  15. Free Download Manager
  16. 计算机build是什么意思英语,build是什么意思
  17. 网站seo优化到底该怎么做?
  18. 语句摘抄——第29周
  19. Nginx目录结构、编译参数、状态码概述
  20. 计算机学报模板百度云,计算机学报论文模板.doc

热门文章

  1. 如何搭建一个超级好用的JavaWeb框架?
  2. Iperf使用参数详解
  3. dis反汇编文件的分析理解
  4. JS实现右键拖动元素
  5. remap中的xmap,ymap详解
  6. 新媒体运营:内容运营的核心与技巧
  7. H3C服务器修改HDM密码,H3C服务器配置HDM远程管理系统
  8. H3C服务器配置raid
  9. AT24C16页写和多页写
  10. [极客时间]《算法面试通关40讲》