DBSCAN用于按位置和密度聚类数据

Pau*_*aul 7 r cluster-analysis machine-learning data-mining dbscan

我正在使用dbscan :: dbscan方法,以便按位置和密度对数据进行聚类.

我的数据如下:

str(data)
'data.frame': 4872 obs. of 3 variables:
 $ price    : num ...
 $ lat      : num ...
 $ lng      : num ...
Run Code Online (Sandbox Code Playgroud)

现在我正在使用以下代码:

EPS = 7
cluster.dbscan <- dbscan(data, eps = EPS, minPts = 30, borderPoints = T, 
search = "kdtree")
plot(lat ~ lng, data = data, col = cluster.dbscan$cluster + 1L, pch = 20)
Run Code Online (Sandbox Code Playgroud)

但结果并不令人满意,这一点并没有真正聚集在一起.

在此输入图像描述

我想很好地定义集群,如下所示: 在此输入图像描述

我还尝试使用决策树分类器树:树更好用,但我不知道它是否真的是一个好的分类.

文件:

http://www.file-upload.net/download-11246655/file.csv.html

题:

  • 有可能实现我想要的吗?
  • 我使用正确的方法吗?
  • 我应该多玩参数吗?如果是的话,用哪个?

Ano*_*sse 12

这是使用全新的HDBSCAN*算法进行仔细的基于密度的聚类的输出.

使用Haversine距离,而不是Euclidean!

它确定了大约50个区域,它们比周围环境密集得多.在这个图中,一些集群看起来好像只有3个元素,但它们确实有更多.

在此输入图像描述

最外面的区域,这些是完全不属于任何集群的噪点!

(所用的参数:-verbose -dbc.in file.csv -parser.labelIndices 0,1 -algorithm clustering.hierarchical.extraction.HDBSCANHierarchyExtraction -algorithm SLINKHDBSCANLinearMemory -algorithm.distancefunction geo.LatLngDistanceFunction -hdbscan.minPts 20 -hdbscan.minclsize 20)

OPTICS是另一种基于密度的算法,结果如下:

在此输入图像描述

同样,我们有一个"噪音"区域,红点根本不密集.

使用的参数: -verbose -dbc.in file.csv -parser.labelIndices 0,1 -algorithm clustering.optics.OPTICSXi -opticsxi.xi 0.1 -algorithm.distancefunction geo.LatLngDistanceFunction -optics.minpts 25

此数据集的OPTICS图如下所示:

在此输入图像描述

您可以看到有许多与群集相对应的小山谷.但这里没有"大"的结构.

您可能正在寻找这样的结果:

在此输入图像描述

但事实上,这是一种毫无意义且相当随机的方式将数据分成大块.当然,它可以最大限度地减少差异; 但它根本不关心数据的结构.一个群集内的点通常比不同群集中的点具有更少的共同点.只需看看红色,橙色和紫色星团边界处的点.

最后但并非最不重要的是,旧时代:具有完整链接的层次聚类:

在此输入图像描述

和树状图:

在此输入图像描述

(所用的参数:-verbose -dbc.in file.csv -parser.labelIndices 0,1 -algorithm clustering.hierarchical.extraction.SimplifiedHierarchyExtraction -algorithm AnderbergHierarchicalClustering -algorithm.distancefunction geo.LatLngDistanceFunction -hierarchical.linkage CompleteLinkageMethod -hdbscan.minclsize 50)

还不错.完整的链接也可以很好地处理这些数据.但是您可以合并或拆分这些集群中的任何一个.

  • 我在这些情节中使用了ELKI,因为它非常支持Haversine距离. (2认同)