在对数据集使用聚类分析对相似案例进行分组时,需要在大量聚类方法和距离度量中进行选择。有时,一种选择可能会影响另一种选择,但有许多可能的方法组合。
有人对如何在各种聚类算法/方法和距离度量中进行选择有任何建议吗?这与变量的性质(例如,分类的或数值的)和聚类问题有什么关系?有没有最佳技术?
在对数据集使用聚类分析对相似案例进行分组时,需要在大量聚类方法和距离度量中进行选择。有时,一种选择可能会影响另一种选择,但有许多可能的方法组合。
有人对如何在各种聚类算法/方法和距离度量中进行选择有任何建议吗?这与变量的性质(例如,分类的或数值的)和聚类问题有什么关系?有没有最佳技术?
您的问题没有明确的答案,因为即使在相同的方法中,选择表示个体(不)相似性的距离可能会产生不同的结果,例如在层次聚类中使用欧几里得与平方欧几里得时。作为另一个示例,对于二进制数据,您可以选择 Jaccard 索引作为相似度的度量,并继续进行经典的层次聚类;但是还有其他方法,例如 Mona ( Monothetic Analysis) 算法一次只考虑一个变量,而其他分层方法(例如经典 HC、Agnes、Diana)在每一步都使用所有变量。k-means 方法已经以各种方式进行了扩展,包括围绕中心点 (PAM) 或代表对象而不是质心进行分区 (Kaufman 和 Rousseuw, 1990),或模糊聚类 (Chung 和 Lee, 1992)。例如,k-means 和 PAM 之间的主要区别在于 PAM 最小化了差异的总和,而不是平方欧几里得距离的总和。模糊聚类允许考虑“部分成员资格”(我们将每个观察值关联到反映类成员资格的权重)。对于依赖概率框架的方法,或所谓的基于模型的聚类(或潜在轮廓分析)对于心理测量学家),有一个很棒的软件包:Mclust。因此,明确地说,您需要考虑如何定义个体的相似性以及将个体联系在一起的方法(递归或迭代聚类、严格或模糊类成员资格、无监督或半监督方法等)。
通常,为了评估集群稳定性,比较几个基本上“共享”一些相似性的算法是很有趣的(例如,k-means 和层次聚类,因为欧几里得距离对两者都有效)。为了评估两个集群解决方案之间的一致性,针对这个问题提出了一些建议,在哪里切割树状图?(另请参阅本网站上其他链接的交叉引用)。如果您使用的是 R,您将看到集群分析的任务视图中已经有几个包可用,并且几个包包括解释特定方法或提供案例研究的小插曲。
聚类分析:基本概念和算法很好地概述了聚类分析中使用的几种技术。至于最近一本带有 R 插图的好书,我推荐 Izenman 的第 12 章,Modern Multivariate Statistical Techniques (Springer, 2008)。下面给出了其他几个标准参考:
Hastie、Tibshirani 和 Friedman 的引述, 《统计学习的要素》,第 10 页。506:
“在获得聚类成功方面,适当的差异度量远比选择聚类算法重要得多。问题的这方面......取决于特定领域的知识,不太适合一般研究。”
(也就是说,如果(wibni)有一个网站,学生可以在一些小型标准数据集上尝试一些算法和指标,那不是很好吗?)
您无法提前知道哪种聚类算法会更好,但是有一些线索,例如,如果您想对图像进行聚类,则应首先尝试某些算法,例如 Fuzzy Art,或者如果您想对人脸进行分组,则应该开始使用(GGCI)图像的全局几何聚类。
无论如何,这并不能保证最好的结果,所以我要做的是使用一个允许您有条不紊地运行不同集群算法的程序,例如 weka、RapidMiner 甚至 R(这是非可视化的),我将把程序设置为使用所有可能的不同距离启动所有不同的聚类算法,如果它们需要参数,请使用各种不同的参数值对每种算法进行试验(如果我不知道聚类的数量,请使用各种它的数量)。完成实验后,让它继续运行,但请记住将每次聚类运行的结果存储在某个地方。
然后比较结果以获得最佳结果聚类。这很棘手,因为您可以比较多个指标,但并非所有算法都提供所有指标。例如,模糊聚类算法与非模糊聚类算法有不同的指标,但它们仍然可以通过将模糊结果组视为非模糊来进行比较,我将坚持与经典指标进行比较,例如:
• SSE:每个集群项目的平方误差之和。
• 簇间距离:每个簇质心之间的平方距离之和。
• 每个簇的簇内距离:从每个簇的项目到其质心的平方距离之和。
• 最大半径:从实例到其簇质心的最大距离。
• 平均半径:从实例到其簇质心的最大距离之和除以簇数。
选择合适的距离不是一项基本任务。当我们想对一个数据集进行聚类分析时,使用不同的距离可能会出现不同的结果,因此选择哪个距离非常重要,因为我们可以制作一个虚假的好人工制品来很好地捕捉可变性,但实际上没有感觉我们的问题。
当我有连续的数值变量并且我想反映绝对距离时,欧几里得距离是合适的。这个距离考虑了每个变量,并且没有消除冗余,所以如果我有三个解释相同(相关)的变量,我会将这个影响加权三。而且,这个距离不是尺度不变的,所以通常我必须先按比例来使用这个距离。
生态示例:我们在很多地方都有不同的观察,专家们对其中一些微生物、物理和化学因素进行了采样。我们想在生态系统中找到模式。这些因素具有很高的相关性,但我们知道每个人都是相关的,所以我们不想删除这些冗余。我们使用带有缩放数据的欧几里得距离来避免单位的影响。
当我有连续的数值变量并且我想反映绝对距离但我们想去除冗余时,马氏距离是合适的。如果我们有重复的变量,它们的重复效应就会消失。
当我们想要强调变量之间的差异时,当我们想要区分轮廓时,Hellinger族、物种轮廓和弦距离是合适的。这些距离按每个观察的总量加权,以这样的方式,当变量变化时,距离很小,个体更相似,尽管绝对量级非常不同。小心!这些距离很好地反映了剖面之间的差异,但失去了幅度效应。当我们有不同的样本量时,它们可能非常有用。 生态示例:我们想研究许多土地的动物群,并且我们有一个腹足类动物清单的数据矩阵(行中的采样位置和列中的物种名称)。该矩阵的特点是有许多零和不同的大小,因为一些地方有一些物种,而另一些地方有其他物种。我们可以使用 Hellinger 距离。
Bray-Curtis非常相似,但当我们想要区分轮廓并考虑相对大小时,它更合适。