SPSS 聚类分析完整教程
第一部分:聚类分析基础知识
在开始操作之前,我们需要先理解几个核心概念。

什么是聚类分析?
聚类分析是一种无监督的机器学习方法,旨在将一批样本(如客户、产品、地区等)根据其特征变量(如消费金额、年龄、购买频率等)划分为若干个不同的组(即“簇”或“Cluster”),它的目标是让同一个簇内的样本尽可能相似,而不同簇之间的样本尽可能不同。
物以类聚,人以群分”的自动化过程。
主要的聚类方法

SPSS 主要提供两种聚类方法:
-
K-均值聚类
- 原理: 预先设定要分成 K 个簇,然后通过迭代算法,将每个样本分配到距离它最近的“簇中心”(质心)所在的簇中,并不断更新簇中心,直到簇中心不再发生显著变化。
- 特点:
- 优点: 计算速度快,适用于大数据集。
- 缺点: 需要预先指定 K 值(簇的数量),对初始簇中心的选择敏感,结果可能不是全局最优。
- 适用数据: 适用于数值型(连续)变量,样本量较大的情况,这是最常用、最基础的聚类方法。
-
系统聚类
- 原理: 也称为层次聚类,它不需要预先指定 K 值,该方法首先将每个样本视为一个独立的簇,然后逐步合并距离最近的两个簇,直到所有样本都合并成一个簇,整个过程形成一个树状图,可以根据需要“剪枝”来得到不同数量的簇。
- 特点:
- 优点: 不需要预先指定 K 值,可以生成直观的树状图。
- 缺点: 计算量大,不适用于非常大的数据集。
- 适用数据: 对数据类型要求不那么严格,可以处理数值型和分类变量(但需要特殊处理)。
本教程将以最常用的 K-均值聚类为例进行讲解。

第二部分:实战案例 - 客户分群分析
假设我们是一家零售公司,希望对现有客户进行分群,以便进行精准营销,我们收集了客户的以下数据:
id: 客户编号age: 年龄income: 年收入(万元)spending_score: 消费指数(1-100,分数越高消费越频繁)purchase_freq: 年购买频率(次)
我们的目标是根据 age, income, spending_score, purchase_freq 这四个变量,将客户自动分成几类。
第三部分:SPSS 操作步骤
步骤 1:数据准备与标准化
聚类分析对变量的量纲非常敏感,如果变量的量纲差异很大(年龄在 20-60 岁,年收入在 5-100 万元),量纲大的变量会主导聚类结果,在进行聚类前,强烈建议对所有数值型变量进行标准化处理。
- 打开 SPSS,将你的数据粘贴进去。
- 点击菜单栏的
分析->描述统计->描述...。 - 将需要进行聚类的变量(
age,income,spending_score,purchase_freq)从左侧移到右侧的变量框中。 - 勾选左下角的
将标准化得分另存为变量。 - 点击
确定。
操作完成后,你会在数据视图中看到新生成了四个以 Z 开头的变量(如 Zage, Zincome 等),这些就是标准化后的变量,它们的均值都为 0,标准差都为 1,后续我们将使用这些标准化后的变量进行聚类。
步骤 2:运行 K-均值聚类
- 点击菜单栏的
分析->分类->K-均值聚类...。 - 在弹出的对话框中:
变量:将标准化后的变量(Zage,Zincome,Zspending_score,Zpurchase_freq)移入此框。个案标记依据:将id移入此框,这样在结果中可以识别出每个客户属于哪个簇。聚类数:这是最关键的一步,我们需要预先设定要分成几类,可以先尝试一个初始值,4,如何确定最佳 K 值,我们将在后续步骤中讨论。方法:选择迭代与分类(这是默认选项,也是最常用的方法)。保存:点击此按钮,勾选聚类成员,这会在你的数据文件中生成一个新变量(如QCL_1),记录每个客户所属的类别,方便后续分析。选项:点击此按钮,进行重要设置:- 勾选
初始聚类中心:查看算法初始的种子点。 - 勾选
ANOVA 表:通过方差分析检验各变量在不同簇间是否存在显著差异,帮助判断聚类效果。 - 勾选
聚类信息:显示每个簇的样本数量。 - 勾选
每个个案的聚类信息:显示每个样本的最终聚类中心距离。
- 勾选
- 设置完成后,依次点击
继续->确定,运行分析。
第四部分:结果解读
SPSS 会输出多个表格,我们来逐一解读。
最终聚类中心
这个表格展示了每个簇的最终“中心点”在各变量上的均值(基于标准化数据)。
- 解读方法: 比较每一列(代表一个簇)的数值。
- 簇 1:
Zincome和Zspending_score的值都很高,这代表 “高价值客户” — 他们收入高,消费也高。 - 簇 2:
Zspending_score和Zpurchase_freq的值很低,但Zage可能偏高,这代表 “低价值/流失风险客户” — 他们消费不积极,购买频率低。 - 簇 3:
Zincome低,但Zspending_score和Zpurchase_freq高,这代表 “潜力/年轻客户” — 他们可能收入不高,但消费热情很高,是未来的潜力股。 - 簇 4:所有变量的值都比较中等,这代表 “普通大众客户” — 他们表现平平,是客户群的主体。
- 簇 1:
每个聚类中的案例数
这个表格简单明了地告诉你每个簇有多少个客户。
- 解读: 从这里可以看出客户群的分布情况,高价值客户(簇 1)可能只有 50 人,而普通大众客户(簇 4)可能有 200 人。
ANOVA 表
这个表格通过方差分析检验了每个变量在各个簇之间是否存在显著差异。
- 解读方法:
- 看
Sig.列(即 p 值)。 - p 值 < 0.05,说明该变量在不同簇之间存在显著差异,该变量用于聚类是有效的。
- 在这个例子中,所有变量的 p 值都远小于 0.05,说明我们的聚类结果是有效的,各个簇在这些特征上确实存在明显不同。
- 看
聚类成员
这个表格(或数据视图中的新变量 QCL_1)列出了每个客户具体被分到了哪个簇,你可以根据这个结果,对每个客户群进行标签化,并制定相应的营销策略。
第五部分:如何确定最佳聚类数 K?
这是一个核心问题,我们之前随意设了 K=4,如何验证这是否是最佳选择?
肘部法则
- 重新打开
分析->分类->K-均值聚类...。 - 点击
保存,勾选与聚类中心的距离,这会生成一个新变量,记录每个点到其所属簇中心的距离平方和。 - 点击
继续。 - 点击
选项,勾选初始聚类中心和ANOVA 表。 - 关键步骤: 在主对话框中,点击
迭代...,将最大迭代次数设置一个较大的值,如 20。 - 依次点击
继续->确定。
我们需要手动计算“总簇内平方和”(Within-Cluster Sum of Squares, WCSS)。
- 在 SPSS 中,点击
转换->计算变量...。 目标变量输入WCSS。数字表达式输入SUM($distance),$distance是你刚刚保存的“与聚类中心的距离”变量。- 点击
确定,你会在数据最后一行看到 WCSS 的值。 - 重复以上过程,分别尝试 K=2, K=3, K=5, K=6... 并记录下每个 K 对应的 WCSS 值。
- 以 K 为横坐标,WCSS 为纵坐标,绘制折线图。
- 解读: 观察折线图,你会看到曲线开始时下降很快,然后变得平缓,这个“拐点”(Elbow)就像是手肘的形状,这个点对应的 K 值就是比较合理的聚类数,如果拐点在 K=4 处,那么将客户分为 4 类是比较合适的。
轮廓系数
SPSS 本身不直接提供轮廓系数,但你可以通过插件(如 R 或 Python 插件)或手动计算,轮廓系数结合了簇的“内聚度”(样本在簇内的紧密程度)和“分离度”(簇与簇之间的分离程度),值越接近 1 表示聚类效果越好。
第六部分:聚类结果的后续应用
聚类分析本身不是终点,而是起点,得到客户分群后,你需要:
- 为每个群组命名和画像: 如“高价值客户”、“潜力客户”、“流失风险客户”等。
- 制定差异化策略:
- 对“高价值客户”:提供 VIP 服务、新品优先体验、专属折扣,维持其忠诚度。
- 对“潜力客户”:发放优惠券、推送促销信息,鼓励他们提高消费额。
- 对“流失风险客户”:进行客户回访,了解原因,提供挽回方案。
- 对“普通客户”:保持常规营销,观察其行为变化,看其是否向其他群组转化。
| 步骤 | 关键操作 | 目的 |
|---|---|---|
| 准备数据 | 对数值型变量进行 标准化 (描述 -> 将标准化得分另存为变量) |
消除量纲影响,确保所有变量平等参与聚类。 |
| 运行分析 | 分析 -> 分类 -> K-均值聚类,设定 聚类数,并保存聚类成员 |
执行聚类算法,并获得每个样本的类别归属。 |
| 解读结果 | 查看 最终聚类中心 和 ANOVA 表 |
理解每个群组的特征,并验证聚类效果的有效性。 |
| 确定 K 值 | 使用 肘部法则 等方法,尝试不同 K 值并比较结果 |
找到最合理的聚类数量。 |
| 应用结果 | 为群组命名,并制定针对性的营销或管理策略 | 将分析结果转化为商业价值。 |
希望这份详细的教程能帮助你顺利掌握 SPSS 的聚类分析!祝你分析顺利!
