对于分类数据,是否存在没有相关变量的集群?

机器算法验证 聚类 分类数据 独立
2022-01-22 10:18:09

在试图解释聚类分析时,人们通常会误解该过程与变量是否相关。让人们摆脱这种困惑的一种方法是这样的情节:

在此处输入图像描述

这清楚地表明了是否存在聚类问题和变量是否相关问题之间的差异。但是,这仅说明了连续数据的区别。我在考虑带有分类数据的模拟时遇到了麻烦:

ID  property.A  property.B
1   yes         yes
2   yes         yes
3   yes         yes
4   yes         yes
5   no          no
6   no          no
7   no          no
8   no          no

我们可以看到有两个明确的集群:同时拥有 A 和 B 属性的人,以及都没有的人。但是,如果我们查看变量(例如,使用卡方检验),它们显然是相关的:

tab
#      B
# A     yes no
#   yes   4  0
#   no    0  4
chisq.test(tab)
# X-squared = 4.5, df = 1, p-value = 0.03389

我发现我不知道如何用分类数据构建一个类似于上面连续数据的例子。是否甚至可以在没有相关变量的情况下在纯分类数据中拥有集群?如果变量有两个以上的水平,或者你有更多的变量怎么办?如果观察的聚类确实需要变量之间的关系,反之亦然,这是否意味着当您只有分类数据时(即,您是否应该只分析变量)进行聚类并不值得?


更新:我在最初的问题中遗漏了很多内容,因为我只想专注于这样一个想法,即可以创建一个简单的示例,即使对于很大程度上不熟悉聚类分析的人来说也能立即直观。但是,我认识到很多聚类取决于距离和算法等的选择。如果我指定更多可能会有所帮助。

我认识到 Pearson 的相关性实际上只适用于连续数据。对于分类数据,我们可以考虑使用卡方检验(对于双向列联表)或对数线性模型(对于多路列联表)来评估分类变量的独立性。

对于算法,我们可以想象使用 k-medoids / PAM,它可以应用于连续情况和分类数据。(请注意,连续示例背后的部分意图是任何合理的聚类算法都应该能够检测到这些聚类,如果不能,则应该可以构建更极端的示例。)

关于距离的概念,我假设欧几里得是连续的例子,因为它对于一个天真的观众来说是最基本的。我认为与分类数据类似的距离(因为它是最直观的)将是简单的匹配。但是,如果这会导致解决方案或只是有趣的讨论,我愿意讨论其他距离。

4个回答

考虑具有不相关尺度变量的清晰集群情况 - 例如问题中的右上角图片。并对其数据进行分类。

在此处输入图像描述

我们将变量 X 和 Y 的尺度范围细分为 3 个箱,现在我们将其视为分类标签。此外,我们将声明它们是名义的,而不是序数的,因为所问的问题隐含地主要是关于定性数据。点的大小是频率交叉表单元格中的频率;同一单元格中的所有案例都被认为是相同的。

直观且最普遍地,“簇”被定义为由数据“空间”中的稀疏区域分隔的数据点凝块。它最初是规模数据,在分类数据的交叉表中保持相同的印象。X 和 Y 现在是分类的,但它们看起来仍然不相关:卡方关联非常接近于零。并且集群在那里。

但回想一下,我们正在处理表中顺序是任意的名义类别。我们可以根据需要重新排序整行和/或列,而不会影响观察到的卡方值。重新排序...

在此处输入图像描述

...遇见刚刚消失的星团。四个单元,a1、a3、c1 和 c3,可以合并在一个集群中。所以不,我们真的在分类数据中没有任何集群。

单元格 a1 和 c3(或类似的 a3 和 c1)的情况完全不同:它们不具有相同的属性。为了在我们的数据中诱导集群——a1 和 c3 形成集群——我们必须通过从数据集中删除这些案例,在很大程度上清空混淆单元格 a3 和 c1。

在此处输入图像描述

现在集群确实存在。但与此同时,我们失去了不相关性。表中显示的对角线结构表明卡方统计量远离零。

遗憾。让我们尝试同时保持不相关性和或多或少清晰的集群。例如,我们可以决定仅将单元格 a3 充分清空,然后将 a1+c1 视为与集群 c3 相对的集群:

在此处输入图像描述

那次操作并没有让卡方离零有任何距离......

[Indeed, table such as for example
 6   6   1
 6   6   1
 1   1   0
retains about the same very low chi-square association after
dividing 2nd column by 3 and multiplying 2nd row by 3, which gives
 6   2   1
18   6   3
 1  1/3  0
Cell (1,2) got thrice lower frequency. We had, however, to upheave
cell (2,1) frequency thrice, to keep Chi-sq almost as before.]

...但是集群的情况很混乱。聚类 a1+c1 包含部分相同、部分不同的案例。集群的同质性相对较低,这本身并不排除数据集中具有清晰的集群结构。然而,我们的分类数据的问题是集群 a1+c1 绝不集群 c1+c3 好,它的对称类似物。这意味着集群解决方案是不稳定的——它将取决于数据集中的案例顺序。一个不稳定的解决方案,即使它是相对“清晰的”,也是一个糟糕的解决方案,不可靠。

克服该问题并使解决方案既清晰又稳定的唯一方法是通过将单元格 c3 与单元格 c1 的数据移动到单元格 b3(或 b2)来解开单元格 c3 与单元格 c1 的关联。

在此处输入图像描述

所以我们有明确的集群 a1+c1 vs b3。但是看,这里再次出现了对角线模式 - 表格的卡方边界高于零。

结论不可能同时拥有两个卡方不相关的名义变量和良好的数据案例集群。清晰稳定的集群意味着诱导变量关联。

同样清楚的是,如果存在关联——即对角线模式存在或可通过重新排序实现——则必须存在集群。这是因为分类数据的性质(“全有或全无”)不允许半色调和边界条件,因此 OP 问题中左下角的图片不能出现分类、名义数据。

我推测,随着我们得到越来越多的名义变量(而不是只有两个),它们是双变量卡方不相关的,我们越来越接近拥有集群的可能性。但是零多元卡方,我预计仍然会与集群不兼容。这还必须展示(不是我,也不是这次)。


最后,对我部分支持的@Bey(又名 user75138)答案发表评论。我已经对此发表了评论,同意一个人必须首先决定距离度量和关联度量,然后他才能提出“变量关联是否独立于案例集群?”的问题。这是因为不存在通用的关联度量,也没有通用的集群统计定义。我还要补充一点,他还必须决定聚类技术。各种聚类方法不同地定义了它们所追求的“聚类”。因此,整个陈述可能是正确的。

也就是说,这种格言的弱点在于它太宽泛了。人们应该尝试具体说明,对于名义数据,距离度量/关联度量/聚类方法的选择是否以及在何处打开了协调不相关性与聚类性的空间。他会特别记住,并非所有二进制数据的许多邻近系数都对标称数据有意义,因为对于标称数据,“两种情况都缺乏此属性”永远不能成为它们相似性的基础。


更新,报告我的模拟结果。

重复地,随机生成 2 或 3 变量名义数据,变量中的类别数从 3 到 5 不等,总样本量从 300 到 600 不等。生成的数据集(Cramer 的 V 几乎从不高于)。此外,对于 3 变量数据,3 路卡方关联(主效应多项式模型)、Pearson 和对数似然较低且从不显着。.1

使用两种聚类分析方法对每个生成的数据集中的案例进行聚类 - 层次聚类(完整方法,Dice相似性度量)和两步聚类(基于对数似然距离)。然后,通过一些内部聚类标准(轮廓统计、点双列 、AIC 和 BIC)检查每个分析中的一系列聚类解决方案(根据解决方案中的聚类数量而变化),以寻找相对“好的”解决方案,表明存在清晰的簇。然后通过在数据集中排列案例顺序并在其上重新进行聚类来测试一个喜欢的解决方案的稳定性。r

调查结果通常支持上面答案中显示的推理。从来没有非常清晰的集群(例如,如果卡方关联很强,可能会发生)。并且不同聚类标准的结果经常相互矛盾(当聚类真的很清楚时,这不太可能发生)。

有时,层次聚类会提供一个不错的 k 聚类解决方案,如通过聚类标准图观察到的那样;但是,测试它的稳定性将无法证明它是稳定的。例如,这个 3 变量4x4x3数据

   V1  V2  V3   Count
    1   1   1   21
            2   24
            3   1
        2   1   22
            2   26
            3   1
        3   1   1
            2   1
            3   1
        4   1   17
            2   20
            3   1
    2   1   1   10
            2   12
            3   1
        2   1   10
            2   12
            3   1
        3   1   1
            2   1
            3   1
        4   1   8
            2   9
            3   1
    3   1   1   24
            2   28
            3   1
        2   1   25
            2   30
            3   1
        3   1   1
            2   1
            3   1
        4   1   19
            2   23
            3   1
    4   1   1   24
            2   28
            3   1
        2   1   26
            2   30
            3   1
        3   1   1
            2   1
            3   1
        4   1   19
            2   23
            3   1

当通过完整的链接层次方法聚类时,骰子相似性似乎被分成 - 相当合理 - 成 9 个聚类 - 在这种情况下,三个内部有效性判断者之间达成一致:

在此处输入图像描述

但该解决方案并不稳定,从原始解决方案的混淆矩阵与置换(案例重新排序)解决方案的不完全稀疏性可以看出:

在此处输入图像描述

如果解决方案是稳定的(因为它可能是我们连续的数据),我们会选择 9 集群解决方案作为足够有说服力的解决方案。

基于对数似然距离(与 Dice 相似度相反)的聚类可以提供稳定且“不错”(内部相当有效)的解决方案。但那是因为距离,至少在 SPSS 的 TwoStep 集群中,鼓励和培养人口多的集群而忽略人口少的集群。它不要求内部频率非常低的集群内部密集(这似乎是 TwoStep 集群分析的“策略”,它是专门为大数据设计的,并且给出的集群很少;所以小集群被视为异常值) . 例如,这些 2 变量数据

在此处输入图像描述

将由 TwoStep 稳定地组合成 5 个集群,并且根据一些集群标准判断,5 集群解决方案一点也不差。因为这四个人口密集的集群内部非常密集(实际上,所有案例都相同),只有一个包含少数案例的第五个集群是极度熵的。实际上很明显的是 12 集群解决方案,而不是 5 集群,但 12 是频率表中的单元总数,作为“集群解决方案”,这是微不足道的和无趣的。

我相信你知道,相关性是衡量两个变量之间线性关系的指标,而不是两个点之间的接近程度。这解释了前四个数字。

当然,您也可以为离散的实值数据创建类似的图表。

更抽象分布的问题,例如X{A,B,C,D}是,不像变量取值R,我们不能假设一个分类随机变量的图像形成一个度量空间我们会自动得到这个XR,但当我们有X在一些任意集合上取值。

在真正谈论几何意义上的聚类之前,您需要为分类空间定义一个度量。

考虑汉明距离——两个相等长度的字符串之间的汉明距离是对应符号不同的位置数。从这个定义可以看出,我们可以根据汉明距离生成具有聚类但变量之间没有相关性的数据。

下面是一个使用 Mathematica 的示例。

创建一些分类数据(4 个字符的均匀随机抽样的 3 个符号长序列):

chs = CharacterRange["a", "d"];
words = StringJoin @@@ Union[Table[RandomChoice[chs, 3], 40]];
Length[words]
words

(* 29 *)

(* {"aac", "aad", "abb", "aca", "acb", "acd", "adb", "adc", "baa", "bab", "bac", "bad", "bcc", "bcd", "caa", "cab", "cac", "cad", "cbb", "ccb", "cda", "cdb", "dab", "dba", "dbb", "dbd", "dca", "dcc", "dcd"} *)

对变量之间的关系使用镶嵌图(来自不同列的值对的条件概率):

Import["https://raw.githubusercontent.com/antononcube/MathematicaForPrediction/master/MosaicPlot.m"]
wordSeqs = Characters /@ words;
opts = {ColorRules -> {2 -> ColorData[7, "ColorList"]}, ImageSize -> 400};
Grid[{{MosaicPlot[wordSeqs[[All, {1, 2}]], 
    "ColumnNames" -> {"column 1", "column 2"}, opts],
   MosaicPlot[wordSeqs[[All, {2, 3}]], 
    "ColumnNames" -> {"column 2", "column 3"}, opts],
   MosaicPlot[wordSeqs[[All, {1, 3}]], 
    "ColumnNames" -> {"column 1", "column 3"}, opts]}}, Dividers -> All]

在此处输入图像描述

我们可以看到没有相关性。

查找集群:

cls = FindClusters[words, 3, DistanceFunction -> HammingDistance]

(* {{"aac", "aad", "adc", "bac"}, {"abb", "acb", "adb", "baa", "bab", "bad", 
  "caa", "cab", "cac", "cad", "cbb", "ccb", "cda", "cdb", "dab", 
  "dbb"}, {"aca", "acd", "bcc", "bcd", "dba", "dbd", "dca", "dcc", "dcd"}} *)

如果我们用一个整数替换每个字符,我们可以从这个图中看到集群是如何用汉明距离形成的:

esrules = Thread[chs -> Range[Length[chs]]]; gr1 = 
 ListPointPlot3D[Characters[cls] /. esrules, 
  PlotStyle -> {PointSize[0.02]}, PlotLegends -> Automatic, 
  FaceGrids -> {Bottom, Left, Back}];
gr2 = Graphics3D[
   Map[Text[#, Characters[#] /. esrules, {1, 1}] &, Flatten[cls]]];
Show[gr1, gr2]

在此处输入图像描述

进一步聚类

让我们通过连接汉明距离为 1 的单词来制作一个图:

mat = Clip[Outer[HammingDistance, words, words], {0, 1}, {0, 0}];
nngr = AdjacencyGraph[mat, 
  VertexLabels -> Thread[Range[Length[words]] -> words]]

在此处输入图像描述

现在让我们找到社区集群:

CommunityGraphPlot[nngr]

在此处输入图像描述

将图簇与找到的图簇FindClusters(被迫找到 3)进行比较。我们可以看到“bac”是高度集中的,“aad”可以属于绿色簇,对应于 3D 图中的簇 1。

图表数据

这是 的边缘列表nngr

{1 <-> 2, 1 <-> 8, 1 <-> 11, 1 <-> 17, 2 <-> 6, 2 <-> 12, 2 <-> 18, 
 3 <-> 5, 3 <-> 7, 3 <-> 19, 3 <-> 25, 4 <-> 5, 4 <-> 6, 4 <-> 27, 
 5 <-> 6, 5 <-> 7, 5 <-> 20, 6 <-> 14, 6 <-> 29, 7 <-> 8, 7 <-> 22, 
 9 <-> 10, 9 <-> 11, 9 <-> 12, 9 <-> 15, 10 <-> 11, 10 <-> 12, 
 10 <-> 16, 10 <-> 23, 11 <-> 12, 11 <-> 13, 11 <-> 17, 12 <-> 14, 
 12 <-> 18, 13 <-> 14, 13 <-> 28, 14 <-> 29, 15 <-> 16, 15 <-> 17, 
 15 <-> 18, 15 <-> 21, 16 <-> 17, 16 <-> 18, 16 <-> 19, 16 <-> 20, 
 16 <-> 22, 16 <-> 23, 17 <-> 18, 19 <-> 20, 19 <-> 22, 19 <-> 25, 
 20 <-> 22, 21 <-> 22, 23 <-> 25, 24 <-> 25, 24 <-> 26, 24 <-> 27, 
 25 <-> 26, 26 <-> 29, 27 <-> 28, 27 <-> 29, 28 <-> 29}

@ttnphns 关于成对多变量关联的观点很好。与此相关的是,在跳入多变量框架之前,关于展示与简单指标关联的重要性的旧观点。换句话说,如果简单的成对关联测量没有显示任何关系,那么多元关系也越来越不可能显示任何关系。我说“越来越不可能”是因为不愿意使用“不可能”这个词。此外,我不知道所采用的度量是否是序数数据的单调 Spearman 相关,Somer's D,Kendall's Tau,多变量相关,Reshef 的 MIC,Szelkey 的距离相关,等等。在这个讨论中,度量的选择并不重要。

在分类信息中寻找潜在结构的最初工作可以追溯到 50 年代初和哥伦比亚社会学家 Paul Lazersfeld。从本质上讲,他发明了一类潜变量模型,此后得到了广泛的发展和修改。首先,在 60 年代,加州大学政治经济学家詹姆斯·科尔曼 (James Coleman) 对潜在选民选举倾向的研究,其次是已故的社会学家克利福德·克洛格 (Clifford Clogg) 的贡献,他的 MELISSA 软件是第一个公开可用的潜在类免费软件。

在 80 年代,随着 Statistical Innovations 的 Latent Gold 等工具的开发,潜在类别模型从纯粹的分类信息扩展到有限混合模型。此外,营销科学家 Bill Dillon 开发了一个用于拟合潜在判别有限混合模型的高斯程序。关于这种拟合分类和连续信息混合的方法的文献实际上非常广泛。它只是在其应用最广泛的领域之外并不广为人知,例如,这些模型用于消费者细分和聚类的营销科学。

然而,这些用于潜在聚类和列联表分析的有限混合模型方法在当今的海量数据世界中被认为是老派。在大量列联表之间寻找关联的最先进技术是部署张量模型(例如由杜克大学的大卫·邓森和其他贝叶斯学派开发的那些)所提供的分解。这是他们一篇论文的摘要以及链接:

列联表分析通常依赖于对数线性模型,潜在结构分析提供了一种常见的替代方案。潜在结构模型导致多元分类数据的概率质量函数的低秩张量分解,而对数线性模型通过稀疏性实现降维。关于这两种范式中这些降维概念之间的关系知之甚少。我们得出了几个结果,将对数线性模型的支持与相关概率张量的非负秩相关联。受这些发现的启发,我们提出了一种新的折叠 Tucker 类张量分解,它连接了现有的 PARAFAC 和 Tucker 分解,为简约地表征多元分类数据提供了一个更灵活的框架。

https://arxiv.org/pdf/1404.0396.pdf