您能否通过交叉验证在没有基本事实的数据集上比较不同的聚类方法?

机器算法验证 机器学习 聚类 交叉验证 无监督学习
2022-03-26 01:54:38

目前,我正在尝试分析没有基本事实的文本文档数据集。有人告诉我,您可以使用 k 折交叉验证来比较不同的聚类方法。然而,我过去看到的例子使用了一个基本事实。有没有办法在这个数据集上使用 k-fold 方法来验证我的结果?

3个回答

我所知道的交叉验证在聚类中的唯一应用是这个:

  1. 将样本分为 4 部分训练集和 1 部分测试集。

  2. 将您的聚类方法应用于训练集。

  3. 也将其应用于测试集。

  4. 使用步骤 2 的结果将测试集中的每个观察值分配给训练集集群(例如,k-means 的最近质心)。

  5. 在测试集中,为步骤 3 中的每个集群计算该集群中的观察对数,其中每对也根据步骤 4 在同一集群中(从而避免@cbeleites 指出的集群识别问题)。除以每个簇中的对数得出一个比例。在所有集群中的最低比例是衡量该方法在预测新样本的集群成员方面的好坏程度。

  6. 从第 1 步开始重复训练和测试集中的不同部分,使其达到 5 倍。

Tibshirani & Walther (2005),“通过预测强度进行聚类验证”,计算与图形统计杂志14、3

我试图了解如何将交叉验证应用于聚类方法,例如 k-means,因为新的数据会改变质心,甚至改变现有数据的聚类分布。

关于聚类的无监督验证,您可能需要在重新采样的数据上量化具有不同聚类数的算法的稳定性。

聚类稳定性的基本思想如下图所示:

在此处输入图像描述

可以观察到,在聚类数为 2 或 5 的情况下,至少有两种不同的聚类结果(见图中的分割虚线),而在聚类数为 4 的情况下,结果相对稳定。

聚类稳定性:Ulrike von Luxburg 的概述可能会有所帮助。

重采样(例如在(迭代的)折交叉验证期间完成的)会生成“新”数据集,这些数据集通过删除一些案例而不同于原始数据集。k

为了便于解释和清楚起见,我将引导集群。

通常,您可以使用此类重采样聚类来衡量解决方案的稳定性:它几乎没有变化还是完全变化?

即使您没有基本事实,您当然可以比较同一方法(重采样)的不同运行产生的聚类或不同聚类算法的结果,例如通过制表:

km1 <- kmeans (iris [, 1:4], 3)
km2 <- kmeans (iris [, 1:4], 3)
table (km1$cluster, km2$cluster)

#      1  2  3
#   1 96  0  0
#   2  0  0 33
#   3  0 21  0

由于集群是名义上的,它们的顺序可以任意改变。但这意味着您可以更改顺序以使集群对应。然后对角线*元素计算分配给同一簇的案例,非对角线元素显示分配的变化方式:

table (km1$cluster, km2$cluster)[c (1, 3, 2), ]

#      1  2  3
#   1 96  0  0
#   3  0 21  0
#   2  0  0 33

我想说重采样是好的,以便确定您的聚类在每种方法中的稳定性。没有它,将结果与其他方法进行比较没有太大意义。

* 如果产生不同数量的簇,也适用于非方阵。然后我会对齐,以便元素具有前对角线的含义。额外的行/列然后显示新集群从哪些集群获得它的案例。i,i


您没有混合 k 折交叉验证和 k 均值聚类,是吗?