我正在查看具有lat,lng和事件日期/时间的数据点。我在查看聚类算法时遇到的算法之一是DBSCAN。虽然它在聚类lat和lng时可以正常工作,但我担心它在合并时间信息时会分崩离析,因为它不是相同比例或相同类型的距离。
将时态数据合并到DBSCAN算法有哪些选择?
答案 0 :(得分:5)
查看同一作者的广义DBSCAN。
Sander,Jörg;埃斯特,马丁; Kriegel,Hans-Peter;徐小伟(1998)。 空间数据库中基于密度的聚类:算法GDBSCAN及其应用。数据挖掘和知识发现(柏林:Springer-Verlag)2(2):169-194。 DOI:10.1023 / A:1009745219419
。
对于(广义)DBSCAN,您需要两个函数:
findNeighbors - 从数据库中获取所有“相关”对象
corePoint - 决定此集是否足以启动集群
然后你可以反复找到邻居来增长集群。
功能1是您想要挂钩的地方,例如使用两个阈值:一个是地理的,一个是时间的(即在100英里内,在1小时内)。
答案 1 :(得分:2)
tl; dr您将不得不修改您的功能集,即缩放您的日期/时间以匹配您的地理数据的大小。
DBSCAN的输入只是一个向量,算法本身并不知道一个维度(时间)是大于或小于另一个维度(距离)的数量级。因此,在计算数据点的密度时,缩放的差异会搞砸它。
现在我想你可以修改算法本身来区别对待不同的维度。这可以通过改变两点之间“距离”的定义来完成,即提供你自己的距离函数,而不是使用默认的欧几里德距离。
但是,恕我直言,更容易做的事情是缩放你的一个尺寸以匹配另一个尺寸。只需将您的时间值乘以一个固定的线性因子,使它们与地理值处于同一数量级,您应该好好去。更一般地说,这是功能选择过程的一部分,可以说是解决任何机器学习算法的最重要部分。选择正确的功能,并正确地对其进行转换,您将获得解决方案的一半以上。