gpt4 book ai didi

r - 使用 DBSCAN 对 GPS 数据进行聚类,但聚类没有意义(就大小而言)

转载 作者:行者123 更新时间:2023-12-04 11:18:02 27 4
gpt4 key购买 nike

我正在处理 GPS 数据(纬度、经度)。对于基于密度的聚类,我在 R 中使用了 DBSCAN。

就我而言,DBSCAN 的优点:

  • 我不必预先定义集群数量
  • 我可以计算一个距离矩阵(使用Haversine Distance
    公式)并将其用作 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")

  • 现在,当我查看集群时,它们没有意义。一些集群具有相距超过 1 公里的点。我想要密集的集群,但不是那么大。
    MinPts的不同值和 eps 得到照顾,我还使用了 k 最近邻距离图来获得最佳值 epsMinPts =25

    什么 dbscan正在做的是去我数据集中的每个点,如果点 p 有 MinPts在其 eps邻域它将形成一个集群,但同时它也加入了密度可达的集群(我想这对我来说是一个问题)。

    这确实是一个大问题,尤其是“如何在不过多影响其信息的情况下减小集群的大小”,但我将其写为以下几点:
  • 如何删除集群中的边界点?我知道哪些点在
    哪个集群使用 dens$cluster ,但我怎么知道
    特定点是核心还是边界?
  • 集群 0 总是噪音吗?
  • 我的印象是集群的大小将是
    eps 相当.但事实并非如此,因为密度可达
    簇组合在一起。
  • 有没有其他聚类方法具有dbscan的优势?
    但是可以给我更有意义的集群吗?
  • OPTICS是另一种选择,但它会解决我的问题吗?
    Note:有意义的是,我想说更近的点应该在一个集群中。但相距 1 公里或以上的点不应在同一簇中。

    最佳答案

    DBSCAN 没有声称半径是最大簇大小。

    你读过文章吗?它正在寻找任意形状的集群; eps只是一个点的核心大小;大致用于密度估计的大小;核心点半径内的任何点都将成为集群的一部分。

    这使得它本质上是最大值 步长连接密集点。但它们仍可能形成任意形状或大小的密度连接点链。

    我不知道你的 R 实现中的集群 0 是什么。我已经尝试过 R 实现,但它比所有其他实现都慢。我不推荐使用 R,有更好的聚类分析工具可用,例如 ELKI .尝试使用您在 ELKI 上的设置运行 DBSCAN,使用 LatLngDistanceFunction 和 sort-tile-recursive 加载的 R-tree 索引。与 R 相比,您会惊讶于它的速度有多快。

    OPTICS 正在寻找相同的 密度连接集群类型。您确定这种任意形状的簇是您要找的吗?

    恕我直言,你为你的目标使用了错误的方法(你并没有真正解释你想要实现的目标)

    如果您想对簇直径进行硬限制,请使用 完全链接层次聚类 .

    关于r - 使用 DBSCAN 对 GPS 数据进行聚类,但聚类没有意义(就大小而言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20856796/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com