主要内容

DBSCAN

DBSCAN概论

Density-Based空间聚类的应用程序与噪声(DBSCAN)识别任意形状的簇和噪音(异常值)数据。统计和机器学习的工具箱™函数dbscan执行聚类在一个输入数据矩阵或两两之间的距离观察。dbscan返回集群指数和一个向量表示的观察核心分(分簇内)。不像k——集群,DBSCAN算法不需要先验知识集群的数量,和集群不一定是球状。DBSCAN density-based孤立点检测的也很有用,因为它不属于任何集群标识点。

点被指定到一个集群,它必须满足的条件,它的邻域(ε)包含至少一个最小数量的邻居(minpts)。或者,可以躺在另一个点的邻域,满足εminpts条件。DBSCAN算法识别三种观点:

  • 核心观点——一个点在一个集群中,至少有minpts邻居在其邻域

  • 集群中的边界点——点不足minpts邻居在其邻域

  • 噪音点——一个异类,不属于任何集群

DBSCAN与广泛的合作距离度量距离度量,您可以定义一个自定义为您的特定应用程序。距离度量的选择决定了小区的形状。

算法描述

指定值的邻域ε和最小数量的邻居minpts需要一个核心一点,dbscan函数实现DBSCAN如下:

  1. 从输入数据集X,选择第一个标记观察x1作为当前点,并初始化第一个集群标签C为1。

  2. 发现邻域内的点集ε当前的点。这些点是邻居。

    1. 如果邻居的数量小于minpts标签,那么当前的点作为噪声点(或局外人)。步骤4。

      请注意

      dbscan可以重新分配噪声点集群如果噪音点后满足设定的约束εminpts从其他角度X。这个过程会发生重新分配点的边界点的一个集群。

    2. 否则,标签当前点作为核心点属于集群C

  3. 遍历每个邻居(新的当前点),重复步骤2,直到没有发现新邻居,可以贴上属于当前集群C

  4. 选择下一个标记点X作为当前点,提高集群数1。

  5. 重复步骤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],“颜色”,“黑”)

图包含一个坐标轴对象。坐标轴对象标题ε= 2和minpts = 50包含12线类型的对象。这些对象代表1,1,2,3,4,5,6,7,8,9,10,11。

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],“颜色”,“黑”)

图包含一个坐标轴对象。坐标轴对象标题ε= 1和minpts = 50包含17线类型的对象。这些对象代表1,1,2,3,4,5,6,7,8,9,10,11,12、13、14、15、16。

通过使用一个更小的ε值,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],“颜色”,“黑”)

图包含一个坐标轴对象。坐标轴对象标题ε= 1.55和minpts = 50包含16线类型的对象。这些对象代表1,1,2,3,4,5,6,7,8,9,10,11,12、13、14、15。

dbscan更好地识别集群时吗ε被设置为1.55。例如,函数标识不同的集群用红笔圈出来的,黑色的,蓝色(中心(3、4)、(18)和(2.5,18),分别)。

引用

[1]酯,M。,H.-P。Kriegel, j·桑德,x小薇。“density-based发现算法在大型空间数据库集群的噪音。“在第二届国际研讨会论文集在数据库知识发现和数据挖掘,226 - 231。波特兰,或:AAAI出版社,1996年。

相关的话题