DBSCAN
DBSCAN概论
Density-Based空间聚类的应用程序与噪声(DBSCAN)识别任意形状的簇和噪音(异常值)数据。统计和机器学习的工具箱™函数dbscan
执行聚类在一个输入数据矩阵或两两之间的距离观察。dbscan
返回集群指数和一个向量表示的观察核心分(分簇内)。不像k——集群,DBSCAN算法不需要先验知识集群的数量,和集群不一定是球状。DBSCAN density-based孤立点检测的也很有用,因为它不属于任何集群标识点。
点被指定到一个集群,它必须满足的条件,它的邻域(ε
)包含至少一个最小数量的邻居(minpts
)。或者,可以躺在另一个点的邻域,满足ε
和minpts
条件。DBSCAN算法识别三种观点:
核心观点——一个点在一个集群中,至少有
minpts
邻居在其邻域集群中的边界点——点不足
minpts
邻居在其邻域噪音点——一个异类,不属于任何集群
DBSCAN与广泛的合作距离度量距离度量,您可以定义一个自定义为您的特定应用程序。距离度量的选择决定了小区的形状。
算法描述
指定值的邻域ε
和最小数量的邻居minpts
需要一个核心一点,dbscan
函数实现DBSCAN如下:
从输入数据集
X
,选择第一个标记观察x1作为当前点,并初始化第一个集群标签C为1。发现邻域内的点集
ε
当前的点。这些点是邻居。如果邻居的数量小于
minpts
标签,那么当前的点作为噪声点(或局外人)。步骤4。请注意
dbscan
可以重新分配噪声点集群如果噪音点后满足设定的约束ε
和minpts
从其他角度X
。这个过程会发生重新分配点的边界点的一个集群。否则,标签当前点作为核心点属于集群C。
遍历每个邻居(新的当前点),重复步骤2,直到没有发现新邻居,可以贴上属于当前集群C。
选择下一个标记点
X
作为当前点,提高集群数1。重复步骤2 - 4,直到所有点
X
已经标记出来。
确定DBSCAN参数的值
这个例子展示了如何选择的值ε
和minpts
的参数dbscan
。激光雷达扫描数据集,存储为3 d点的集合,包含对象的坐标周围的车辆。
负载、预处理和可视化数据集。
加载x, y, z对象的坐标。
负载(“lidar_subset.mat”)X = lidar_subset;
强调车辆周围的环境,设置感兴趣区域跨度20米左右的车辆,在车辆的前后20米,和上面的区域道路的表面。
xBound = 20;%在米yBound = 20;%在米zLowerBound = 0;%在米
农作物数据只包含点在指定的区域内。
指数= X (: 1) < = xBound & X (: 1) > = -xBound…与X (:, 2) < = yBound & X (:, 2) > = -yBound…与X (:, 3) > zLowerBound;X = X(指数:);
可视化数据的二维散点图。注释情节突出了车辆。
散射(X (: 1) X (:, 2),“。”);注释(“椭圆”(0.48 - 0.48。1。1),“颜色”,“红色”)
点集的中心(用红笔圈出来的)包含车辆的屋顶和罩。所有其他点障碍。
选择一个值minpts
。
选择一个值minpts
,考虑一个值大于或等于1 +输入数据的维数[1]。例如,对于一个n
——- - - - - -p
矩阵X
,设置的价值“minpts”
大于或等于p+ 1
。
对于给定的数据集,指定一个minpts
值大于或等于4,特别是价值50。
minpts = 50;%为核心点最小数量的邻居
选择一个值ε
。
一个策略为估算值ε
是生成一个k——远程图形的输入数据X
。每一个点的X
,找到距离kth最近的点,情节分类分这个距离。图包含一个膝盖。对应于膝盖的距离通常是一个不错的选择ε
,因为它是地区点开始下降到离群值(噪音)[1]。
在策划k——远程图,第一个发现minpts
最小的两两距离的观测X
以升序排序。
kD = pdist2 (X, X,“euc”,“最小”,minpts);
画出k——远程图。
情节(排序(kD(最终,:)));标题(“英里的距离图”)包含(“最近的距离与50分排序”)ylabel (“50最近的距离”网格)
膝盖周围似乎是2;因此,设置的值ε
2。
ε= 2;
集群使用dbscan
。
使用dbscan
的值minpts
和ε
在前面的步骤中确定。
标签= dbscan (X,ε,minpts);
可视化集群和注释图强调特定的集群。
numGroups =长度(独特(标签);gscatter (X (: 1) X(:, 2),标签,hsv (numGroups));标题(ε= 2和minpts = 50)网格注释(“椭圆”[0.54 - 0.41 . 07 . 07],“颜色”,“红色”)注释(“椭圆”[0.53 - 0.85 . 07 . 07],“颜色”,“蓝”)注释(“椭圆”[0.39 - 0.85 . 07 . 07],“颜色”,“黑”)
dbscan
确定11集群和一个组的噪声点。该算法还确定车辆的中心点集作为一种独特的集群。
dbscan
识别一些独特的群体,如集群圈黑色(和围绕(6日18))和集群圈蓝色的(和围绕(2.5,18))。函数也分配组点用红笔圈出来的(和围绕(3、4
)相同的集群(7)组群点东南象限的阴谋。预计这些组织应该在单独的集群。
使用一个较小的值ε
分拆大集群,进一步分区点。
epsilon2 = 1;labels2 = dbscan (X, epsilon2 minpts);
可视化集群和注释图强调特定的集群。
numGroups2 =长度(独特(labels2));gscatter (X (: 1) X (:, 2), labels2, hsv (numGroups2));标题(ε= 1和minpts = 50)网格注释(“椭圆”[0.54 - 0.41 . 07 . 07],“颜色”,“红色”)注释(“椭圆”[0.53 - 0.85 . 07 . 07],“颜色”,“蓝”)注释(“椭圆”[0.39 - 0.85 . 07 . 07],“颜色”,“黑”)
通过使用一个更小的ε值,dbscan
能够分配的点用红笔圈出来的一种独特的集群(13)。然而,一些集群dbscan
正确地确定之前现在集群分离点和异常值。例如,见集群组2(黑色圆圈)和集群组3(蓝圈)。正确的ε
值介于1和2之间。
使用一个ε
的价值1.55
集群数据。
epsilon3 = 1.55;labels3 = dbscan (X, epsilon3 minpts);
可视化集群和注释图强调特定的集群。
numGroups3 =长度(独特(labels3));gscatter (X (: 1) X (:, 2), labels3, hsv (numGroups3));标题(ε= 1.55和minpts = 50)网格注释(“椭圆”[0.54 - 0.41 . 07 . 07],“颜色”,“红色”)注释(“椭圆”[0.53 - 0.85 . 07 . 07],“颜色”,“蓝”)注释(“椭圆”[0.39 - 0.85 . 07 . 07],“颜色”,“黑”)
dbscan
更好地识别集群时吗ε
被设置为1.55
。例如,函数标识不同的集群用红笔圈出来的,黑色的,蓝色(中心(3、4
)、(18)和(2.5,18),分别)。
引用
[1]酯,M。,H.-P。Kriegel, j·桑德,x小薇。“density-based发现算法在大型空间数据库集群的噪音。“在第二届国际研讨会论文集在数据库知识发现和数据挖掘,226 - 231。波特兰,或:AAAI出版社,1996年。