案例数据
200 家零售门店 × 5 列连续经营指标(月销售额、客单价、月客流量、库存周转、员工效率),演示凝聚式分层聚类(agglomerative):先比较 4 种 linkage 的 cophenetic 相关选最优、再用 ward 树状图自底向上合并,最后在切割高度处把门店分成 4 类典型业态。
| 文件名 | hir_cluster.xlsx |
|---|---|
| 样本量 | 200 行 |
| 变量数 | 5 列连续经营指标 + 1 列门店ID |
| 数据用途 | 门店分群:基于 5 维经营指标识别社区便利 / 折扣促销 / 商圈旗舰 / 高端精品 4 类业态 |
| 变量说明 | 月销售额(万元)、客单价(元)、月客流量(人次)、库存周转(次/月)、员工效率(千元/人)。 |
完整案例
1. 背景
某连锁零售集团旗下 200 家门店业态混杂:既有社区便利店、又有折扣超市、商圈旗舰店、高端精品店,过去靠运营经验做粗放分类,无法准确归属预算与考核指标。本案例用凝聚式分层聚类(agglomerative hierarchical clustering)对 5 维经营指标做自底向上合并:与 K-means 必须预设 K、对初始中心敏感不同,分层聚类不需要预先指定簇数,而是输出一棵完整的树状图(dendrogram),业务方可根据"切割高度"灵活在 K=3/4/5 之间选择粒度。难点在 linkage 方法的选择 —— ward / complete / average / single 各自的合并准则差异很大,需用 cophenetic 相关系数衡量哪种 linkage 最忠实地保留了原始距离结构,再做最终切割与业态命名。
2. 理论与公式
凝聚式分层聚类从每个样本各自成簇开始,每一步把"最近"的两个簇合并,直到全部样本归入一簇,过程被编码为linkage 矩阵((n−1)×4),并可视化为树状图。"最近"的定义由 linkage 方法决定;切割高度决定最终簇数。
合并使类内平方和增量最小。对连续变量、近球形簇效果最好,是工业界默认选择。
complete 抗噪、产生紧凑簇;average 平衡;single 易"链式效应"。
原始距离与树状图诱导距离的相关;c ∈ [0,1],越接近 1 说明树状图越能保留原距离结构,是选 linkage 的核心指标(一般 >0.75 视为合格)。
3. 数据结构
每行 1 家门店,5 列连续经营指标。所有变量量纲差异大(万元 vs 人次 vs 次/月),必须先做 Z-score 标准化,否则月客流量(数量级 104)会主导欧氏距离:
| 变量名 | 类型 | 单位 / 取值 | 业务含义 |
|---|---|---|---|
| 门店ID | 字符 | S1000-S1199 | 门店唯一编号(不参与聚类) |
| 月销售额 | 连续 | 万元(约 25-150) | 门店近 30 天总销售金额 |
| 客单价 | 连续 | 元(约 20-700) | 单笔订单平均金额,反映消费档次 |
| 月客流量 | 连续 | 人次(约 2500-30000) | 月进店人数,反映人气 |
| 库存周转 | 连续 | 次/月(约 1.5-16) | 月库存周转次数,反映流动性 |
| 员工效率 | 连续 | 千元/人(约 4-30) | 人均月产出,反映坪效 |
分层聚类计算复杂度为 O(n²),存储为 n×n 距离矩阵,本案例 n=200 完全可行;若 n > 10000 则建议改用 K-means 或 BIRCH。聚类前必须标准化,否则量纲大的变量会主导距离。
4. 操作步骤
- 登录 SPSSzero,进入 工作台 → 上传
hir_cluster.xlsx - 左侧方法栏 → 进阶方法 → 点击 分层聚类(Hierarchical)
- 把 5 个变量(月销售额 / 客单价 / 月客流量 / 库存周转 / 员工效率)拖入 聚类变量 框;门店ID 不入
- 选择 距离度量 = 欧氏距离;先用系统对比四种 linkage(ward / complete / average / single)的 cophenetic 相关,挑相关最高 + 业务可解释的方法
- 选定 linkage = ward,生成 linkage 矩阵(199 行 × 4 列)并绘制树状图
- 在树状图上观察"高度断层",设置切割准则(按簇数 K 或按高度 t);本案例选 K=4
- 查看 4 类门店的聚类中心表 + 各变量 ANOVA F 检验 + 业态命名建议
5. 结果表格与结果阅读
结果区按 选 linkage → 切割 → 看簇 → 验证变量 四步输出。下面是分层聚类在 hir_cluster.xlsx 上的实测结果(Z-score 标准化后、欧氏距离、seed=20260517):
| linkage 方法 | Cophenetic 相关 | 合并准则 | 簇形偏好 | 判定 |
|---|---|---|---|---|
| average | 0.911 | 类间平均距离 | 平衡 | 距离保真度最高 |
| complete | 0.906 | 类间最大距离 | 紧凑球形 | 距离保真度次高 |
| ward | 0.898 | 类内方差最小增量 | 等大球形 | 业务最优 ✓ |
| single | 0.888 | 类间最小距离 | 链式松散 | 易链式效应 |
| 四种 linkage 的 cophenetic 相关均 > 0.88(远高于 0.75 阈值)→ 数据结构清晰、不同 linkage 都能较好保留原距离。average 最高但常产生大小悬殊的簇;ward 虽相关略低(0.898)但合并准则等价于"最小化类内 SSE",输出的簇规模均衡、与 K-means 思想一致,业务可解释性最强,故最终选 ward。 | ||||
linkage 不是单纯比 cophenetic 数值 —— 还要看簇规模是否均衡、是否出现"巨簇 + 孤立点"。本案例 single linkage 切到 K=4 时簇规模为 120 / 50 / 29 / 1(出现仅含 1 个样本的孤立簇),典型链式效应,被判出局。
| 变量 | 簇1(n=30) | 簇2(n=50) | 簇3(n=68) | 簇4(n=52) | F | p |
|---|---|---|---|---|---|---|
| 月销售额(万元) | 112.14 | 93.76 | 37.67 | 49.93 | 539.43 | <0.001 |
| 客单价(元) | 523.4 | 120.8 | 28.6 | 35.7 | 1486.54 | <0.001 |
| 月客流量(人次) | 3455 | 17103 | 11896 | 21906 | 516.74 | <0.001 |
| 库存周转(次/月) | 2.68 | 5.33 | 8.51 | 12.08 | 356.43 | <0.001 |
| 员工效率(千元/人) | 21.51 | 14.65 | 7.96 | 6.55 | 650.00 | <0.001 |
| 加粗为该变量上数值最高的簇。5 个变量的 ANOVA 全部 p<0.001 → 全部对聚类有显著区分力;客单价(F=1486)区分力最强 → 高端 vs 平价是最大分裂维度;员工效率(F=650)次之;库存周转(F=356)最弱但仍达极显著水平。 | ||||||
分层聚类的"中心"是切割后每个簇内样本的均值(不是迭代收敛的中心)。簇号由 fcluster 自动编号,与业务标签无固定对应,需结合中心的相对位置人工命名。
| 簇号 | 样本数 | 占比 | 业态命名 | 核心特征 |
|---|---|---|---|---|
| 簇 1 | 30 | 15.0% | 高端精品店 | 客单价 523 元领跑、员工效率 21.5 千元/人最高、客流仅 3455 人次(少而精) |
| 簇 2 | 50 | 25.0% | 商圈旗舰店 | 月销售额 94 万、客单价 121 元、客流 1.7 万人次(量价齐升) |
| 簇 3 | 68 | 34.0% | 社区便利店 | 客单价仅 29 元、销售额 38 万、库存周转 8.5 次(小而频) |
| 簇 4 | 52 | 26.0% | 折扣促销店 | 客流 2.2 万领跑、库存周转 12.1 次最高、员工效率仅 6.5(薄利多销) |
| 4 类规模分布合理(15%-34%),无极端小簇;切割高度选 K=4 而非 K=3 — K=3 会把社区便利与折扣促销合并(两者客单价都很低,但库存周转与客流差异显著),业务上需要拆分以制定不同补货策略。 | ||||
7. 文字分析
对 200 家门店的凝聚式分层聚类(ward + K=4)综合分析:
- linkage 选择:四种 linkage 的 cophenetic 相关均 > 0.88,距离保真度都合格;average 数值最高(0.911)但实际切割会产生不均衡簇,single 链式效应严重;ward 综合 cophenetic(0.898)+ 均衡簇规模 + 与 K-means 同源的"最小类内方差"准则成为最优选择。
- 切割粒度:观察 ward 树状图发现 K=3→K=4 是最后一个高度断层明显的合并节点(K=5 之后断层间距骤减),选 K=4;切到 K=3 会损失"社区便利 vs 折扣促销"的拆分(两者客单价相近但库存周转差 3.6 倍),切到 K=5 会把"商圈旗舰"再分为两个亚类、业务无法命名。
- 4 类业态画像:①高端精品店(15.0%,客单 523 元 / 效率 21.5):少而贵的"贵宾业态",靠客单价撑销售;②商圈旗舰店(25.0%,月销 94 万 / 客流 1.7 万):量价齐升的"全能业态",标杆贡献;③社区便利店(34.0%,客单 29 元 / 销售 38 万):占比最大的"民生业态",靠数量铺规模;④折扣促销店(26.0%,客流 2.2 万 / 周转 12.1 次):薄利多销的"流量业态",赚周转钱。
- 关键变量贡献:5 个变量 ANOVA 全部 p<0.001,区分力排序为 客单价(F=1487)> 员工效率(F=650)> 月销售额(F=539)> 月客流量(F=517)> 库存周转(F=356);客单价是第一分裂维度,把高端精品(523 元)与其他三类(< 130 元)首先切开;员工效率反映坪效,是辨别"贵宾业态 vs 流量业态"的关键。
- 业务建议:①高端精品店 → 增加 VIP 私享 + 高毛利新品独家发售,避免上促销稀释客单价;②商圈旗舰店 → 设为复合业态实验场(高毛利 + 引流款);③社区便利店 → 提升 SKU 周转(当前 8.5 次离折扣店 12.1 次有空间)+ 试点会员储值;④折扣促销店 → 守住客流优势,借工厂直供把员工效率从 6.5 拉到 8 以上。
8. 剖析提醒
分层聚类计算复杂度为 O(n²) 空间 + O(n²log n) 时间,n=200 仅秒级、n=10000 需 800MB 内存且分钟级,不适合大数据 — 大样本应改用 K-means / Mini-Batch K-means / BIRCH。对异常值极敏感,离群点会被孤立成单点簇拉高树状图,聚类前务必先用 IQR / 3σ 法剔除极端样本。与 K-means 相比,分层聚类的优势在于 ①不需预设 K、可一次输出所有粒度的切割方案,②输出树状图便于业务理解层次关系;劣势在于 ①计算开销大、不能扩展到百万级数据,②合并过程不可逆(贪心策略,早期错合并无法纠正)。实际项目中常用组合策略:先用分层聚类在小样本上确定 K,再用 K-means 把方案推广到全量数据。