基于非密度的数据聚类算法

时间:2010-10-03 17:43:38

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

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

有没有人有想法或知道我可以使用的算法,不需要那种配置? 或者简单地指出我正确的方向。欢迎任何帮助。

谢谢!

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

再次感谢,并为长篇文章感到抱歉。

2 个答案:

答案 0 :(得分:1)

通常,可以通过多种方式将一组点分配给群集(例如,它们都可以分配到一个大群集,或分成两个或三个),因此您必须一些参数。

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

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

修改:
哈!我就知道!这是一个将此情况正确划分为聚类的规则:找到从任意点到最近邻居的最大距离,如果任何两个点小于该距离的两倍,则它们属于同一个聚类。我敢打赌,它也可以用于其他案例。

答案 1 :(得分:0)

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

还要确保尝试 Weka ,这是一个包含大量机器学习算法(分类,群集,预处理......)的开源工具。我相信它为所有提到的algorithms提供了一个实现(Java)。


编辑:确定哪种群集最佳的问题非常依赖于域。这一切都归结为如何在您的应用程序的上下文中使用集群来确定它们的有用性(此外,您的数据可能有多个自然集群)。