sau*_*sau 5 r cluster-analysis dbscan
我正在处理GPS数据(纬度,经度).对于基于密度的聚类,我在R中使用了DBSCAN.
在我的案例中DBSCAN的优点:
我可以计算距离矩阵(使用Haversine距离公式)并将其用作dbscan中的输入
library(fossil)
dist<- earth.dist(df, dist=T) #df is dataset containing lat long values
library(fpc)
dens<-dbscan(dist,MinPts=25,eps=0.43,method="dist")
Run Code Online (Sandbox Code Playgroud)现在,当我看到集群时,它们没有意义.有些星团的点数相差超过1公里.我想要密集的群集,但不是那么大.
考虑到不同的值MinPts和eps,并且我还使用k最近邻距离图来获得epsfor MinPts= 25 的最佳值
我dbscan正在做的是进入我的数据集中的每个点,如果点p MinPts在其eps邻域中有一个集群,但同时它也加入了密度可达的集群(我猜这对我来说是个问题) .
这真的是一个很大的问题,特别是"如何在不过多影响其信息的情况下减少集群的大小",但我会将其写下来,如下所示:
dens$cluster,但我怎么知道特定点是核心还是边界?eps.但事实并非如此,因为密度可达集群被组合在一起.dbscan
但可以给我更有意义的聚类?OPTICS 是另一种选择,但它会解决我的问题吗?
Note:有意义的我想说更接近的点应该在一个集群中.但是相距1km或更远的点不应该在同一个簇中.
DBSCAN没有声称半径是最大簇大小.
你读过这篇文章吗?它正在寻找任意形状的集群; eps只是一个点的核心大小 ; 大致用于密度估算的大小; 核心点半径范围内的任何点都将成为集群的一部分.
这使得它基本上是连接密集点的最大步长.但它们仍然可能形成一系列密度连接点,具有任意形状或大小.
我不知道你的R实现中的集群0是什么.我已经尝试了R实现,但它是waaaay比其他人慢.我不建议使用R,有更好的工具可用于聚类分析,例如ELKI.尝试使用您在ELKI上的设置运行DBSCAN,使用LatLngDistanceFunction和sort-tile-recursive加载的R-tree索引.与R相比,你会感到惊讶它的速度有多快
OPTICS正在寻找相同密度连接类型的集群.你确定这种任意形状的簇是你正在寻找的吗?
恕我直言,你使用了错误的方法来实现你的目标(你并没有真正解释你想要实现的目标)
如果要对簇直径进行硬限制,请使用完全链接层次聚类.
| 归档时间: |
|
| 查看次数: |
6613 次 |
| 最近记录: |