【问题标题】:What's a good metric to analyze the quality of the output of a clustering algorithm?什么是分析聚类算法输出质量的好指标?
【发布时间】:2015-01-05 14:55:45
【问题描述】:

我一直在尝试在 scipy 中实现 kmeans 聚类算法。是否有任何标准的、定义明确的指标可用于衡量生成的集群的质量?

即,我有由 kmeans 聚类的数据点的预期标签。现在,一旦我得到已生成的集群,我如何评估这些集群相对于预期标签的质量?

【问题讨论】:

标签: python algorithm cluster-analysis k-means metric


【解决方案1】:

当时我正在用 Spark 的 KMeans 做这件事。

我正在使用:

当它们都很小时(越少越好)时,​​这两个数量都承诺一个更好的集群。

【讨论】:

    【解决方案2】:

    在您的情况下,当您确实拥有样本真实标签时,验证非常容易。 首先,计算混淆矩阵(http://en.wikipedia.org/wiki/Confusion_matrix)。然后,从中得出所有相关度量:真阳性、假阴性、假阳性和真阴性。然后,您可以找到 Precision、Recall、Miss rate 等。

    确保您理解以上所有内容的含义。它们基本上告诉您您的聚类预测/识别数据的真实性质的程度。

    如果您使用的是 python,只需使用 sklearn 包: http://scikit-learn.org/stable/modules/model_evaluation.html

    此外,最好运行一些内部验证,以了解您的集群的分离程度。有已知的内部有效性度量,例如: 轮廓 数据库索引 邓恩指数 卡林斯基-哈拉巴斯测量 伽玛值 标准化切割 等等

    在此处阅读更多内容:集群有效性指数的广泛比较研究 Olatz Arbelaitz、Ibai Gurrutxaga、Javier Muguerza、Jesús M. Pérez、Iñigo Perona

    【讨论】:

    • 其实没那么容易,因为clusters != classes,所以混淆矩阵不允许你判断什么是“真阳性”,因为clusters之间没有一对一的对应关系和课程。
    • 然后,使用无监督测量(内部索引)
    • 也有监督索引。但它们的工作方式与您解释的不同......
    • 内部索引(Silhouette、DB 索引、Dunn 索引等)不需要标记数据,因此它们不受监督。
    • 是的,但是也有个用于聚类评估的监督索引。无监督索引通常偏向于 k-means 结果,因此在比较不同算法时 k-means 胜出...
    【解决方案3】:

    Kmeans 尝试最小化到聚类中心的平方距离之和。如果您按预期标签排序,我将使用您获得的集群将结果与 Kmeans 集群进行比较。

    结果有两种可能。如果 KMeans 平方和大于预期的标签聚类,那么您的 kmeans 实现是错误的,或者没有从一组好的初始聚类分配开始,您可以考虑增加使用或调试它的随机启动数。如果 KMeans 平方和小于预期标签聚类平方和,并且 KMeans 聚类与预期标签聚类不是很相似(即,从预期标签聚类中随机选择的两个点通常/不在当它们在/不在 KMeans 聚类中时相同的预期标签聚类)然后来自聚类中心的平方和不是将点分成聚类的好方法,您需要使用不同的距离函数或查看不同的属性或使用一种不同的聚类。

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 2014-01-26
      • 2015-05-03
      • 2010-09-27
      • 2016-08-16
      • 1970-01-01
      • 2019-09-15
      • 2017-04-19
      • 2012-03-30
      相关资源
      最近更新 更多