【问题标题】:non density based Data clustering algorithm基于非密度的数据聚类算法
【发布时间】:2011-04-20 12:48:48
【问题描述】:

我正在开发一个聚类分析程序,该程序将一组点 S 作为输入,并用它所属的聚类索引标记每个点。我已经实现了 DBScan 和 OPTICS 算法,它们都按预期工作。 但是,根据 MinPts 和 Epsilon 的初始值,这些算法的结果可能会有很大差异。我已经在网上搜索并阅读了很多关于数据挖掘和聚类分析的论文,但我似乎无法找到一种分析数据的方法,而不需要 MinPts 和 Epsilon 来确定一个点是否在这样的集群中。 我猜基于密度的聚类分析不是我的选择。

有没有人知道或知道我可以使用不需要那种配置的算法? 或者只是将我指向正确的方向。欢迎任何帮助。

谢谢!

这是我正在尝试完成的一个学校项目,其中我有一组 2D 坐标表示平面上的点,我必须确定每个点属于哪个集群。现在我已经使用 OPTICS 完成了这项工作,它工作正常,但我需要调整 Eps 值,以便我的输出与我给出的示例输出相匹配。但是由于我没有描述主题中的集群是什么,或者它的特征是什么,所以我无法仅基于点之间的距离或给定区域中点的密度。另外,我事先不知道集群的数量,因此我使用了 OPTICS 算法。因此,在我看来,要么我做错了,要么该主题中缺少关键信息。 而且,我不是在寻找任何人来做我的作业或给我任何源代码,只是一些想法或指导,因为我几乎迷失了如何获得数据集示例中给出的确切结果(我也不允许得到任何错误的值,如果我这样做他们认为项目是失败的,所以不能使用具有误差范围的算法。

再次感谢,很抱歉发了这么长的帖子。

【问题讨论】:

  • 我不能使用 k-means 或任何类似的算法,因为我事先不知道我拥有的集群数量。
  • 算法有一种变体,称为XMeans,它不需要预先确定簇的数量(它基于最小描述长度 (MDL) 的概念,采用 BIC 等度量)跨度>
  • 其实DBSCAN拼写为DBSCAN。它是一个缩写,例如 N 代表“噪音”。 OPTICS 应该完全依赖于 Epsilon 值,如果您没有加速索引,则可以不使用它。

标签: c++ c algorithm cluster-analysis data-mining


【解决方案1】:

一般而言,一组点可以通过多种方式分配给集群(例如,它们可以全部分配给一个大集群,或者分成两个或三个),所以你必须有 一些 em> 参数。

您为什么反对 MinPts 和 Epsilon?如果您不喜欢更改它们时发生的事情,请不要更改它们。认真的。

编辑:
多么奇怪的任务!您的聚类必须与他们的聚类完美匹配,没有其他线索?我将假设他们既不是白痴也不是虐待狂,并做出以下猜测:在示例中,存在明显的“自然”聚类。我对吗?如果是这样,那么我们可以通过编程方式设置参数,作为点集中距离的函数。例子有多少,能发一个吗?

编辑:
哈!我就知道!这里有一条规则可以正确地将这种情况划分为集群:找到任何点到其最近邻居的最大距离,如果任何两个点的距离小于该距离的两倍,则它们属于同一个集群。我敢打赌它也适用于其他情况。

【讨论】:

  • 我不反对使用 MinPts 和 Eps。在我的程序的当前版本中,我已经实现了 OPTICS 算法,但在我看来,使用基于距离的分析非常模糊,你可以使用任何类型的 Eps 值并得到非常不同的结果,我只是迷失了我应该/可以使用什么其他“类型”的算法。
  • 你认为有没有一种方法可以根据输入数据集计算最佳的 Eps 和 MinPts 值?
  • @__dominic:“最佳”在什么意义上?你必须决定你想要实现什么,你想要集群中的什么品质,你想要避免什么问题。您能否向我们提供有关如何使用此工具的更多信息?
  • 我在这里上传了一个示例:bit.ly/aRSsh8 总共有 5 个示例,是的,您会看到聚类是肉眼可见的,但算法无法猜测在其自己的。我已经根据您所说的进行了尝试,在运行算法之前我已经绘制了我的点,然后使用了实际的映射坐标(从文件中的坐标到绘制点的像素位置)并使用了固定值对于 Eps,虽然我得到了正确的结果,但有时我有一些错误的值,我需要准确匹配所有值。感谢您花时间帮助我。
  • @__dominic:每个点到它最近的邻居都有一段距离;选择这些距离中最大的一个。
【解决方案2】:

您可以尝试查看其他许多cluster algorithms。您有概率聚类 (EM)、分区聚类 (KMeans)、层次聚类等等……当然,每个都需要不同类型的配置

还请务必尝试 Weka,这是一个包含大量机器学习算法(分类、聚类、预处理等)的开源工具。我相信它为所有提到的algorithms 提供了一个实现(Java)。


编辑:确定哪种聚类最好的问题是非常依赖于领域的。这一切都取决于集群如何在您的应用程序上下文中使用,这决定了它们的有用程度(此外,您的数据可能有多个自然集群)。

【讨论】:

  • Weka 没有太多的集群支持。并且那里的 DBSCAN 和 OPTICS 实现不完整。哎呀,他们甚至不能正确拼写 DBSCAN。如果您正在执行分类,它最有用。
猜你喜欢
  • 2014-06-05
  • 2016-04-17
  • 2013-01-31
  • 2021-01-02
  • 1970-01-01
  • 2015-02-22
  • 2023-03-21
  • 2019-08-23
  • 1970-01-01
相关资源
最近更新 更多