我在论文中使用Carrot2工具,并在此工具上运行不同的算法。我的问题是,如何科学地比较不同算法的结果?我的意思是,我需要证明算法1的聚类结果优于算法2的结果。熵和纯度值对我有用吗,如果是的话,我该如何应用它们?
感谢。
答案 0 :(得分:2)
在我看来,比较两种算法的最佳方法是显示它们在某些真实数据上的表现,并解释它们在某些特殊情况下运行良好或不能正常工作的原因(例如,它适用于密集数据或稀疏数据,或密度可变的数据......)。在某些情况下,您可以做出理论证明,与另一种算法相比,某些算法具有一些额外的理想属性。但这可能很难。
另外,为了确定结果是否良好,您可能需要域专家来告诉您群集是否对您的应用程序域有意义。
我的意思是像熵和纯度这样的措施是有趣的措施。但最终数据挖掘技术只有在为该域生成有意义的结果时才适用于特定域。
如果您正在开发一般的聚类算法,或许可以使用这些度量来表明您的算法在某些条件下具有比其他算法更好的属性,并使用这些度量来争论。但是你仍然需要用一些真实的数据说明为什么它在某些情况下效果更好。
答案 1 :(得分:1)
遗憾的是,比较聚类结果并非易事。特别是在重叠,分层和子空间结果方面。常用的措施只能工作严格的分区聚类。即使这样,也有不同的偏见,并且存在十几种质量措施。所以你的结果可能在一个衡量标准上更好,而在另一个衡量标准上更糟糕。
我不知道Carrot的详细信息,因为我是ELKI用户。为了比较聚类,它包括各种配对计数测量(精确,召回,F1,Jaccard,兰德,调整兰德,Fowlkes-Mallows),基于熵的测量(“标准化互信息”),Bcubed测量(再次精确,召回和F1) ),设置匹配度量(F1,纯度和反向纯度),基于编辑距离的度量和基于基于Gini的度量。这总共有20项质量措施。我还没有找到一个好的论据,为什么一个或另一个明显优越,它们都有其优点和缺点。 BCubed声称自己优越,但是,谁没有?
https://en.wikipedia.org/wiki/Cluster_analysis#External_evaluation 详细介绍了其中一些措施,但也没有说明何时使用哪种措施。
另外,实验不能证明任何算法都优于另一种算法。您可能只为另一个选择了错误的参数!或者您可能使用了不合适的“算法2”。有数百种聚类算法(ELKI是我所知道的最大的聚类算法集合,这就是我正在使用它的原因!)理想情况下,你应该比它们中的每一种都更好。我目前认为发明另一种聚类算法并不重要。你可能只是在重新发明轮子,有人可能已经发明了这种聚类算法,或者更优秀的东西。
答案 2 :(得分:1)
正如其他人所提到的那样,没有“最佳”质量指标,因为在谈论无监督聚类时,没有“最佳”质量标准。有些人(和应用程序)更喜欢小而紧凑的集群,而其他人倾向于偏向大型高级集群。有些用于分层,有些则用于平面(分区)结果。有些人会喜欢清晰的作业,有些人会喜欢模糊的会员函数......这可能会永远存在。
与上述原因类似,没有用于执行此类比较的“完美”基础事实集。这一切都取决于输入数据是什么,目标是什么等等。
请参阅http://project.carrot2.org/publications.html处的Carrot2发布列表,其中一些出版物包括您可以重复使用的质量指标和数据集(注意上面的评论)。这个可能最适用于聚类搜索结果:
Claudio Carpineto,StanislawOsiński,Giovanni Romano,Dawid Weiss:对Web集群引擎的调查。 ACM计算调查(CSUR),第41卷,第3期(2009年7月),第17条,ISSN:0360-0300
当然,如果您想出一个有趣的新算法,我们欢迎您回馈Carrot2!