SPSS聚类分析完整教程
什么是聚类分析?
聚类分析是一种无监督学习方法,它的核心目标是:根据研究对象(如样本、变量)的多个特征,将它们划分为若干个不同的组(称为“簇”或“Cluster),使得同一组内的对象彼此相似,而不同组间的对象差异较大。

打个比方:
- 市场细分:根据客户的消费金额、购买频率、年龄等特征,将客户划分为“高价值客户”、“潜力客户”、“流失风险客户”等群体,以便进行精准营销。
- 图像分割:将图像中颜色、纹理相似的像素点归为一类,从而分割出不同的物体。
- 生物分类:根据物种的基因、形态特征,对物种进行分类。
在SPSS中,最常用的聚类方法是K-均值聚类和系统聚类,本教程将重点介绍最常用、最直观的K-均值聚类。
聚类分析前的准备工作
在开始分析前,你需要做好以下准备:
数据要求
- 变量类型:聚类分析使用连续型变量(如年龄、收入、分数、温度等),对于分类变量(如性别、地区、学历),直接使用效果不佳,通常需要先进行哑变量化处理。
- 数据量:样本量不宜过小,否则聚类结果不稳定,样本量应大于变量数的5-10倍。
- 缺失值:需要处理缺失值,可以通过删除含有缺失值的样本,或使用均值/中位数进行填充。
数据标准化
这是至关重要的一步!如果你的各个变量的量纲(单位)和数值范围差异很大(年龄在20-60岁之间,收入在20000-100000元之间),那么数值范围大的变量(如收入)会在聚类中占据主导地位,而数值范围小的变量(如年龄)的影响会被忽略。

解决方法:在聚类前,对所有变量进行标准化处理,将它们都转换到同一个量纲上(通常是均值为0,标准差为1)。
SPSS K-均值聚类分析实战步骤
假设我们有一个名为 customer_data.sav 的数据集,包含以下变量:
id: 客户IDage: 年龄income: 年收入(元)score: 消费评分(1-100)spending: 年消费金额(元)
我们的目标是根据这四个变量对客户进行分群。
步骤1:打开数据并标准化
- 打开SPSS,加载你的数据文件。
- 分析 -> 描述统计 -> 描述...
- 将
age,income,score,spending这四个变量移到“变量”框中。 - 勾选左下角的“将标准化得分另存为变量”,SPSS会为每个变量生成一个新的Z得分变量,变量名通常为原变量名前加
Z(如Zage,Zincome等)。 - 点击“确定”。
步骤2:运行K-均值聚类
-
分析 -> 分类 -> K-均值聚类...
(图片来源网络,侵删) -
变量选择:
- 将标准化后的变量(
Zage,Zincome,Zscore,Zspending)移到“变量”框中。 - 将
id移到“标注个案”框中,这样在结果中,每个客户都会显示其ID,便于识别。
- 将标准化后的变量(
-
聚类数:这是最关键的参数,你需要预先指定要分成多少个簇,如果你没有经验,可以先尝试一个常见的数字(如3或4),后续再通过结果验证其合理性,我们先输入 3。
-
迭代:点击“迭代”按钮,在“最大迭代次数”中,可以保持默认的10次,如果数据量很大或模型复杂,可以适当增加,点击“继续”。
-
保存:点击“保存”按钮。
- 勾选“聚类成员”,这会在你的数据文件中生成一个新变量(默认名为
QCL_1),记录每个样本所属的类别。 - 勾选“与聚类中心的距离”,这会生成一个新变量,记录每个样本到其所属类别中心的距离,点击“继续”。
- 勾选“聚类成员”,这会在你的数据文件中生成一个新变量(默认名为
-
选项:点击“选项”按钮。
- 在“统计”下,强烈建议勾选:
- 初始聚类中心:显示聚类开始时的初始中心点。
- ANOVA表:通过方差分析检验各变量在不同类别间是否存在显著差异,帮助判断聚类效果。
- 每个个案的聚类信息:显示每个样本的最终分类和到中心的距离。
- 在“缺失值”下,通常选择“按列表排除个案”,点击“继续”。
- 在“统计”下,强烈建议勾选:
-
点击“确定”,运行分析。
结果解读
SPSS会输出多个表格,我们来逐一解读。
初始聚类中心
这个表格显示了算法开始时的3个初始“种子”点,K-均值算法会根据这些初始点开始迭代。
迭代历史记录
这个表格显示了每次迭代后,各个聚类中心点的变化,你会看到,随着迭代次数增加,聚类中心的位置在不断调整,但变化的数值越来越小,当变化小于设定的标准时,算法停止。
解读:本例中,经过3次迭代,算法就收敛了,说明数据很快找到了稳定的聚类结构。
最终聚类中心
这是最重要的表格之一,它显示了最终形成的3个类别的中心点在每个变量上的均值(注意:这是标准化后的均值)。
如何解读?
- Cluster 1 (类别1):在
Zincome和Zspending上得分很高,在Zscore上得分中等,在Zage上得分较低,可以理解为“高消费、高收入、年轻”的客户群体。 - Cluster 2 (类别2):在
Zscore上得分非常高,但在其他变量上得分较低,可以理解为“高消费评分、但收入和消费额一般”的客户群体,可能是“精打细算”的潜力客户。 - Cluster 3 (类别3):在所有变量上的得分都较低或中等,可以理解为“普通”客户群体。
每个聚类中的个案数
这个表格简单明了地告诉你,每个类别包含多少个客户。
解读:
- 类别1有78个客户。
- 类别2有95个客户。
- 类别3有127个客户。 总样本数78+95+127=300,与数据集总数一致。
ANOVA表
这个表格通过方差分析来检验每个变量在三个类别间的均值是否存在显著差异。
解读:
- “F”列是F统计量,值越大说明组间差异越大。
- “Sig.”列是p值,如果p值 < 0.05,我们认为该变量在分类上起到了显著作用。
- 从结果看,所有变量的p值都为0.000,远小于0.05,说明我们选择的这四个变量对于区分这三个客户群体是非常有效的。
注意:这里的ANOVA检验结果仅作为参考,不能用来推断总体,因为聚类本身不是假设检验。
结果可视化与后续分析
表格数据还不够直观,我们可以用图表来展示聚类结果。
查看保存的聚类变量
回到你的数据视图,你会发现最后多出了两列:QCL_1(类别)和QCL_2(距离),你可以用这个QCL_1变量来筛选和查看不同类别的客户数据。
绘制散点图
为了直观地看到聚类效果,我们可以绘制两个重要变量的散点图,并用颜色区分不同类别。
- 图形 -> 图表构建程序...
- 在“选择自”区域,选择散点图/点图。
- 将一个散点图拖到上方预览区。
- 将
income(或Zincome) 拖到X轴。 - 将
spending(或Zspending) 拖到Y轴。 - 最关键的一步:将
QCL_1(聚类成员) 拖到“颜色”设置框中。 - 点击“确定”。
你会得到一张彩色的散点图,可以清晰地看到三个客户群体被分离开来,验证了聚类效果。
后续行动
聚类分析不是终点,而是起点,你需要根据聚类结果,为每个群体制定不同的策略:
- 类别1 (高价值年轻客户):可以推送高端新品、会员专属服务,提高忠诚度。
- 类别2 (高评分潜力客户):可以发放优惠券,鼓励他们提高消费额。
- 类别3 (普通客户):可以进行常规的促销活动,或者分析他们为何消费不高,寻找提升空间。
重要注意事项与常见问题
-
如何确定最佳聚类数(K值)?
- 肘部法则:运行不同K值(如从2到8)的K-均值聚类,记录每个K值对应的组内平方和,然后绘制K值与SSE的曲线图,当SSE下降趋势突然变缓,形成一个“肘部”形状时,对应的K值通常是较好的选择。
- 轮廓系数:这是一个更科学的指标,衡量样本与自身簇的相似度以及与其他簇的差异度,轮廓系数越接近1,说明聚类效果越好,你需要手动计算或使用插件。
- 业务理解:最终选择的K值必须结合你的业务逻辑,如果业务上很难解释分成5个群体,那么即使统计指标很好,也应该选择更合理的K值(如3或4)。
-
K-均值 vs. 系统聚类
- K-均值:需要预先指定K值,计算速度快,适合大数据集,但对初始中心点敏感,结果可能不稳定。
- 系统聚类:不需要预先指定K值,它会从每个样本自成一类开始,逐步合并,直到所有样本成为一类,你可以通过查看树状图来决定合适的K值,但计算速度较慢,不适合大数据集。
-
异常值敏感:K-均值对异常值非常敏感,一个极端值可能会严重影响聚类中心的位置,在进行聚类前,最好先检查并处理异常值。
希望这份详细的教程能帮助你掌握SPSS的聚类分析!祝你学习顺利!
