KMeans 评估指标不收敛。这是正常行为吗?

问题描述 投票:0回答:3

我正在解决一个问题,需要在大约 125 个不同的数据集上单独运行 KMeans。因此,我希望以数学方式计算每个数据集的“最佳”K。然而,评估指标随着 K 值的升高而持续下降。

对于示例数据集,有 50K 行和 8 列。使用 sklearn 的 calinski-harabaz 分数,我迭代不同的 K 值来找到最佳/最小分数。然而,我的代码达到了 k=5,600,而 calinski-harabaz 分数仍在下降!

似乎发生了一些奇怪的事情。指标效果不好吗?我的数据是否有缺陷(请参阅我的有关 PCA 后标准化行的问题)?是否有另一种/更好的方法可以在数学上收敛到“最佳”K?或者我应该强迫自己在所有数据集中手动选择一个常数 K?

任何其他观点都会有帮助。

algorithm machine-learning scikit-learn k-means evaluation
3个回答
2
投票

我对 calinski-harabaz 分数一无所知,但一些分数指标将随着 K 的增加而单调增加/减少。例如,每次将新特征添加到线性回归中时,线性回归的均方误差总是会减少模型,因此开发了其他分数,这些分数增加了对增加特征数量的惩罚。

这里有一个非常好的答案,很好地涵盖了 CH 分数。通常适用于这些单调评分指标的一种简单方法是绘制 K 与分数的关系图,并选择分数不再“大幅”提高的 K。这是非常主观的,但仍然可以给出很好的结果。


1
投票

总结

指标随着K的每增加而减小;这强烈表明您在数据集上没有自然聚类。

讨论

CH 分数取决于簇内和簇间密度之间的比率。对于相对平滑的点分布,K 的每次增加都会给您带来稍微更密集的簇,并且它们之间的密度稍微更低。尝试点阵:改变半径并手动进行计算;你会看到它是如何工作的。在最极端,K = n:每个点都是自己的簇,密度无限,簇之间密度为 0。

其他指标

也许最简单的度量是平方和,它已经是聚类计算的一部分。对距质心的距离平方求和,除以 n-1(n=簇总体),然后对所有簇进行相加/平均。

我正在寻找一篇专门的论文来讨论这个问题的指标;如果我能找到参考,我会更新这个答案。

注意对于您选择的任何指标(如 CH),未能找到局部最小值表明数据确实不具有自然聚类。

下一步做什么?

以某种形式呈现您的数据可以可视化。如果看到自然聚类,请查看特征;为什么你能看到它,而代数(度量)却看不到?制定一个指标来突出您感知到的差异。

我知道,这与您尝试自动化的问题类似。欢迎大家前来研究。 :-)


0
投票

我的问题的问题是“最佳”Calinski-Harabaz 分数是最大值,而我的问题假设“最佳”是最小值。它是通过分析簇间色散与簇内色散的比率来计算的,前者/分子要最大化,后者/分母要最小化。事实证明,在此数据集中,“最佳”CH 分数是 2 个聚类(可用于比较的最小值)。我实际上是用 K=1 来运行的,这也产生了很好的结果。正如 Prune 所建议的,数据集中似乎没有自然分组。

© www.soinside.com 2019 - 2024. All rights reserved.