Machine learning DBSCAN使用空间和时间数据

Machine learning DBSCAN使用空间和时间数据,machine-learning,cluster-analysis,data-mining,dbscan,Machine Learning,Cluster Analysis,Data Mining,Dbscan,我正在查看具有lat、lng和事件日期/时间的数据点。我在研究集群算法时遇到的一个算法是DBSCAN。虽然它在lat和lng集群中工作正常,但我担心的是,当合并时间信息时,它会崩溃,因为它不具有相同的规模或相同的距离类型 将时间数据合并到DBSCAN算法中有哪些选项?tl;dr您必须修改功能集,即缩放日期/时间以匹配地理数据的大小 DBSCAN的输入只是一个向量,而算法本身并不知道一个维度(时间)比另一个维度(距离)大或小几个数量级。因此,在计算数据点的密度时,缩放比例的差异会将其搞砸 现在我想

我正在查看具有lat、lng和事件日期/时间的数据点。我在研究集群算法时遇到的一个算法是DBSCAN。虽然它在lat和lng集群中工作正常,但我担心的是,当合并时间信息时,它会崩溃,因为它不具有相同的规模或相同的距离类型


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

tl;dr您必须修改功能集,即缩放日期/时间以匹配地理数据的大小

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

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

然而,依我看,更容易的事情是调整你的一个维度以匹配另一个维度。只需将时间值乘以一个固定的线性因子,使其与地理值的数量级相同,就可以了


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

查找同一作者的广义DBSCAN

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

对于(通用)DBSCAN,您需要两个函数:

  • findNeighbors-从数据库中获取所有“相关”对象

  • corePoint-确定此集合是否足以启动群集

  • 然后,您可以反复查找邻居以增长集群


    函数1是您想要连接的地方,例如,通过使用两个阈值:一个是地理阈值,另一个是时间阈值(即100英里内和1小时内)。

    DBSCAN不需要矢量形式的数据。@Anony mouse您的意思是什么?否则您将如何表示数据?矩阵、张量、非结构化文本(不在tf idf VSM中)。DBSCAN的输入数据没有限制。@Anony Mouse谢谢。我一直认为DBSCAN可以计算n维空间中点的密度,因此只接受向量。你有没有把非结构化文本作为输入的例子?代码、文件等?这就是我自己使用DBSCAN的原因。也许在我回答这个问题的参考文献中。ST-DBSCAN是另一种似乎能够处理时态数据的算法。看起来它的工作方式类似(设置两个阈值)。我的问题也与上面的问题类似,我的数据集包括GPS坐标,每个lat/long值都有时间戳。ELKI中有五个邻域函数(当我选择GDBScan时):epsiloneighborpredicate、copacnextorpredicate、ericnnextorpredicate、FourCNeighborPredicate、predeconnextorpredicate。但我不确定该用哪一个。有什么建议吗?定义你自己的,按照你想适应的位置来适应位置,按照你想适应的时间来适应时间。我想知道数据的缩放(或标准化),包括将时间转换为“X后的秒数”vector不应该能够正确地做到这一点吗?它更有意义,而且是可用的,并且是直接的,很容易定义两个阈值:最多10英里远,最多相隔1天。而不是通过缩放将事物混入欧几里德空间,最终得到一个类似于
    a*distance^2+b*timedelta^2<100^2
    的逻辑。