我正在尝试实现质量阈值聚类算法。下面列出了它的大纲(取自此处):
- 初始化集群允许的阈值距离和最小集群大小
- 为每个数据点构建一个候选聚类,包括最近点、次最近点等,直到聚类的距离超过阈值
- 将点数最多的候选聚类保存为第一个真正的聚类,并将聚类中的所有点从进一步考虑中删除
- 用减少的点集重复,直到不能再形成具有最小集群大小的集群
我一直在阅读一些最近邻搜索算法和空间分区数据结构,因为它们似乎是我需要的那种东西,但我无法确定使用哪一个,或者我是否应该查看其他东西.
我想自己实现数据结构以用于教育目的,并且我需要一个可以连续返回某个点的最近点的数据结构。但是,由于我不知道需要查询的次数(即直到超过阈值),所以我不能使用 k-最近邻算法。我一直在研究四叉树和 kd 树。
此外,由于该算法不断构建新的候选集群,因此使用修改后的数据结构会很有趣,该数据结构使用缓存信息来加速后续查询(但也考虑到点删除)。