基于密度的噪声应用的空间聚类(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.
中,选择所述第一未标记的观测X.1作为当前点,并初始化第一个集群标签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年。