我有一个遵循这个方案的增量聚类算法:
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
在这种情况下如何定义这个函数?有没有更好的解决方案?