11

这是我的场景。考虑在不同地点和时间发生的一组事件——例如,考虑在暴风雨期间记录城市雷击的高处的人。就我而言,闪电是瞬时的,并且只能击中某些位置(例如高楼)。还可以想象每次雷击都有一个唯一的 id,以便以后可以参考雷击。这个城市大约有 100,000 个这样的地点(正如你猜测的那样,这是一个类比,因为我现在的雇主对实际问题很敏感)。

对于第 1 阶段,我的输入是一组(罢工 id、罢工时间、罢工地点)元组。期望的输出是在短时间内击中同一位置的多于 1 个事件的集群集。集群的数量是事先不知道的(所以 k-means 在这里没那么有用)。可以为给定的聚类尝试预定义被视为“短”的内容。也就是说,我可以将其设置为 3 分钟,而不是运行算法;稍后尝试 4 分钟或 10 分钟。也许一个不错的方法是让算法确定聚类的“强度”,并建议对于给定的输入,通过使用“short”的特定值来实现最紧凑的聚类,但最初这不是必需的。

对于第 2 阶段,我想考虑撞击的幅度(即实数)并寻找在短时间内且具有相似幅度的集群。

我用谷歌搜索并检查了这里关于数据聚类的答案。这些信息有点令人困惑(下面是我发现有用的链接列表)。AFAIK、k-means 和相关算法将没有用,因为它们需要先验指定集群的数量。我不是要求有人来解决我的问题(我喜欢解决它),但是为了节省一些时间,在数据聚类算法的大世界中进行一些定位会很有用。具体来说,当聚类数量未知时,哪些聚类算法适用。

编辑:我意识到位置无关紧要,因为尽管事件一直在发生,但我只需要按位置对它们进行聚类。因此,每个位置都有自己的事件时间序列,因此可以独立分析。

一些技术细节:
- 由于数据集不是那么大,它可以适合所有内存。
- 并行处理很不错,但不是必需的。我只有 4 核机器,MapReduce 和 Hadoop 会太多。
- 我最熟悉的语言是Java。我还没有使用过 R,而且它的学习曲线对于我得到的时间来说可能太多了。反正我会在空闲的时候看看它。
- 目前,使用工具运行分析是可以的,我不必只生成代码。我之所以提到这一点,是因为可能会建议Weka 。
- 可视化会很有用。由于数据集足够大,无法放入内存,因此可视化至少应该支持缩放和平移。澄清一下:我不需要构建可视化 GUI,它只是一个很好的功能,可用于检查工具产生的结果。

谢谢你。我发现有用的问题是:如何找到数字簇的中心?统计问题?, Paper Boys 的聚类算法, Java 聚类库,如何聚类对象(无坐标) ,检测点的“聚类”的算法

4

3 回答 3

2

我建议您研究Mean Shift Clustering。均值漂移聚类背后的基本思想是获取数据并执行核密度估计,然后在密度估计中找到模式,数据点向模式的收敛区域定义了集群。

均值偏移聚类的好处是不必提前指定聚类的数量。

我没有使用过 Weka,所以我不确定它是否有均值偏移聚类。但是,如果您使用的是 MATLAB,这里有一个工具箱(KDE 工具箱)来执行此操作。希望有帮助。

于 2010-02-22T02:33:14.783 回答
1

您不能只使用具有罢工时间差异的层次聚类作为距离度量的一部分吗?

于 2010-02-22T02:38:50.607 回答
0

为时已晚,但我仍然会添加它:

在 R 中,有一个包fpc,它有一个pamk()为您提供集群的方法。使用pamk(),您最初不需要提及集群的数量。它自己计算输入数据中的簇数。

于 2015-11-08T04:50:23.097 回答