【问题标题】:DBSCAN using spatial and temporal dataDBSCAN 使用空间和时间数据
【发布时间】:2015-08-16 16:03:33
【问题描述】:

我正在查看具有 lat、lng 和事件日期/时间的数据点。我在查看聚类算法时遇到的一种算法是 DBSCAN。虽然它在聚类 lat 和 lng 方面效果很好,但我担心它会在合并时间信息时分崩离析,因为它的规模或距离类型不同。

将时间数据合并到 DBSCAN 算法中有哪些选择?

【问题讨论】:

    标签: machine-learning cluster-analysis data-mining dbscan


    【解决方案1】:

    tl;博士您将不得不修改您的功能集,即缩放您的日期/时间以匹配您的地理数据的大小。

    DBSCAN 的输入只是一个向量,算法本身并不知道一个维度(时间)比另一个维度(距离)大或小几个数量级。因此,在计算数据点的密度时,缩放的差异会搞砸。

    现在我想您可以修改算法本身以区别对待不同的维度。这可以通过更改两点之间“距离”的定义来完成,即提供您自己的距离函数,而不是使用默认的欧几里得距离。

    恕我直言,不过,更简单的做法是缩放一个维度以匹配另一个维度。只需将您的时间值乘以一个固定的线性因子,使它们与地理值处于同一数量级,您就可以开始了。

    更一般地说,这是特征选择过程的一部分,可以说是解决任何机器学习算法的最重要部分。选择正确的特征,并正确地转换它们,你就成功了一半以上。

    【讨论】:

    • DBSCAN 不需要向量形式的数据。
    • @Anony-Mousse 你是什么意思?否则您将如何表示数据?
    • 矩阵、张量、非结构化文本(不在 tf-idf VSM 中)。 DBSCAN 的输入数据没有限制。
    • @Anony-Mousse 谢谢。我一直认为 DBSCAN 计算 n 维空间中点的密度,因此只接受向量。您是否有任何将非结构化文本作为输入的示例?代码,文件等?这就是我自己使用 DBSCAN 的目的。
    • 也许在我对这个问题的回答中的参考资料中。
    【解决方案2】:

    查找同一作者的 Generalized DBSCAN。

    桑德,约尔格;酯,马丁;克里格尔,汉斯-彼得;徐小伟(1998)。 空间数据库中基于密度的聚类:GDBSCAN 算法及其应用。数据挖掘和知识发现(柏林:Springer-Verlag)2(2):169–194。 doi:10.1023/A:1009745219419.

    对于(广义)DBSCAN,您需要两个函数:

    1. findNeighbors - 从您的数据库中获取所有“相关”对象

    2. corePoint - 决定这个集合是否足以启动集群

    然后你可以反复寻找邻居来增长集群。

    功能 1 是您想要挂钩的地方,例如通过使用两个阈值:一个是地理阈值,一个是时间阈值(即 100 英里内和 1 小时内)。

    【讨论】:

    • ST-DBSCAN 是另一种似乎能够处理时间数据的算法。看起来它以类似的方式工作(设置两个阈值)。
    • 我的问题也与上述类似,我的数据集包括 GPS 坐标,并且每个纬度/经度值都带有时间戳。 ELKI 中有五个邻域函数(当我选择 GDBScan 时):EpsilonNeighborPredicate、COPACNeighborPredicate、ERiCNeighborPredicate、FourCNeighborPredicate、PreDeConNeighborPredicate。但我不确定使用哪一个。有什么建议吗?
    • 定义你自己的,适应位置为想适应位置,适应时间想适应时间.h跨度>
    • 我想知道数据的缩放(或标准化),包括将时间转换为“自 X 以来的秒数”向量是否应该能够正确执行此操作?
    • 这更有意义 并且 是可用的 并且 是直截了当且易于定义两个阈值:最多 10 英里以外 和 最多相隔 1 天。而不是通过缩放将事物混入欧几里得空间,最终得到像a * distance^2 + b * timedelta^2 < 100^2 这样的逻辑。
    猜你喜欢
    • 2019-08-01
    • 2014-12-02
    • 2021-03-15
    • 2016-09-24
    • 2012-12-24
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2014-12-26
    相关资源
    最近更新 更多