代表的增量层次结构

时间:2012-09-23 09:44:21

标签: algorithm tree cluster-analysis hierarchical-clustering

我有一个遵循这个方案的增量聚类算法:

Let x a new data-point, and c the centroid that is closest from x
if( distance(x, c) > threshold )
   x becomes a new cluster center (i.e. a new centroid)
else assign x to c (i.e. update the centroid by taking x)

为了加快从x开始搜索最近的中心,我希望有一个中心的层次结构(使用树),每次考虑新的数据点时我们都可以逐步更新。

树的每个内部节点表示为该节点下的质心平均值。更新给定的质心时(因为新的数据点已分配给此质心),我们应该重建位于此质心上方的所有节点。

因此算法变得像:

Let x a new data-point
c = searchClosestCenter(x, tree) // return the centroid closest to x
if( distance(x, c) > threshold )
   x becomes a new cluster center (i.e. a new centroid)
   AddCenterToTree(x, tree)
else
   assign x to c (i.e. update the centroid by taking x)
   UpdateTree(c) // update all nodes that are  on top of c

在这种情况下如何定义此功能?有没有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

如何使用 R-tree ?它使用最小边界矩形来总结叶页中的对象。您也可以使用kd-tree,但它的性能会随着时间的推移而降低(除非您重建它),因为它可能会变得不平衡。

无论如何,R-tree是这类数据非常流行的数据结构。它在Oracle,SQLite,Postgres,MySQL等中使用......

R * -trees是R树的改进版本。它们具有更好的拆分策略,对插入进行轻微更改,并重新插入以作为拆分以提高树平衡的替代方法。搜索完全相同。

作为优化,您可以通过以下优化来增强R树:您可以添加"替换"而不是删除旧条目并插入新条目。操作。首先要检查新平均值的插入位置。如果它与之前的页面相同,只需在页面中替换它,最后更新边界框。