我正在寻找一种方法来执行基于密度的聚类。生成的集群应该有一个不像 的代表DBSCAN
。
Mean-Shift
似乎满足这些需求,但规模不足以满足我的需求。我研究了一些子空间聚类算法,只发现CLIQUE
使用代表,但这部分没有在Elki中实现。
问问题
503 次
2 回答
2
正如我在您的问题上一次迭代的评论中指出的那样, https://stackoverflow.com/questions/34720959/dbscan-java-library-with-corepoints
基于密度的聚类不假设有中心或代表。
考虑以下来自 Wikipedia 用户 Chire (BY-CC-SA 3.0) 的示例图像:
哪个对象应该是红色集群的代表?
基于密度的聚类是关于寻找“任意形状”的聚类。这些没有有意义的单一代表对象。它们并不是要“压缩”您的数据——这不是矢量量化方法,而是结构发现。但正是这种复杂结构的性质,它不能被简化为一个单一的代表。这种集群的正确表示是集群中所有点的集合。对于 2D 中的几何理解,您还可以计算凸包,例如,以获得该图片中的区域。
选择有代表性的对象是一项不同的任务。这不是发现这种结构所必需的,因此这些算法不计算代表性对象 - 它会浪费 CPU。
于 2016-01-12T20:51:18.553 回答
2
您可以选择具有最高密度的对象作为集群的代表。
对 DBSCAN 进行相当简单的修改以存储每个对象的邻居计数。
但正如 Anony-Mousse 所提到的,该对象可能仍然是一个相当糟糕的选择。基于密度的聚类并非旨在产生具有代表性的对象。
您可以尝试 AffinityPropagation,但它也不会很好地扩展。
于 2016-01-14T08:55:16.363 回答