【发布时间】:2013-12-21 20:44:31
【问题描述】:
我正在尝试开发一种聚类算法,其任务是在一组 2D 点上查找 k 个类(将 k 作为输入),使用经过轻微修改的 Kruskal 算法来查找 k 个生成树而不是一个。
我使用 rand 指数将我的输出与建议的最优值 (1) 进行了比较,k = 7 的结果为 95.5%。比较可以在下面的链接中看到。
问题:
该集合有 5 个间隔明显的簇,很容易被算法分类,但是当 k > 5 时,结果相当令人失望,这时事情开始变得棘手。我相信我的算法是正确的,也许数据对于 Kruskal 方法来说特别糟糕。众所周知,Kruskal 等单链接聚合聚类在某些问题上表现不佳,因为它将聚类质量的评估降低到一对点之间的单一相似性。
算法的思路很简单:
- 用数据集做一个完整的图,边的权重 是这对之间的欧几里得距离。
- 按权重对边缘列表进行排序。
- 对于每条边(按顺序),如果它不形成循环,则将其添加到生成林中。当所有的边都被遍历完或者剩余的森林有 k 棵树时停止。
底线: 为什么算法会这样失败?是克鲁斯卡尔的错吗?如果是这样,为什么?有什么建议可以在不放弃 Kruskal 的情况下改进结果?
(1):Gionis, A.、H. Mannila 和 P. Tsaparas,聚类聚合。 ACM 交易 从数据中发现知识(TKDD),2007.1(1):p.1-30。
【问题讨论】:
标签: algorithm tree cluster-analysis minimum-spanning-tree kruskals-algorithm