【问题标题】:clustering interacting particles with weka用 weka 聚类相互作用的粒子
【发布时间】:2012-05-15 04:56:12
【问题描述】:

我有一个聚类问题可以这样总结:

  • 我在 3D 空间中有 N 个粒子
  • 每个粒子可以与不同数量的其他粒子相互作用
  • 每一次互动都有一种力量
  • 我不知道先验聚类的数量
  • 我没有学习样本(应该无人监督)

输出:我想得到:

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

问题:

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

我对 weka 很陌生,但从我在 Internet 上可以找到的资料来看:

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

感谢您的帮助。 让诺特

【问题讨论】:

  • 这是我遇到的一个更大的分析问题的一部分,我正在尝试以这种方式解决它,但我很难找到使用 weka 进行 java 编程的教程或文档。

标签: java cluster-analysis weka data-mining particles


【解决方案1】:

Weka 在集群方面非常“有限”。它只有很少的聚类算法,而且非常有限。我不确定您是否可以将交互强度放入任何 Weka 聚类算法中。

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

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

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

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

  • 他们不需要知道聚类的数量(与 k-means 和 EM 聚类不同)
  • 他们需要一个“最小点数”参数,本质上是一个“最小集群大小”;它控制结果的细粒度。增加它以获得更少和更大的集群。
  • 他们可以使用任意距离或相似度函数(例如,交互强度)。对于 DBSCAN,您需要设置一个阈值来考虑显着性,对于 OPTICS,这不是必需的。

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

不过,请从这里开始阅读,看看这对您的任务是否有意义:

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

【讨论】:

  • 感谢您的回答。 ELKI看起来很有趣,我想试试。我找不到从 Java 代码调用聚类算法的编程示例。你能给我一个简单的吗?尤其是当输入数据不在文件中时,我不知道输入数据是如何格式化以提供给算法的。谢谢
  • 要了解如何从 Java 调用 ELKI,请查看 ELKI 中包含的单元测试。它可能比您预期的要复杂一些,因为 ELKI 支持用于加速的索引结构 - 所以它不仅仅对数据矩阵进行操作。但是,您可以使用 double[][] 矩阵作为输入,使用 ArrayAdapterDatabaseConnection 类。
【解决方案2】:

如果您的数据是按照 WEKA 的 ARFF 文件格式准备的,那么您可以使用 WEKA 资源管理器的 CLUSTER 选项卡。这会聚类您的数据(无监督),并为您提供每个聚类的每个特征值的阈值。对于无监督学习非常方便。

【讨论】:

  • 您好,感谢您的回答,但我想直接从 java 调用 weka(或任何其他框架),因为我希望该过程完全自动化。
  • 你不应该有任何问题。只需查看 Weka java API 文档,了解如何为集群发送数据以及如何获得答案。我的主要观点是集群可以做你想做的事情。您可以选择 GUI,也可以使用 java API。
  • 是的,它是聚类,但我需要一个自定义距离函数来考虑粒子之间的“交互强度”(不仅仅是它们的空间定位)。 Anony-Mousse 似乎说使用 weka 是不可能的。也许我错过了什么?
  • 嗯,据我所知,这在 Weka 中是不可行的
猜你喜欢
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 2014-11-10
相关资源
最近更新 更多