使用差距统计来比较算法

机器算法验证 机器学习 聚类 数据挖掘
2022-04-05 09:34:17

我想比较两种聚类算法的性能,这两种算法给我不同数量的聚类。我最近了解了差距统计信息。但是,据我所知,此统计数据用于查找一种算法的最佳聚类数(例如,在该页面上,它用于查找 k-means 的最佳聚类数)。是否可以使用它来比较哪些算法集群提供最佳性能?(找到使簇中的距离最小化并最大化它们之间的距离的聚类)

2个回答

请注意,某些算法会尝试优化间隙/轮廓/ssq,而其他算法则不会。

通过将不同的算法与与某些目标函数相关的度量进行比较,您将更有可能衡量该算法与差距统计数据的相似程度,而不是它实际工作的好坏。

几乎每一项措施都会出现类似的问题。

例如,“平方和”(SSQ) 度量在 k-means 内部使用,并且随着集群数量的增加而提高(当 k=对象数量时,最高为 0)。K-means 是(近似地,因为普通算法只能找到局部最小值)相对于这个度量是最优的。但最佳 k 是对象的数量,每个对象都有自己的集群(产生 SSQ 0)。

所以很明显,与 k-means 相比,任何其他算法都会看起来很糟糕,但最佳结果将完全没有用。

依赖此类指标时要小心。您测量的数学量可能无法满足您的需求

使用间隙统计或轮廓与 k-means 有时效果很好,因为它们与 k-means 使用的原始目标略有不同。与其盲目寻找最佳 k-means 结果(这会产生过高的 k),不如使用此辅助度量来比较 k-means 结果。它有效,因为即使使用不同的 k,k-means 仍然优化 SSQ,而不是间隙统计量。然而,gap/silhouette 只是另一种启发式

请注意,当您在运行 k-means 之前尝试不同的归一化时,它已经失败了。仅通过缩小数据集来缩小差距是微不足道的;预处理对这些统计数据有很大的影响。

当你比较不同的算法时,通常每个优化不同的数量;所以比较通常是不公平的。实际上,在大多数情况下,结果是不公平的;它工作得相当好的唯一情况是改变k-means的簇数,并保持其他一切不变。

从逻辑上讲,答案应该是肯定的:您可以按照相同的标准比较不同聚类数量和/或使用的聚类算法的解决方案。许多内部聚类标准中的大多数(其中一个是 Gap 统计量)并不(在专有意义上)与特定的聚类方法相关联:无论使用何种方法,它们都易于评估聚类。他们只是不“知道”被比较的具有不同数量集群的解决方案是来自相同的还是来自不同的集群方法。

然而,大多数标准应该应用于相同的聚类数据集,除非标准值是经过深思熟虑的标准化(这不是一件容易的事)。


PS 在他们合理的回答中,@Anony-Mousse 提出了一个我决定在上面隐瞒的方面。

通过将不同的算法与与某些目标函数相关的度量进行比较,您将更有可能衡量算法与[该标准]的相似程度,而不是它实际工作的好坏。

不存在平衡或“通用”的聚类标准;它们中的任何一个都与这个而不是那个聚类算法的目标函数具有某种同源性,因此它倾向于“偏好”一种算法而不是另一种算法(并且一种形状的聚类也优于另一种)。Gap statistic 保留了一些K-means 函数,而Silhouette 有明显的平均链接层次方法痕迹。它们与任何东西都不“正交”。聚类标准本身是一些聚类算法的目标函数,但尚未完全如此发明。如果一个算法在我们想要的标准判断时获胜,那么它对我们有好处(就集群可分离性而言)。目前还不清楚还有什么可能是衡量的how good it actually works(从内部验证的角度来看,