我正在尝试在大约 34k 个不同项目的数据集中检测重复项。当我说“重复”时,我并不是指相同的项目,只是非常相似。我有一个算法,它将笛卡尔加入项目并返回相似项目的稀疏矩阵,相似度从 0.0 到 1.0。这个矩阵有大约 5k 个非零条目,所以它非常稀疏。
我已经知道成对的相似物品是什么。我需要的是一种将它们聚集在一起的好方法。我预计会有很多集群中只有 2 个项目,并且有几千个集群有 2 个以上的项目,绝大多数项目是非集群的。
是否有适合这种情况的聚类算法?我已经尝试了几个,但它们要么效果不佳,要么设计时考虑到了几个大集群而不是许多小集群,因此往往会崩溃。
聚类是错误的方法吗?
我正在使用 Spark,但稀疏矩阵足够小,我不介意在必要时导出到其他东西。