主要内容

clusterDBSCAN

基于密度的数据聚类算法

描述

clusterDBSCAN聚类数据点属于P-维特征空间采用基于密度的应用空间聚类(DBSCAN)算法。聚类算法将特征空间中彼此接近的点分配到单个聚类中。例如,雷达系统可以返回距离、角度和多普勒距离较近的扩展目标的多个探测结果。clusterDBSCAN将这些检测分配给单个检测。

  • DBSCAN算法假设聚类是数据空间中被低密度区域分开的密集区域,所有密集区域具有相似的密度。

  • 为了测量一个点的密度,该算法计算该点附近的数据点的数量。一个社区是一个P特征空间的-维椭圆(超椭圆)。椭圆的半径是由P向量ε。ε可以是标量,在这种情况下,超椭圆变成了超球。利用欧几里得距离度量计算特征空间中点之间的距离。邻域称为ε邻域。ε值由ε财产。ε可以是标量还是P向量:

    • 当特征空间的不同维度有不同的单位时,使用向量。

    • 标量对所有维度都适用相同的值。

  • 集群首先要找到所有核心点。如果一个点在其ε邻域内有足够多的点,则称之为核心点。一个点成为核心点所需的最低分数是由MinNumPoints财产。

  • 核点ε邻域内的剩余点可以是核点本身。如果不是,那就是边境点。ε邻域内的所有点称为直接密度可及从核心点。

  • 如果一个核点的ε邻域包含其他核点,则所有核点的ε邻域内的点合并在一起形成ε邻域并集。这个过程会一直持续下去,直到不能再添加核心点为止。

    • ε邻域并集中的所有点为密度可及从第一个核心点开始。事实上,并集中的所有点都是从并集的所有核心点密度可达的。

    • ε邻域并中的所有点也被称为ε邻域密度连接尽管边界点不一定是可获得的从对方。一个集群是密度连通点的最大集合,可以有任意形状。

  • 不是核心点或边界点的点是噪音点。它们不属于任何集群。

  • clusterDBSCAN对象可以使用k-nearest neighbor search,或者可以指定值。为了让对象估计ε,设置EpsilonSource财产“汽车”

  • clusterDBSCAN对象可以消除包含歧义的数据。距离和多普勒是可能存在模糊数据的例子。集EnableDisambiguation财产真正的消除歧义的数据。

集群检测:

  1. 创建clusterDBSCAN对象,并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

clusterer运算= clusterDBSCAN创建一个clusterDBSCAN对象,clusterer运算,对象的默认属性值。

对聚类的影响

clusterer运算= clusterDBSCAN(名称,值)创建一个clusterDBSCAN对象,clusterer运算,并使用每个指定的属性的名字设置为指定的价值.可以以任意顺序指定其他名称-值对参数,如(Name1Value1,...,).任何未指定的属性都接受默认值。例如,

clusterer运算= clusterDBSCAN (“MinNumPoints”3,‘ε’2,...“EnableDisambiguation”,真的,“AmbiguousDimension”[1, 2]);
属性创建集群EnableDisambiguation属性设置为true,则AmbiguousDimension设置为[1,2]

属性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数打开它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象进行系统设计

ε值的来源,定义ε邻域,指定为“属性”“汽车”

  • 当你设置EpsilonSource财产“属性”, ε是从ε财产。

  • 当你设置EpsilonSource财产“汽车”, ε值使用a自动估计k最近的邻居(k-NN)搜索范围k值从k最小值k马克斯

    k 最小值 MinNumPoints 1 k 马克斯 MaxNumPoints 1

    需要减去1,因为一个点的邻居数不包括点本身,而MinNumPointsMaxNumPoints指的是一个邻域的总点数。

数据类型:字符|字符串

邻域搜索的半径,指定为正标量或正实值1-by-P行向量。P为输入数据中特征的个数,X

ε定义椭圆围绕任意点的半径,以创建ε邻域。当ε为标量,相同半径适用于所有特征维数。你可以通过指定一个正的实值1-来对不同的特征应用不同的值P行向量。行向量创建一个多维椭圆(超椭圆)搜索区域,当数据特征具有不同的物理含义时,如距离和多普勒,这很有用。看到估计ε有关此属性的详细信息。

你可以使用clusterDBSCAN.estimateEpsilonclusterDBSCAN.discoverClusters帮助估计的标量值的目标函数。

例子:21.0 [11]

可调:是的

依赖关系

要启用此属性,请设置EpsilonSource财产“属性”

数据类型:

一个点的ε邻域中使其成为核心点的最小点数,指定为正整数。看到选择最低分数为更多的信息。当物体使用a自动估计k-NN搜索,起始值kk最小值)是MinNumPoints- 1。

例子:5

数据类型:

设置结束k-NN搜索范围,指定为正整数。当物体使用a自动估计k-NN搜索,结束值kk马克斯)是MaxNumPoints- 1。

例子:13

依赖关系

要启用此属性,请设置EpsilonSource财产“汽车”

数据类型:

存储的历史记录的长度,指定为正整数。当设置为1时,历史是无记忆的,这意味着每个估计立即使用,没有移动平均平滑发生。当大于1时,在指定的历史长度上取平均值。

例子:5

依赖关系

要启用此属性,请设置EpsilonSource财产“汽车”

数据类型:

切换以启用维度的消除歧义,指定为真正的.当真正的,集群可以跨输入定义的边界发生amblims在执行。使用AmbiguousDimensions属性指定的列索引X其中可能会出现歧义。你最多可以消除两个维度的歧义。对于大数据集,不建议启用消歧功能。

数据类型:逻辑

模糊维度的索引,指定为正整数或正整数的1 × 2向量。的列X在其中应用消歧。正整数表示输入数据矩阵中的一个模糊维度X.一个1 × 2的行向量指定了两个不明确的维度。大小和顺序AmbiguousDimension必须与对象输入一致吗amblims

例子:[3 - 4]

依赖关系

要启用此属性,请设置EnableDisambiguation财产真正的

数据类型:

使用

描述

例子

idxclusterer运算(=X将输入数据中的点聚类,Xidx包含标识每一行所属集群的id列表X属于。噪声点被赋值为“-1”。

例子

idxclusterids] = clusterer运算(X也返回一个备用的集群id集,clusterids,用于分阶段。RangeEstimator分阶段。DopplerEstimator对象。clusterids为每个噪声点分配一个唯一的ID。

___] = clusterer运算(Xamblims还指定了最小和最大模糊性限制,amblims,以应用于数据。

要启用此语法,请设置EnableDisambiguation财产真正的

___] = clusterer运算(X更新根据输入数据矩阵自动估计,X,当更新被设置为真正的.估计使用k-NN搜索创建一组搜索曲线。有关更多信息,请参见估计ε.这个估计是l最近的值l中指定EpsilonHistoryLength

要启用此语法,请设置EpsilonSource财产“汽车”,可选设置MaxNumPoints属性,并可选地设置EpsilonHistoryLength财产。

___] = clusterer运算(Xamblims更新设置模糊度限制并估计更新被设置为真正的.要启用此语法,请设置EnableDisambiguation真正的并设置EpsilonSource“汽车”

输入参数

全部展开

输入特征数据,指定为实值N——- - - - - -P矩阵。的N行对应于a中的特征点P维特征空间。的P列包含发生集群的特性的值。DBSCAN算法可以对任何类型的数据进行适当的聚类MinNumPointsε设置。例如,一个两列的输入可以包含xy笛卡尔坐标,或者距离和多普勒。

数据类型:

模糊限制,指定为实值1 × 2向量或实值2 × 2矩阵。对于单个模糊性维度,将极限指定为1 × 2向量[MinAmbiguityLimitDimension1, MaxAmbiguityLimitDimension1].对于两个模糊维度,指定极限为2 × 2矩阵[MinAmbiguityLimitDimension1, MaxAmbiguityLimitDimension1;MinAmbiguityLimitDimension2 MaxAmbiguityLimitDimension2].歧义限制允许跨边界进行聚类,以确保对歧义检测进行适当的聚类。

不明确的列X定义于AmbiguousDimension财产。amblims的数据以相同的单位定义最小和最大模糊度限制AmbiguousDimensionX

例子:[0 20;-40 40]

依赖关系

要启用此参数,请设置EnableDisambiguation真正的并设置AmbiguousDimension财产。

数据类型:

启用epsilon估计的自动更新,指定为真正的

  • 真正的,阈值首先被估计为膝盖的平均值k神经网络搜索曲线。然后将估计值添加到其长度的缓冲区中l设置在EpsilonHistoryLength财产。最后使用的是作为平均值计算的l历史缓冲区的长度。如果EpsilonHistoryLength被设置为1,估计是无记忆的。无记忆意味着每个估计立即使用,没有移动平均平滑发生。

  • ,则使用先前的估计。估计是计算密集型的,不推荐用于大型数据集。

依赖关系

要启用此参数,请设置EpsilonSource财产“汽车”并指定MaxNumPoints财产。

数据类型:

输出参数

全部展开

集群索引,作为整数值返回N1列向量。idx表示DBSCAN算法的聚类结果。积极的idx值对应于满足DBSCAN聚类条件的簇。值为'-1'表示DBSCAN噪声点。

数据类型:

可选的集群id,返回为1-by-N正整数的行向量。每个值都是一个唯一标识符,表示一个假设的目标集群。此参数包含所有点(包括噪声)的唯一正簇id。相比之下,idx输出参数用' -1 '标记噪声点。使用clusterids作为相控阵系统工具箱™对象的输入,例如分阶段。RangeEstimator分阶段。DopplerEstimator

数据类型:

对象的功能

要使用对象函数,请指定System对象™作为第一个输入参数。例如,释放名为system的对象的系统资源obj,使用下面的语法:

发行版(obj)

全部展开

clusterDBSCAN.discoverClusters 在数据中查找集群层次结构
clusterDBSCAN.estimateEpsilon 估计邻域聚类阈值
clusterDBSCAN.plot 情节集群
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象

例子

全部折叠

通过测量范围和多普勒来创建扩展对象的探测。假设最大无模糊距离为20米,无模糊多普勒跨度从 - 30. 赫兹, 30. 赫兹。中包含了本示例的数据dataClusterDBSCAN.mat文件。数据矩阵的第一列表示距离,第二列表示多普勒。

输入数据包含以下扩展目标和虚警:

  • 定位于的明确的目标 10 15

  • 多普勒定位的模糊目标 10 - 30.

  • 在距离范围内定位的模糊目标 20. 15

  • 距离和多普勒定位的模糊目标 20. 30.

  • 5假警报

创建一个clusterDBSCAN对象,并指定不通过设置执行消歧EnableDisambiguation.求解聚类指数。

负载(“dataClusterDBSCAN.mat”);cluster1 = clusterDBSCAN (“MinNumPoints”3,‘ε’2,...“EnableDisambiguation”、假);idx = cluster1 (x);

使用clusterDBSCAN情节对象函数显示集群。

情节(cluster1, x, idx)

图集群包含一个轴对象。标题为Clusters的axis对象包含10个类型为line, scatter, text的对象。

图中显示有8个明显簇和6个噪声点。“尺寸1 '标签对应于范围,而'维度2》标签对应多普勒。

接下来,创建另一个clusterDBSCAN对象并设置EnableDisambiguation真正的指定跨距离和多普勒模糊边界执行聚类。

cluster2 = clusterDBSCAN (“MinNumPoints”3,‘ε’2,...“EnableDisambiguation”,真的,“AmbiguousDimension”[1, 2]);

利用模糊度限制进行聚类,然后绘制聚类结果。DBSCAN聚类结果正确显示了4个聚类和5个噪声点。例如,距离为0的点与距离为20米的点聚集在一起,因为最大的明确距离是20米。

amblims = [0 maxRange;minDoppler maxDoppler];idx = cluster2 (x, amblims);情节(cluster2 x, idx)

图集群包含一个轴对象。标题为Clusters的axis对象包含6个类型为line, scatter, text的对象。

利用二维笛卡儿位置数据聚类clusterDBSCAN.为了说明epsilon的选择如何影响聚类,请将与的聚类结果进行比较ε设为1ε设置为3。

中创建随机目标位置数据xy笛卡儿坐标。

2 x =[兰德(20日)+ 12;兰特(20,2)+ 10;兰德(20,2)+ 15);情节(x (: 1) x (:, 2),“。”

图中包含一个轴对象。axis对象包含一个类型为line的对象。

创建一个clusterDBSCAN对象的ε属性设置为1,则MinNumPoints属性设置为3。

clusterer运算= clusterDBSCAN (‘ε’, 1“MinNumPoints”3);

在以下情况下群集数据ε等于1。

idxEpsilon1 clusterer运算(x) =;

再次群集数据,但与ε设置为3。的值可以更改ε因为它是一个可调属性。

clusterer运算。ε=3.; idxEpsilon2 = clusterer(x);

并排绘制聚类结果。通过将坐标轴句柄和标题传递到情节方法。这张图显示了ε设为1,出现三个集群。当ε为3时,两个较低的集群合并为一个。

hAx1 =情节(1、2、1);情节(clusterer运算,x, idxEpsilon1...“父”hAx1,“标题”“ε= 1”) hAx2 = subplot(1,2,2);情节(clusterer运算,x, idxEpsilon2...“父”hAx2,“标题”“ε= 3”

图中包含2个轴对象。标题为Epsilon = 1的轴对象1包含4个类型为散点、文本的对象。标题为Epsilon = 3的坐标轴对象2包含3个类型为scatter, text的对象。

算法

全部展开

参考文献

Ester M., Kriegel h . p ., Sander J., Xu X.。“基于密度的大型空间数据库聚类发现算法”。Proc。第二Int。知识发现与数据挖掘研讨会,波特兰,奥尔特,AAAI出版社,1996,第226-231页。

[2]埃里希·舒伯特,Jörg桑达,马丁·埃斯特,汉斯-彼得·克里格尔,徐晓伟。2017。DBSCAN Revisited, Revisited: Why and How You Should (Still) Use DBSCANACM反式。数据库系统。42,3,第19条(2017年7月),21页。

[3] Dominik Kellner, Jens Klappstein and Klaus Dietmayer,“基于网格的DBSCAN雷达数据扩展目标聚类”,2012 IEEE智能汽车研讨会

[4] Thomas Wagner, Reinhard Feger, and Andreas Stelzer,“一种用于距离/多普勒/DoA测量的快速网格聚类算法”,第十三届欧洲雷达会议论文集

[5] Mihael Ankerst, Markus M. Breunig, Hans-Peter Kriegel, Jörg Sander,《OPTICS:排序点识别集群结构》,Proc. ACM SIGMOD ' 99 Int。关于数据管理的会议1999年,宾夕法尼亚州费城。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

介绍了R2021a