【发布时间】:2015-08-16 16:03:33
【问题描述】:
我正在查看具有 lat、lng 和事件日期/时间的数据点。我在查看聚类算法时遇到的一种算法是 DBSCAN。虽然它在聚类 lat 和 lng 方面效果很好,但我担心它会在合并时间信息时分崩离析,因为它的规模或距离类型不同。
将时间数据合并到 DBSCAN 算法中有哪些选择?
【问题讨论】:
标签: machine-learning cluster-analysis data-mining dbscan
我正在查看具有 lat、lng 和事件日期/时间的数据点。我在查看聚类算法时遇到的一种算法是 DBSCAN。虽然它在聚类 lat 和 lng 方面效果很好,但我担心它会在合并时间信息时分崩离析,因为它的规模或距离类型不同。
将时间数据合并到 DBSCAN 算法中有哪些选择?
【问题讨论】:
标签: machine-learning cluster-analysis data-mining dbscan
tl;博士您将不得不修改您的功能集,即缩放您的日期/时间以匹配您的地理数据的大小。
DBSCAN 的输入只是一个向量,算法本身并不知道一个维度(时间)比另一个维度(距离)大或小几个数量级。因此,在计算数据点的密度时,缩放的差异会搞砸。
现在我想您可以修改算法本身以区别对待不同的维度。这可以通过更改两点之间“距离”的定义来完成,即提供您自己的距离函数,而不是使用默认的欧几里得距离。
恕我直言,不过,更简单的做法是缩放一个维度以匹配另一个维度。只需将您的时间值乘以一个固定的线性因子,使它们与地理值处于同一数量级,您就可以开始了。
更一般地说,这是特征选择过程的一部分,可以说是解决任何机器学习算法的最重要部分。选择正确的特征,并正确地转换它们,你就成功了一半以上。
【讨论】:
查找同一作者的 Generalized DBSCAN。
桑德,约尔格;酯,马丁;克里格尔,汉斯-彼得;徐小伟(1998)。 空间数据库中基于密度的聚类:GDBSCAN 算法及其应用。数据挖掘和知识发现(柏林:Springer-Verlag)2(2):169–194。 doi:10.1023/A:1009745219419.
对于(广义)DBSCAN,您需要两个函数:
findNeighbors - 从您的数据库中获取所有“相关”对象
corePoint - 决定这个集合是否足以启动集群
然后你可以反复寻找邻居来增长集群。
功能 1 是您想要挂钩的地方,例如通过使用两个阈值:一个是地理阈值,一个是时间阈值(即 100 英里内和 1 小时内)。
【讨论】:
a * distance^2 + b * timedelta^2 < 100^2 这样的逻辑。