dbscan
基于密度的带噪声应用的空间聚类
语法
描述
例子
输入参数
输出参数
更多关于
提示
如果你使用
pdist2
预先执行D
,不指定“最小”
或“最大”
的名称-值对参数pdist2
对…的列进行选择或排序D
.选择少于n距离会导致错误,因为dbscan
预计D
是一个方阵。的每一列的距离排序D
导致了在诠释上的失落D
并且在使用时会给出无意义的结果dbscan
函数。为了有效地使用内存,可以考虑传入
D
作为一个逻辑矩阵,而不是一个数字矩阵dbscan
当D
很大。默认为MATLAB®使用8字节(64位)将每个值存储在数值矩阵中,使用1字节(8位)将每个值存储在逻辑矩阵中。为选择一个值
minpts
,考虑一个大于或等于输入数据的维数加一个[1]的值。例如,对于一个n——- - - - - -p矩阵X
,设置“minpts”
等于p+1或更大。选择值的一种可能策略
ε
就是生成一个k-距离图X
.对于中的每一点X
,求到的距离k最近的点,然后根据这个距离画出排序的点。通常,图中包含一个膝盖。与膝盖对应的距离通常是一个很好的选择ε
,因为它是点开始逐渐减少到异常值(噪声)区域[1]的区域。
算法
DBSCAN是一种基于密度的聚类算法,用于发现数据中的聚类和噪声。算法识别出三种点:核心点、边界点和噪声点[1]。对于指定的值
ε
而且minpts
,dbscan
函数实现算法如下:从输入数据集中
X
,选择第一个未标记的观测值x1作为当前点,并初始化第一个集群标签C为1。在邻域内找到点的集合
ε
当前点的。这些点是相邻点。如果邻居数小于
minpts
,然后将当前点标记为噪声点(或异常值)。转步骤4。请注意
dbscan
是否可以将噪声点重新分配给集群,如果噪声点后来满足ε
而且minpts
从另一个点X
.这个重新分配点的过程发生在集群的边界点上。否则,将当前点标记为属于集群的核心点C.
遍历每个邻居(新的当前点)并重复步骤2,直到没有发现可以标记为属于当前集群的新邻居C.
选择中下一个未标记的点
X
作为当前点,并将集群计数增加1。重复步骤2-4,直到所有指向
X
已经标记出来。
如果两个簇具有不同的密度并且彼此接近,即两个边界点(每个簇有一个)之间的距离小于
ε
,然后dbscan
可以将两个集群合并为一个。每个有效集群可能不包含至少
minpts
观察。例如,dbscan
可以识别属于彼此靠近的两个集群的边界点。在这种情况下,算法将边界点分配给第一个发现的聚类。因此,第二个集群仍然是一个有效的集群,但它可以小于minpts
观察。
参考文献
酯,M., h . p。Kriegel, J. Sander, X. Xiaowei。“一种基于密度的算法,用于在有噪声的大型空间数据库中发现集群。”在第二届数据库和数据挖掘中的知识发现国际会议论文集, 226 - 231。波特兰:AAAI出版社,1996年。
版本历史
在R2019a中引入