我使用ELKI's AnderbergHierarchicalClustering
对我的数据集进行了超过150000
次观察,对于每次观察,我使用了三个变量:lat
,{{1} }和lng
,所有这些都是price
。
我遇到了以下问题:
double
- right shift
执行Agnes triangle
- 这需要大(size * (size - 1)) >>> 1
个需求为了解决这个问题,我决定将数据集拆分为RAM
的重叠子集。
对于20000 obs
,我需要20000 obs
。
我不知道以这种方式分割数据的最佳方法是什么,应用于子集的聚类结果将尽可能接近聚类整个集合的结果。
答案 0 :(得分:1)
如果您使用single-linkage
,则可以使用只需SLINK
内存的O(n)
。
它仍然需要O(n^2)
时间。
Hierarchical clustering
的可扩展性不高。
CLINK
可以使用complete linkage
内存O(n)
,但结果质量通常不是很好(通常比Anderberg
complete linkage
更差。< / p>
遗憾的是,我们拥有的所有其他算法都是O(n^2)
。
因此,在大约65535个实例中,您将使用Java
撞墙。
我的待办事项列表中有一个算法应该可以在O(n log n)
中运行,如果我没有与index support
弄错的话。但我还没有详细研究它 - 除了linkage strategies
之外,还不清楚哪个single-linkage
可以支持。
如果你有很多重复,请务必先合并它们!