基于密度的噪声应用空间聚类(DBSCAN)
如果你使用pdist2
预计算D
,不指定“最小的”
或“最大”
的名称-值对参数pdist2
选择或排序的列D
.选择少于N距离会导致错误,因为聚类算法
预计D
成为一个方阵。对每列中的距离进行排序D
导致解释上的缺失D
并且在使用时,会给出无意义的结果聚类算法
作用
为了有效地使用内存,请考虑通过D
作为逻辑矩阵而不是数字矩阵聚类算法
当D
很大。默认情况下,MATLAB®使用8字节(64位)将每个值存储在数字矩阵中,使用1字节(8位)将每个值存储在逻辑矩阵中。
选择的值明普茨
,考虑一个大于或等于输入数据的维数加上一个[1]的值。例如,对于anN——- - - - - -P矩阵X
设置“明普特”
等于P+1或更大。
选择值的一种可能的策略ε
就是生成一个K——远程图X
.每一点X
,求距离K最近的点,并根据这个距离画出已排序的点。通常,图中包含一个膝盖。与膝盖对应的距离通常是一个很好的选择ε
,因为它是点开始拖尾到离群(噪声)区域[1]的区域。
DBSCAN是一种基于密度的聚类算法,旨在发现数据中的聚类和噪声。该算法识别出三种点:核心点、边界点和噪声点[1]。的指定值ε
和明普茨
这个聚类算法
函数实现算法如下:
从输入数据集X
,选择第一个未标记的观测值x1.作为当前点,并初始化第一个集群标签C为1。
找到epsilon邻域内的点集ε
当前点的。这些点是相邻的。
如果邻居数量小于明普茨
,然后将当前点标记为噪声点(或离群值)。请转步骤4。
笔记
聚类算法
如果噪声点稍后满足由ε
和明普茨
从另一个角度来看X
.这种重新分配点的过程发生在集群的边界点上。
否则,将当前点标记为属于集群的核心点C.
迭代每个邻居(新的当前点)并重复步骤2,直到没有发现可以标记为属于当前集群的新邻居C.
在中选择下一个未标记的点X
作为当前点,并将群集计数增加1。
重复步骤2-4,直到所有点都到位X
都贴上了标签。
如果两个星团密度不同且彼此接近,即两个边界点(每个星团一个)之间的距离小于ε
然后聚类算法
可以将两个集群合并为一个。
每个有效的集群可能不包含至少明普茨
观察。例如,聚类算法
可以识别属于两个相互靠近的群集的边界点。在这种情况下,算法将边界点分配给第一个发现的群集。因此,第二个群集仍然是有效群集,但其数量可以少于明普茨
观察。
[1] Ester, M., h . p .克里格尔,J.桑达,肖伟。“一种基于密度的算法,用于在有噪声的大型空间数据库中发现集群。”在第二届数据库知识发现和数据挖掘国际会议论文集,226-231。波特兰,或:AAAI出版社,1996年。