基于密度的噪声应用的空间聚类(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。
查找epsilon街区内的一组点ε
当前点的。这些点是相邻的。
如果邻居数量小于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。