聚类分析与判别分析都属于分类问题的统计方法,但两者的出发点不同。聚类分析在没有先验类别信息的情况下,把相似的研究对象或变量归到同一类,属于无监督学习;判别分析则是在已知类别的前提下,建立判别规则,用于判断新对象属于哪一类,属于有监督学习。在医学研究中,聚类分析常用于探索疾病亚型或简化指标,判别分析常用于辅助诊断与预后分类。
方法说明
聚类分析按聚类对象分为两类:样本聚类称为Q型聚类,是把受试对象按多项指标聚成若干类,例如把患者分为不同亚型;变量聚类称为R型聚类,是把相关性高的变量归为一组,用于减少冗余指标。常见做法包括系统聚类(层次聚类)与K均值聚类。系统聚类按类间距离逐步合并,常用的类间距离定义有最短距离法、最长距离法、类平均法与Ward法;K均值聚类则需要先指定类别数K,通过反复迭代使类内平方和最小。
判别分析按前提条件可分为线性判别分析(LDA)与二次判别分析(QDA)。线性判别分析假设各类的协方差矩阵相等,并通常要求变量近似多元正态分布,据此建立线性判别函数;二次判别分析允许各类协方差矩阵不相等,判别边界为二次曲面,不需要组间协方差相等的假设,但需要估计的参数更多,对样本量要求也更高。
区别与前提条件
- 聚类分析无先验类别,结果带有探索性;判别分析有先验类别,结果用于预测。聚类得到的分组可以作为判别分析的分类标签。
- 聚类前必须对变量做标准化,否则量纲大或数值范围大的变量会主导距离计算。
- K均值聚类需要事先确定K,可用轮廓系数辅助判断,其取值在-1到1之间,越接近1说明聚类内越紧密、类间越分离,一般取轮廓系数较大的K;也可用肘部法,观察类内平方和随K增大的下降拐点。
- 线性判别分析要求各组协方差矩阵相等、变量近似正态,且样本量应大于变量个数;若各组协方差矩阵明显不等,应改用二次判别分析。
- 判别效果不能只看回代正确率,回代容易高估,应结合留一交叉验证或独立样本验证。
医学实例
为探索2型糖尿病患者的代谢表型,某研究测量了24名患者的4项指标:空腹血糖(mmol/L)、糖化血红蛋白(%)、总胆固醇(mmol/L)、甘油三酯(mmol/L)。下表为原始数据(数值仅作示例)。
| 编号 | 空腹血糖 | 糖化血红蛋白 | 总胆固醇 | 甘油三酯 |
| 1 | 11.2 | 9.6 | 5.1 | 1.8 |
| 2 | 10.5 | 9.2 | 4.8 | 1.6 |
| 3 | 12.1 | 10.1 | 5.4 | 2.0 |
| 4 | 11.8 | 9.8 | 5.0 | 1.7 |
| 5 | 10.9 | 9.4 | 4.6 | 1.5 |
| 6 | 11.5 | 9.9 | 5.3 | 1.9 |
| 7 | 12.4 | 10.3 | 5.2 | 1.8 |
| 8 | 11.0 | 9.5 | 4.9 | 1.6 |
| 9 | 7.2 | 6.9 | 7.8 | 4.2 |
| 10 | 6.8 | 6.6 | 7.2 | 3.8 |
| 11 | 7.5 | 7.1 | 8.1 | 4.5 |
| 12 | 6.9 | 6.7 | 7.5 | 4.0 |
| 13 | 7.1 | 6.8 | 7.0 | 3.7 |
| 14 | 7.8 | 7.2 | 8.3 | 4.6 |
| 15 | 6.6 | 6.4 | 6.9 | 3.5 |
| 16 | 7.3 | 7.0 | 7.6 | 4.1 |
| 17 | 6.1 | 6.1 | 4.5 | 1.4 |
| 18 | 5.8 | 5.9 | 4.3 | 1.3 |
| 19 | 6.3 | 6.2 | 4.7 | 1.5 |
| 20 | 5.9 | 6.0 | 4.4 | 1.2 |
| 21 | 6.4 | 6.3 | 4.6 | 1.4 |
| 22 | 5.7 | 5.8 | 4.2 | 1.1 |
| 23 | 6.2 | 6.1 | 4.8 | 1.6 |
| 24 | 6.0 | 5.9 | 4.5 | 1.3 |
先对4项指标做标准化,再用K均值聚类。为确定类别数,分别取K=2至K=5计算轮廓系数,结果如下表。
| K | 轮廓系数 |
| 2 | 0.55 |
| 3 | 0.68 |
| 4 | 0.54 |
| 5 | 0.47 |
K=3时轮廓系数最大,取3类。各类的中心(标准化前的均值)如下表。
| 类别 | 空腹血糖 | 糖化血红蛋白 | 总胆固醇 | 甘油三酯 | 例数 |
| 第1类 | 11.43 | 9.73 | 5.04 | 1.74 | 8 |
| 第2类 | 7.15 | 6.84 | 7.55 | 4.05 | 8 |
| 第3类 | 6.05 | 6.04 | 4.50 | 1.35 | 8 |
第1类以血糖显著升高为主,第2类以血脂升高为主,第3类各项指标相对平稳,提示该人群可能存在不同的代谢表型。进一步以这3类为分类标签,用4项指标建立线性判别分析,得到两个判别函数,用于评价这3类是否可以被有效区分。
判定与计算要点
- 聚类常用的距离度量是欧氏距离,应在标准化后的数据上计算。
- 系统聚类的类间距离定义会影响结果,Ward法倾向于得到大小较均匀的类,是较常用的选择。
- K均值聚类对初始中心敏感,应多次随机初始化并取较优结果,或先用系统聚类确定初始分组。
- 类别数可用轮廓系数、肘部法及专业可解释性综合确定,不宜仅凭主观指定。
- 线性判别分析可用Wilks' Lambda检验判别函数的统计学意义,其值越小说明组间差异越明显;判别效能常用回代正确率与交叉验证正确率评价。
结果解读
聚类结果显示,24名患者被分为3类,各类例数均为8,与数据中自然形成的3组相吻合。判别分析中,线性判别函数总体检验Wilks' Lambda=0.24,χ²=27.8,df=8,P<0.001,说明3类之间差异有统计学意义。回代正确率为91.7%(22/24),留一交叉验证正确率为83.3%(20/24),说明用这4项指标可以在一定程度上区分不同代谢表型的患者。若各类的协方差矩阵明显不相等,则应改用二次判别分析。
常见错误用法
- 不做标准化就直接聚类,使数值范围大的变量主导结果。
- 使用K均值聚类却不说明K是如何确定的,仅凭主观指定类别数。
- 把聚类得到的类别当作客观存在的疾病分型,忽略其探索性和样本依赖性。
- 把聚类分析与判别分析混为一谈,或对未知类别的数据直接套用判别分析。
- 在各类协方差矩阵明显不相等时仍使用线性判别分析,或样本量很小时使用二次判别分析。
- 只用同一批数据建立判别模型并计算回代正确率,未做交叉验证,导致效果被高估。
注意事项
聚类结果很大程度上取决于所选变量、距离度量与聚类方法,换一套变量或方法可能得到不同的分组,因此结论应结合专业知识判断,并通过多种方法互相印证。判别分析要求训练样本能代表总体,类别标签应准确、划分清晰;变量数相对样本量不能过多,否则模型不稳定。聚类得到的类别数并非越多越好,应兼顾类内一致性与类间分离度以及实际可解释性。聚类与判别常配合使用,先用聚类探索分组,再用判别分析建立分类规则并评估其区分能力。