我正在对标记的数据集执行聚类。我想检查聚类的质量。有没有一种被广泛接受的方式来做到这一点?
所以基本上我想执行一些类似分类的过程,我将确定聚类的质量,因为我已经有了标记的数据集。这有意义吗?怎么做?
我正在对标记的数据集执行聚类。我想检查聚类的质量。有没有一种被广泛接受的方式来做到这一点?
所以基本上我想执行一些类似分类的过程,我将确定聚类的质量,因为我已经有了标记的数据集。这有意义吗?怎么做?
有许多度量可用于标记数据。
例如,如果您在鼠标数据集上

您会得到以下评估结果(使用ELKI):

显然,它的效果并不好。如果您知道这个玩具数据集,k-means 就不能很好地处理它,因为集群的大小差异太大。
这些是外部评估措施。如果标签对应于集群,它们会很好地工作。如果您使用的是分类数据,标签可能根本不对应集群;但有些类可能形成一个大集群,或者一个类可能分成多个集群。也可能有异常值。它们在合成数据上运行良好,但真实数据从来没有这样的标签。
因此,虽然这些措施对于试验来说是一件好事,但它们有很大的问题......恕我直言,它们的结果可能完全具有误导性。如果标签与数据聚类结构不对应,那么运行良好的聚类算法可能在这种度量上得分非常低。
聚类只是不是分类。这是相当正交的。
如果您的数据被标记,那是您的数据集的真正分类。然后,您可以应用任何已知的聚类方法(分层、kmeans 或基于模型的聚类)并使用调整后的 RandIndex。这是 R 中 mclust 包中的一个函数。Adjusted Rand Index 表示聚类的相似程度,当值为 1 时表示它们相同。因此,您将 tue 聚类与不同聚类方法的结果进行比较。R 中还有另一个函数可以做与错误率或类似的事情大致相同的事情,它会根据您选择的聚类方法计算真正识别的聚类的比例。
聚类通常用于无监督分类 - 也就是说,当您试图发现可能存在但您不知道的组时。
如果要将单元分类为已知组,可以查看多项逻辑回归或分类树和相关方法。