基于密度的噪声应用空间聚类(DBSCAN)
如果你使用pdist2
预先编译D
,不指定“最小的”
或“最大”
的名称-值对参数pdist2
选择或排序的列D
.选择不到n距离会导致错误,因为dbscan
预计D
成为一个方阵。对每列中的距离进行排序D
导致解释上的缺失D
并且在使用时,会给出无意义的结果dbscan
函数。
为了有效地使用内存,请考虑传入D
作为一个逻辑矩阵而不是一个数字矩阵dbscan
当D
很大。默认情况下,MATLAB®使用8字节(64位)将每个值存储在数字矩阵中,使用1字节(8位)将每个值存储在逻辑矩阵中。
选择的值minpts
,考虑一个大于或等于输入数据的维数加上一个[1]的值。例如,对于ann——- - - - - -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
观察。
[1] Ester, M., h . p .克里格尔,J.桑达,肖伟。“一种基于密度的算法,用于在有噪声的大型空间数据库中发现集群。”在数据库和数据挖掘中第二次知识发现国际会议的诉讼程序, 226 - 231。波特兰,奥尔特:AAAI出版社,1996。