DBSCAN

✍ dations ◷ 2025-07-04 00:21:04 #DBSCAN

DBSCAN,英文全写为Density-based spatial clustering of applications with noise ,是在 1996 年由Martin Ester, Hans-Peter Kriegel, Jörg Sander 及 Xiaowei Xu 提出的聚类分析算法, 这个算法是以密度为本的:给定某空间里的一个点集合,这算法能把附近的点分成一组(有很多相邻点的点),并标记出位于低密度区域的局外点(最接近它的点也十分远),DBSCAN 是其中一个最常用的聚类分析算法,也是其中一个科学文章中最常引用的。

在 2014 年,这个算法在领头数据挖掘会议 KDD 上获颁发了 Test of Time award,该奖项是颁发给一些于理论及实际层面均获得持续性的关注的算法。

考虑在某空间里将被聚类的点集合,为了进行 DBSCAN 聚类,所有的点被分为、及,详请如下:

如果 p 是核心点,则它与所有由它可达的点(包括核心点和非核心点)形成一个聚类,每个聚类拥有最少一个核心点,非核心点也可以是聚类的一部分,但它是在聚类的“边缘”位置,因为它不能达至更多的点。

“可达性”(英文:Reachability )不是一个对称关系,因为根据定义,没有点是由非核心点可达的,但非核心点可以是由其他点可达的。所以为了正式地界定 DBSCAN 找出的聚类,进一步定义两点之间的“连结性”(英文:Connectedness) :如果存在一个点 使得点 和点 都是由 可达的,则点 和点 被称为(密度)连结的,而连结性是一个对称关系。

定义了连结性之后,每个聚类都符合两个性质:

DBSCAN 需要两个参数:ε (eps) 和形成高密度区域所需要的最少点数 (minPts),它由一个任意未被访问的点开始,然后探索这个点的 ε-邻域,如果 ε-邻域里有足够的点,则建立一个新的聚类,否则这个点被标签为杂音。注意这个点之后可能被发现在其它点的 ε-邻域里,而该 ε-邻域可能有足够的点,届时这个点会被加入该聚类中。

如果一个点位于一个聚类的密集区域里,它的 ε-邻域里的点也属于该聚类,当这些新的点被加进聚类后,如果它(们)也在密集区域里,它(们)的 ε-邻域里的点也会被加进聚类里。这个过程将一直重复,直至不能再加进更多的点为止,这样,一个密度连结的聚类被完整地找出来。然后,一个未曾被访问的点将被探索,从而发现一个新的聚类或杂音。

算法可以以下伪代码表达,当中变数根据原本刊登时的命名:

DBSCAN(D, eps, MinPts) {   C = 0   for each point P in dataset D {      if P is visited         continue next point      mark P as visited      NeighborPts = regionQuery(P, eps)      if sizeof(NeighborPts) < MinPts         mark P as NOISE      else {         C = next cluster         expandCluster(P, NeighborPts, C, eps, MinPts)      }   }}expandCluster(P, NeighborPts, C, eps, MinPts) {   add P to cluster C   for each point P' in NeighborPts {       if P' is not visited {         mark P' as visited         NeighborPts' = regionQuery(P', eps)         if sizeof(NeighborPts') >= MinPts            NeighborPts = NeighborPts joined with NeighborPts'      }      if P' is not yet member of any cluster         add P' to cluster C   }}regionQuery(P, eps)   return all points within P's eps-neighborhood (including P)

注意这个算法可以以下方式简化:其一,"has been visited" 和 "belongs to cluster C" 可被结合起来,另外 "expandCluster" 副程式不必被抽出来,因为它只在一个位置被调用。以上算法没有以简化方式呈现,以反映原本出版的版本。另外,regionQuery 是否包含 P 并不重要,它等价于改变 MinPts 的值。

DBSCAN 对数据库里的每一点进行访问,可能多于一次(例如作为不同聚类的候选者),但在现实的考虑中,时间复杂度主要受regionQuery 的调用次数影响,DBSCAN 对每点都进行刚好一次调用,且如果使用了特别的编号结构,则总平均时间复杂度为 O(n log n) ,最差时间复杂度则为 O(n^2) 。可以使用 O(n^2) 空间复杂度的距离矩阵以避免重复计算距离,但若不使用距离矩阵,DBSCAN 的空间复杂度为 O(n)。

相关

  • 淳于意淳于意(前205年-前150年),临淄(今山东淄博)人,汉初著名医学家,因其曾任太仓令(或曰太仓长),故世称“仓公”。仓公曾拜公孙光为师,学习古代的医学典籍和临床经验。公孙光又推荐仓公去向公
  • 埃里森·莫瑞埃里森·莫瑞,(Alison Murray) 美国生物化学研究家,南极研究家,以论证南极冰封湖泊(维达湖)中微生物的存在而著名。她研究极度严寒严酷环境中微生物(包括缺乏氧气和生物能量源的微
  • 乔清秀乔清秀(1910年7月4日-1944年3月7日),原名袁金秀,出生于河南省内黄县,河南坠子演员。袁金秀自小爱唱戏,13岁的时候,被坠子艺人乔利元收为徒弟,并为其更名乔清秀,沿街串巷,边表演边学艺。
  • 泰格德 (俄勒冈州)泰格德(英语:Tigard,/ˈtaɪɡərd/)是一个位在美国俄勒冈州华盛顿县的城市。
  • 哈特曼数哈特曼数 (Hartmann number,Ha) 是电磁力和黏滞力之间的比例,最早是由丹麦物理学家朱利叶斯·哈特曼(Julius Hartmann,1881-1951)开始使用,定义为:其中
  • 黄柔闽黄柔闽(1967年-),原名黄淑瑛,台湾女演员暨教师,曾于2002年获得金钟奖最佳女配角。黄柔闽生于屏东,长于台南,毕业于台南女中、台北市立师范学院音乐系,主修钢琴与小提琴,曾在国小教书三
  • 没骨气《没骨气》(日语:女々しくて/めめしくて  */?;或译为《娘娘的》)是日本乐队Golden Bomber的第7张单曲,于2009年10月21日由Zany Zap发行,及后在第11
  • 南海泡沫事件南海泡沫事件(英语:South Sea Bubble)是英国在1720年春天到秋天之间发生的经济泡沫,与同年的密西西比泡沫事件及1637年的郁金香狂热并称欧洲早期“三大经济泡沫”。“经济泡沫”一语即源于南海泡沫事件。事件起因源于南海公司(英语:South Sea Company),南海公司在1711年西班牙王位继承战争仍然进行时创立,表面上是专营英国与南美洲等地贸易的特许公司,但实际是协助政府融资的私人机构,分担政府因战争而欠下的债务。南海公司在夸大业务前景及进行舞弊的情况下获外界看好,到1720年,南海
  • 903年
  • yoyo鹿鸣yoyo鹿鸣(简称“鹿鸣”,英语:Lumi)是由米哈游所制作的以动作捕捉为基础的女性虚拟主播。该角色也在该公司的一款桌面动态壁纸软件《人工桌面》中登场。鹿鸣的视频在bilibili、抖音、YouTube(英语)等平台播出。2020年5月14日,bilibili账号“VAN0va”上传了第一个舞蹈视频《N0va LookDev Test》,简介提到“Here's an initial test of the mocap pipeline that we will be implementing in our