2012-05-07 35 views
2

我使用Carrot2工具进行论文并在此工具上运行不同的算法。我的问题是,我怎样才能科学地比较不同算法的结果?我的意思是,我需要证明算法1的聚类结果优于算法2的结果。熵和纯度值是否适用于我,如果是,我该如何应用它们?在Carrot2中比较聚类结果

谢谢。

回答

2

比较两种算法的最好办法是在我看来,以显示对真实数据的表现,并解释为什么他们的工作好或没有在某些特殊情况下正常工作(如它运作良好,在密集的数据或稀疏数据,或密度可变的数据......)。在某些情况下,您可能能够做出理论证明,表明某种算法与另一种算法相比具有一些额外的理想属性。但这可能很难做到。

还用于确定结果是好的,你可能需要一个领域的专家来告诉你,在集群为你的应用领域是有意义的。

我的意思是像熵和纯度的措施是有趣的措施。但是最终数据挖掘技术只有在它为该领域产生有意义的结果时才适用于特定的域。

如果你是深化发展一般的聚类算法比你也许会用这些措施来证明你的算法比在一定条件下另一种算法更好的性能和使用这些措施的争论有关。但是你仍然需要用一些真实的数据来说明为什么它在某些情况下效果更好。

1

比较聚类结果不幸并不简单。特别是涉及重叠,层次和子空间结果时。常用的措施只能起到严格的分区集群的作用。即使如此,他们也有不同的偏见,并且存在一打质量度量。所以你的结果在一个方面可能会更好,而另一方面则更糟糕。

我不知道胡萝卜的细节,因为我是一个ELKI用户。为了比较聚类,其中包括各种计数测量(Precision,Recall,F1,Jaccard,Rand,Adjusted Rand,Fowlkes-Mallows),基于熵的测量(“标准互信息”),Bcubed测量(再次精确度,回忆和F1 ),设置匹配度量(F1,纯度和逆纯度),基于编辑距离的度量和基于基尼度量。总共有20个质量指标。我还没有找到一个很好的论点,为什么这个或那个明显优越,他们都有他们的好处和缺点。 BCubed声称要优越,但是,谁不?

https://en.wikipedia.org/wiki/Cluster_analysis#External_evaluation 给出了一些这些措施的细节,但也没有指示何时使用哪些。

另外,实验不能证明任何算法比另一种更好。你可能只是选择了其他的错误参数!或者你可能正在使用不合适的“算法2”。有数百种聚类算法(ELKI是我知道的最大的聚类算法集合,这就是我目前正在使用它的原因!),理想情况下,你应该比每一个都好。我目前认为发明另一种聚类算法并不合理。你可能只是重新发明了轮子,而有人可能已经发明了这种聚类算法,或者更优秀的东西。

1

正如其他都提到没有“最好”的质量度量只是因为质量没有“最好”的标准,当你谈论无监督聚类。有些人(和应用程序)更喜欢小而紧凑的群集,其他人则倾向于支持大型高级群集。一些用于分层,其他用于平面(分区)结果。有些人会喜欢清晰的分配,其他人会喜欢模糊的会员功能......这可以永远。

与上述原因相似,没有用于执行这种比较的“完美”基本事实集合。这一切取决于输入数据是什么,目标是什么等。

请参阅Carrot2出版物列表http://project.carrot2.org/publications.html,其中一些出版物包括可以重复使用的质量指标和数据集(关注上面的评论)。这可能是最适用于聚类搜索结果:

Claudio Carpineto,StanislawOsiński,Giovanni Romano,Dawid Weiss:Web聚类引擎调查。 ACM计算调查(CSUR),第41卷,第3期(2009年7月),第17条,ISSN:0360-0300

而且,当然,如果您想出一个有趣的新算法!