低轮廓宽度是否意味着数据几乎没有底层结构?

机器算法验证 聚类 电车
2022-03-05 15:21:27

我是序列分析的新手,我想知道如果基于最优匹配的相异矩阵的聚类分析的平均轮廓宽度 (ASW) 很低(大约 25),你会如何反应。得出结论认为几乎没有允许序列聚集的底层结构似乎合适吗?您是否可以忽略基于其他集群质量度量的低 ASW(我在下面粘贴了一些)?或者,在序列分析或随后的聚类分析期间做出的选择是否可能是造成低 ASW 数量的原因?

任何建议,将不胜感激。谢谢。

如果需要更多上下文:

我正在检查 20 多岁的人的 624 个工作时间不匹配序列(即,一个人喜欢在一周内工作的小时数与他们实际工作的小时数之间的不匹配)。我正在检查的所有序列的长度都是 10。我的序列对象有五个状态(M=想要更多时间,S=想要相同的时间,F=想要更少的时间,O=劳动力之外,U=失业)。

我还没有系统地说明 ASW 结果如何随不同的方法组合而变化。尽管如此,我还是尝试了中低 indel 成本(最大替代成本的 0.1 和 0.6——我更关心事件的顺序而不是它们的时间)和不同的聚类过程(ward、average 和 pam)。我的总体印象是反潜兵数量仍然很低。

也许低 ASW 结果是有道理的。我希望这些状态以各种不同的顺序出现,并且这些状态可以重复。删除重复的观察结果只会将 N 从 624 降低到 536。研究数据表明,确实存在很多我认为非常不同的多样性和序列,例如,一直想要相同时间的人,产生了不匹配,解决了不匹配,并在有和没有不匹配之间来回摆动。也许缺乏明显区分的集群与缺乏有趣的变化不同。尽管如此,微弱的聚类结果似乎让我没有一个很好的方法来总结序列。

Ward 方法的结果,其中 indel 设置为 2 的替代成本的 0.1 这些统计数据似乎表明 6 集群解决方案可能是好的。然而,ASW 很低——至少对于具有合理数量的集群的解决方案(2 或 3 太少)。

           PBC   HG HGSD  ASW ASWw     CH   R2   CHsq R2sq   HC
cluster2  0.56 0.78 0.75 0.38 0.38 110.76 0.15 241.65 0.28 0.14
cluster3  0.51 0.68 0.65 0.27 0.27 108.10 0.26 237.60 0.43 0.17
cluster4  0.54 0.74 0.71 0.25 0.25  88.66 0.30 203.72 0.50 0.14
cluster5  0.59 0.83 0.79 0.25 0.25  75.85 0.33 183.21 0.54 0.09
cluster6  0.59 0.85 0.82 0.24 0.25  66.94 0.35 164.51 0.57 0.08
cluster7  0.47 0.79 0.75 0.18 0.19  64.09 0.38 154.47 0.60 0.12
cluster8  0.47 0.81 0.77 0.20 0.21  59.47 0.40 152.36 0.63 0.11
cluster9  0.48 0.84 0.80 0.19 0.21  56.68 0.42 147.83 0.66 0.10
cluster10 0.47 0.86 0.82 0.19 0.21  53.24 0.44 140.18 0.67 0.08
1个回答

ASW 是聚类解决方案一致性的度量。高 ASW 值意味着聚类是同质的(所有观测值都靠近聚类中心),并且它们分离得很好。根据 Kaufmann 和 Rousseuw (1990),低于 0.25 的值意味着数据不是结构化的。在 0.25 和 0.5 之间,数据可能是结构化的,但也可能是一种技巧。请记住,这些值是指示性的,不应用作决策阈值。这些值不是理论上定义的(不是基于某些 p 值),而是基于作者的经验。因此,根据这些低 ASW 值,您的数据似乎非常非结构化。如果聚类分析的目的只是描述性的,那么您可以争辩说它揭示了一些(但只是一些)最显着的模式。然而,

您还可以尝试查看“每个集群”的 ASW 值(由函数给出wcClusterQuality)。也许您的某些集群定义明确,有些可能是“虚假的”(ASW<0),导致总体 ASW 值较低。

您可以尝试使用引导策略,这应该会给您更好的提示。在 Rclusterboot中,包中的函数fpc可用于此目的(查看帮助页面)。但是,它不适用于加权数据。如果您的数据未加权,我认为值得一试。

最后,您可能希望仔细查看您的数据和分类。也许,您的类别太不稳定或定义不明确。但是,这里似乎并非如此。

正如您所说,“缺乏明确区分的集群与缺乏有趣的变化不同”。还有其他方法可以分析序列的可变性,例如差异分析。这些方法允许您研究序列和解释因素之间的联系。例如,您可以尝试构建序列回归树(TraMineR 包中的函数“seqtree”)。