Density-based空间聚类的应用程序与噪声(DBSCAN)
如果你使用pdist2
预先执行D
,不指定“最小”
或“最大”
名称-值对的观点pdist2
选择或排序的列D
。选择不到n距离会导致错误,因为dbscan
预计D
一个方阵。每一列的排序的距离D
导致损失的解释D
在使用时,可以给毫无意义的结果dbscan
函数。
为高效的内存使用情况,考虑传入D
作为一个逻辑矩阵而不是一个数字矩阵dbscan
当D
很大。默认情况下,MATLAB®将每个值存储在一个数字矩阵使用8个字节(64位),和每个值逻辑矩阵使用1个字节(8位)。
选择一个值minpts
,考虑一个值大于或等于输入数据的维数+ 1 [1]。例如,对于一个n——- - - - - -p矩阵X
,设置“minpts”
等于p+ 1或更高。
一个可能的战略选择的值ε
是生成一个k——远程图X
。每一个点的X
,找到距离kth最近的点,情节分类分这个距离。一般来说,图形包含一个膝盖。对应于膝盖的距离通常是一个不错的选择ε
,因为它是地区点开始下降到离群值(噪音)[1]。
DBSCAN是density-based聚类算法的目的是发现集群和数据中的噪声。算法识别三种点:核心点,边界点,和噪声点[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]酯,M。,H.-P。Kriegel, j·桑德,x小薇。“density-based发现算法在大型空间数据库集群的噪音。“在第二届国际研讨会论文集在数据库知识发现和数据挖掘,226 - 231。波特兰,或:AAAI出版社,1996年。