在我之前的 JMP 博客文章中,我讨论了用于聚类的两种算法:k 均值和正态混合(使用期望最大化)。在这里,我看一个层次聚类的例子。
虽然 k 均值通常给出硬聚类分配(每个数据点仅属于一个聚类),但正态混合给出软聚类分配或概率聚类分配。在正常混合物聚类中,每个数据点(无论是人还是细胞培养物)都属于每一个以一定概率聚类。类似地,层次聚类允许我们将点视为属于多种的集群。但在层次聚类中,集群本质上是层次化的(也许很明显)。
何时使用层次聚类
当数据中存在层次结构时,层次聚类最有用。分层数据具有的组本身是由子组组成的,而子组又是由子组组成的……以此类推。例如,当我们观察血液时,我们可以看到红细胞、白细胞、血浆和血小板。 
白细胞内可以有中性粒细胞、嗜碱性粒细胞、淋巴细胞……以及许多其他细胞。 
淋巴细胞内可以含有 T 细胞、B 细胞和自然杀伤细胞。
T 细胞内可以有辅助 T 细胞、记忆 T 细胞、抑制性 T 细胞或杀伤性 T 细胞。我可以继续说下去,但这是一个统计博客,而不是免疫学博客。 
虽然查看非常特定的细胞组通常很有用,但在很多情况下我们需要概括并查看更高级别的细胞组,例如当医生查看血液测试中的白细胞计数时。 
根据购买习惯对客户进行分组时,您有时可能有足够的资金来创建 50 封不同的营销电子邮件,以满足购物者的特定习惯。但其他时候,您可能只有预算来创建五个。分层集群允许您选择任意数量的集群,同时提供尽可能内聚的集群。
长话短说:当您认为数据可能具有层次结构时,请使用层次聚类。事情真的可以这么简单。
凝聚层次聚类
JMP使用层次结构聚集性聚类(简称HAC),通过连续将相似的簇合并在一起,直到所有数据都在一个簇中来对数据中的层次关系进行建模。首先,每个数据点都是它自己的单例集群。但是,这非常孤独,因此我们将两个最接近的簇合并在一起以形成一个新的簇。然后我们合并下一个两个最接近的簇在一起,然后我们再做一次。然后再次。然后再次。直到所有数据都在一个簇中。我们经常将 HAC 称为自下而上的聚类,因为我们从底部开始,现在我们已经有了一个包含所有数据点的聚类。可以说整个团队都在这里。 
距离度量
决定哪些簇彼此接近并不总是那么简单。我们可以使用许多链接标准来确定两个簇之间的距离。
单身的连接将两个簇(A 和 B)之间的距离定义为最低限度 A 中任意点与 B 中任意点之间的距离。
平均的连接将簇(A 和 B)之间的距离定义为平均的A 中的点与 B 中的点之间的距离。 
完全的连接将簇(A 和 B)之间的距离定义为最大限度A 中任意点与 B 中任意点之间的距离。
这质心方法将簇(A 和 B)之间的距离定义为它们各自的平均向量(质心)之间的距离。 
沃德的方法与上面的方法略有不同。单变量方差分析不使用纯粹的距离测量,而是使用聚类分配作为组进行拟合。如果两个簇(A 和 B)产生以下结果,则将它们合并:最小的当 A 和 B 合并为一组运行另一个方差分析时,误差平方和会增加。从 我们的方差分析文章中,我们知道误差是之内群体变异。所以沃德的方法询问我们可以组合哪两组并且仍然具有低之内群体变异(即哪两组最相似)。 
如何阅读树状图
一旦我们确定了数据的层次结构,我们就可以检查任何级别的不同集群。我们经常想要对结构进行观察。最简单的方法是查看树状图。
树状图显示了聚类是如何组合的。在JMP中,Y 轴表示数据点/聚类,X 轴表示距离。例如,如果两个簇在树形图的较低位置(向左)连接,那么它们比在树形图的较高位置(更靠右侧)连接的其他两个簇更相似。 
底部(左)密集的树形图通常具有更可分离的簇,而底部(左)不密集的树形图往往具有可分离性更差、更分散的簇。
集群更像是一门艺术而不是一门科学,因此集群的解释可能需要领域专业知识才能产生有意义的东西。使用树状图,您可以创建从 1 到 N 的任意数量的聚类(其中 N 是您拥有的数据点的数量)。在任何级别“切割”树状图都会告诉您每个簇的成员资格。 
在 JMP 中
让我们看一下记录 150 个人的平均蛋白质、脂肪和碳水化合物克数的数据集。我们想要对这些不同的饮食进行分类的原因有很多。也许我们想看看不同的饮食是否有不同的心脏病发病率。或者也许我们想查看每个簇的胆固醇或铁水平。
在 JMP 中,执行层次聚类非常简单。只要去分析 > 聚类 > 层次聚类并选择要聚类的列。如果每个数据点都有名称或标签,请选择它并将其添加为标签。您还可以在此处选择链接标准。点击好的,JMP 将为您创建聚类和树状图。 
进入分层平台后,您可以按聚类对树状图进行着色,这可以帮助您在聚类中挑选出不同的模式。 
您还可以获取从 1 到 N 的任意数量的聚类的硬聚类分配(其中 N 是样本大小)。只需转到红色小三角菜单并选择簇数并输入您想要的号码。您还可以拖动树状图上的黑色小菱形来选择多个簇。然后返回红色小三角菜单并选择保存簇。当您选择 ak(聚类数)时,JMP 将在正好有 k 个聚类的位置“切割”树状图。
您还可以将图一侧的菱形拖动到树状图上要剪切的点。 
将聚类保存为列使我们能够更好地可视化聚类,并在进一步分析中使用聚类分配作为组变量(如方差分析以查看聚类成员资格是否对心脏病发生率有显着影响)。
当仅查看两个簇时,我们可以看到有一个相对较高的蛋白质、低碳水化合物、低脂肪簇,以及一个相对较低的蛋白质、高脂肪和碳水化合物簇。 
我们还可以考虑三簇解决方案,它使我们能够将高蛋白、低碳水化合物、低脂肪组分成极端组和更温和的组。层次结构帮助我们理解这些群体如何联系在一起,同时仍然允许我们在需要时将它们分开对待。 
JMP 将根据树状图下方显示的距离图为您推荐 ak。图表的 x 轴代表每次合并两个簇的时间。 y 轴表示最后连接的两个簇之间的距离。当斜率发生显着变化时,这意味着最后合并的两个簇相距相对较远。这表明其余簇相对独立,并且当前配置对于 k 来说是一个不错的选择。
该数据集的树状图在底部(左)最密集,这意味着可能存在一些可分离的簇,我们可以通过查看上面的图来确认这一点。
尝试一下
层次聚类(以及一般的聚类)并不是解决所有未标记数据问题的灵丹妙药。但它非常擅长对数据中的层次结构进行建模,有层次结构。它为我们提供了非层次聚类之外的信息,因为它告诉我们不同的聚类如何相互关联。如果我们需要合并或拆分集群,这些信息可能非常宝贵。层次聚类为您的数据分组方式提供了一定的灵活性,最终,我们都需要更加灵活一点。使用本文所附的数据表亲自尝试一下。
HCA 的相似轴在哪里? 我们如何打开它?
我简单地浏览了谷歌和手册,但什么也没找到。 在 JMP 的早期版本中,相似性是在 X 轴上描述的。 这被删除了吗?
@ASHU4JMP ,了解 JMP 报告各部分的最简单方法是使用问号工具在“工具”菜单中,单击报告中您有疑问的部分。
在您的情况下,单击该图表将带您进入树状图报告帮助页面在那里你会知道那是一个距离图。
距离图距离图是显示在树状图下方的图。 该图的每个步骤都有一个点,其中两个簇连接成一个簇。 横坐标表示簇的数量,从左到右依次递减。 该点的垂直坐标是在给定步骤中连接的簇之间的距离。
您可以单击并拖动树状图中的任一菱形手柄来控制所选的簇数。 单击并拖动菱形时,图中会出现一条垂直线,该线会根据簇数进行移动。 通常,距离图的斜率会在某个点趋于平稳。 这样的点表明自然中断,并帮助您确定簇的数量。
你好 Chelsea,我有一个与 HAC 相关的疑问。 请找到图片。 这张图有什么意义。
嗨切尔西,
感谢您的这篇文章。这是非常清楚和解释性的。
我有一个关于聚类的问题,我想知道你是否可以提供帮助。
我正在尝试使用相对较小的数据集(17 行和+/-90 列)进行分层(和 K 均值)聚类。
当我使用所有列进行聚类时,某些行被排除在聚类之外。 因此,根据所选的簇数,我可能有 1-2-3 等簇,但这些簇中的行数(观察值)小于 17(即,某些行根本没有分配任何簇)。
有什么理由会发生这种情况吗?
欢迎任何帮助。
谢谢!
阿西尔