Eps,DBSCAN中哪些点数

时间:2014-05-12 10:35:09

标签: machine-learning cluster-computing cluster-analysis dbscan

在DBSCAN中,如果我们有minPoints = 3并且我们想确定一个点是否是一个核心点,你是否在Eps中计算点本身还是需要在其Eps中有3个其他点?

2 个答案:

答案 0 :(得分:1)

DBSCAN是一种具有数据库上下文的算法。

为了获得良好的性能,您需要一个可以使用索引加速此类查询的数据库 - 这会将运行时从O(n^2)减少到O(n log n)

如果您将范围查询发送到数据库,它将返回所有此区域内的对象,包括查询点。您必须从结果中手动删除查询点。

但从逻辑的角度来看:这是一个密度度量。为什么密度估计必须排除查询对象?它是数据集的一部分,它应该像任何其他对象一样对密度做出贡献!

我没有看到为什么应该从每个查询的数据集中删除查询点的任何原因。

答案 1 :(得分:0)

根据维基百科中提供的算法,点P的区域查询会返回P's eps邻域内的所有点,包括P

这是算法(来自Wikipedia

DBSCAN(D, eps, MinPts)
   C = 0
   for each unvisited point P in dataset D
      mark P as visited
      NeighborPts = regionQuery(P, eps)
      if sizeof(NeighborPts) < MinPts
         mark P as NOISE
      else
         C = next cluster
         expandCluster(P, NeighborPts, C, eps, MinPts)

expandCluster(P, NeighborPts, C, eps, MinPts)
   add P to cluster C
   for each point P' in NeighborPts 
      if P' is not visited
         mark P' as visited
         NeighborPts' = regionQuery(P', eps)
         if sizeof(NeighborPts') >= MinPts
            NeighborPts = NeighborPts joined with NeighborPts'
      if P' is not yet member of any cluster
         add P' to cluster C

regionQuery(P, eps)
   return all points within P's eps-neighborhood (including P)

由于核心点被定义为具有MinPtsEps的点数更多的点,我会说在确定它是否是核心点时会对点本身进行计数。 / p>