我得到了 2 个数据集,并希望使用 KNIME 对这些数据集进行聚类分析。
完成聚类后,我希望对 2 种不同的聚类算法进行性能比较。
关于聚类算法的性能分析,这将是时间度量(算法时间复杂度和执行数据聚类所花费的时间等)还是聚类输出的有效性?(或两者)
是否有任何其他角度可以确定聚类算法的性能(或缺乏)?
提前谢谢了,
- 吨
我得到了 2 个数据集,并希望使用 KNIME 对这些数据集进行聚类分析。
完成聚类后,我希望对 2 种不同的聚类算法进行性能比较。
关于聚类算法的性能分析,这将是时间度量(算法时间复杂度和执行数据聚类所花费的时间等)还是聚类输出的有效性?(或两者)
是否有任何其他角度可以确定聚类算法的性能(或缺乏)?
提前谢谢了,
这在很大程度上取决于您有哪些可用数据。
衡量性能的一种常用方法是针对现有(“外部”)标签(尽管这对分类比对聚类更有意义)。您可以为此使用大约两打措施。
使用“内部”质量度量时,请确保它独立于算法。例如,k-means 优化了这样一个度量,并且在评估这个度量时总是会得到最好的结果。
有两类聚类评估方法,选择取决于是否存在基本事实。第一类是需要存在基本事实的外在方法,另一类是内在方法。一般来说,在给定基本事实的情况下,外部方法尝试为聚类分配分数,而内部方法通过检查聚类的分离程度和它们的紧凑程度来评估聚类。
对于外部方法(请记住,您需要有可用的基础),一种选择是使用 BCubed 精度和召回指标。BCubed 精确度和召回率指标不同于传统的精确度和召回率,因为聚类是一种无监督学习技术,因此我们事先不知道聚类的标签。出于这个原因,BCubed 指标根据基本事实评估给定数据集上聚类中每个对象的精确度和召回率。一个例子的精确度是在同一个集群中有多少其他例子与这个例子属于同一类别的指示。一个例子的召回率反映了有多少相同类别的例子被分配到同一个聚类中。最后,我们可以使用 F2 指标将这两个指标合二为一。
资料来源:
对于存在可用基本事实的外部方法,一种简单的方法是使用聚类之间的距离度量;基本事实被简单地认为是一个聚类。使用的两个很好的度量是 Meila 的信息变化,在我看来,Meila 也讨论了我自己的拆分连接距离。我不推荐 Mirkin 指数或 Rand 指数——我在 stackexchange 上写过更多关于它的内容。
这些度量可以分为两个组成部分,每个部分代表一个聚类到最大公共子聚类的距离。两部分都值得考虑;如果 ground truth 部分(对于普通子聚类)非常小,则意味着测试的聚类接近于超聚类;如果另一部分很小,则意味着测试的聚类接近公共子聚类,因此接近基本事实的子聚类。在这两种情况下,可以说聚类与基本事实兼容。有关更多信息,请参阅上面的链接。
具有外部质量度量(准确性)和内部度量(形成的集群的一些内部统计)的聚类算法评估有几个基准:
适当基准的选择取决于聚类算法的种类(硬聚类或软聚类)、种类(成对关系、属性数据集或混合)和聚类数据的大小、所需的评估指标和可接受的监督量。Clubmark论文详细描述了评估标准。
Clubmark是为在许多大型数据集(数百万和数十亿个聚类元素)上对许多聚类算法(处理由成对关系指定的输入数据)进行全自动并行评估而开发的,主要通过跟踪资源消耗(处理和执行时间)的准确度指标进行评估,峰值常驻内存消耗等)。
但是对于几个数据集上的几个算法,即使是手动评估也是合适的。