我有一个群集问题,可以用这种方式总结:


我在3D空间中有N个粒子
每个粒子可以与不同数量的其他粒子相互作用
每次互动都有其优势
我不知道先验集群的数量
我没有倾斜的样品(应在无监督的情况下)


输出:我想得到:


簇数
每个粒子成为簇的一部分的概率(能够删除未明确分配的粒子)
我想直接从我的Java代码中调用集群器。


题:


哪种集群器最适合我的问题?
我应该如何格式化我的数据?
我应该使用3D定位信息来补充交互信息吗?
我如何获得每个粒子的结果?


我对weka非常陌生,但是从网上可以找到:


SOM可以解决我的问题
这是一个多实例问题,但我可以找到任何显示如何创建关系数据的示例。 SOM是否支持关系属性?


谢谢你的帮助。
珍诺特

最佳答案

当涉及集群时,Weka非常“有限”。它只有很少的聚类算法,而且非常有限。我不确定是否可以将交互强度添加到任何Weka聚类算法中。

您可能想看看ELKI。它具有比Weka更高级的聚类算法,并且非常灵活。例如,您可以轻松定义自己的距离函数(Tutorial),并将其用于任何基于距离的聚类算法中。

选择合适的聚类算法无济于事。您需要尝试一些并尝试不同的参数。您首先应该尝试回答的关键问题是:什么对您有用?

您已经开始提出其中一些问题。例如,您是否只想使用交互强度,还是只包含位置信息。但是由于我不知道您要实现什么,所以我无法告诉您如何实现。

一定要看看DBSCAN和OPTICS算法(尤其是对于OPTICS,不要在Weka中使用它。它速度慢,不完整且无法维护!)。如果这对您的任务有意义,那么也许可以开始阅读其Wikipedia文章。这就是为什么我认为它们对您有帮助的原因:


他们不需要知道集群的数量(与k均值和EM集群不同)
他们需要一个“最小点数”参数,该参数本质上是一个“最小簇大小”;它可以控制结果的粒度。增加它以获得更少和更大的群集。
他们可以使用任意距离或相似性函数(例如,交互强度)。对于DBSCAN,您需要设置一个认为重要的阈值,对于OPTICS则没有必要。


接下来,如果它们对您的用例有意义,那么我可能会将交互强度数据与OPTICS一起使用,并尝试对集群进行Xi提取。 (Weka没有Xi提取)。或者,也许先看看OPTICS图,看看您的相似性和MinPts参数是否真正产生了OPTICS所需的“谷”。
DBSCAN更快,但是您需要修复距离阈值。如果您的数据集非常大,则可能要从样本开始使用OPTICS,然后确定一些epsilon值,并使用这些值在整个数据集上运行DBSCAN。

不过,请从此处开始阅读,以了解这对您的任务是否有意义:

https://en.wikipedia.org/wiki/DBSCAN#Basic_idea

10-05 17:53