
聚类分析这东西入门容易用明白难。很多人一开始接触的就是“把样本分成几堆”跑个K-means就算完事但这其实只是聚类分析里很小的一块。标题里这个“Q型聚类”和“R型聚类”才是理解整个聚类分析体系的关键分叉口。简单说一个是对样本行做聚类一个是对变量列做聚类但背后的逻辑、计算对象、适用场景完全不是一回事。这篇就把这两种聚类的来龙去脉、实操步骤、常见坑一次说清楚顺带把自然断点法、K-means、DBSCAN这些容易混淆的概念也一起捋明白。1. 先搞清楚什么是Q型聚类、什么是R型聚类1.1 一句话本质区别数据结构长什么样你得先有个画面感。任何一张分析用的数据表行是样本列是变量。比如电商公司拉一张用户表每一行是一个用户每一列是“注册天数”“累计消费金额”“最近一次登录距今天数”。那么Q型聚类对行做聚类把用户分成几组。同一组里的用户在这些变量上的表现相似。R型聚类对列做聚类把变量分成几组。同一组里的变量彼此相关性高或者说它们衡量的是同一种东西。所以Q型聚类的对象是“样品/个案”R型聚类的对象是“指标/变量”。这俩的区别不在算法本身有多大差异而在于“你是想给人分组还是想给指标分类”。想清楚这一层后面所有操作都不会跑偏。1.2 从应用角度理解两种聚类光说定义有点干拿实际业务场景来套一下就清楚了。Q型聚类的典型应用用户分群。比如电商做RFM模型——最近一次消费时间Recency、消费频率Frequency、消费金额Monetary。把几千个用户按这三个指标做Q型聚类最后得到“高价值活跃用户”“沉睡大额用户”“低价值流失用户”等几类。每一类用户对应不同的运营策略。这个过程在SPSS里操作很简单选好变量、选好聚类方法跑出来的结果直接用于精细化运营。R型聚类的典型应用指标降维与问卷结构验证。比如你做了一份消费者态度量表30道题想看看这30道题是不是能归成“品牌认同”“价格敏感”“品质偏好”几个维度。用R型聚类把这30个变量聚类结果发现有些题目本来以为自己测的是“品牌认同”结果跟“品质偏好”聚到一起了说明题目设计有问题或者概念本身就有重叠。再比如做指标体系梳理几十个KPI之间高度相关用R型聚类归并成几个核心维度后续做回归分析时也更容易处理多重共线性。从热词里也能看到现在大家搜“spss聚类分析”的特别多很多就是卡在“不知道怎么选Q型还是R型”这个起点上。记住下面这个判断标准研究对象是“人/产品/公司”这些个体 → Q型研究对象是“指标/题目/变量”这些维度 → R型。2. 聚类分析的核心逻辑距离与相似性无论是Q型还是R型聚类都绕不开一个核心问题两个对象之间怎么定义“像不像”。2.1 距离度量Q型聚类的“尺子”Q型聚类看的是“样本之间的距离”距离越小越相似。最常用的就是欧氏距离[ d(x,y)\sqrt{(x_1-y_1)^2(x_2-y_2)^2\cdots(x_p-y_p)^2} ]这个公式本身不难但实际用的时候有个大坑——量纲问题。比如“消费金额”单位是元数值是几千几万“消费频次”单位是次数值是个位数。如果不做标准化两个样本的距离会被金额变量“统治”频次变量几乎不起作用。解决办法就是先做Z-score标准化均值0标准差1或者极差标准化0~1之间把每个变量放在同一个量纲下。SPSS里一般在“描述统计”里先存标准化结果或者直接在用系统聚类法时勾选“标准化为Z得分”。除了欧氏距离还有平方欧氏距离系统聚类里默认常用、曼哈顿距离城市街区距离考虑绝对差、切比雪夫距离最大差异。实际操作中如果变量是连续型数值欧氏距离和平方欧氏距离最常用如果是分类变量或混合数据就得考虑其他相似性度量或者做哑变量处理。2.2 相似系数R型聚类的“标尺”R型聚类不计算距离而是计算变量之间的相似系数。最常用的是皮尔逊相关系数[ r_{ij}\frac{\sum (x_i-\bar{x})(y_j-\bar{y})}{\sqrt{\sum (x_i-\bar{x})^2}\sqrt{\sum (y_j-\bar{y})^2}} ]相关系数取值在-1到1之间越接近1表示正相关越强越接近-1表示负相关越强越接近0表示关系越弱。做R型聚类时通常把“相关性高”的变量聚到一起所以相似性度量用的是相关系数而不是距离。注意一个细节SPSS做R型聚类时你需要在“相似性度量”里选“皮尔逊相关性”。因为系统默认的度量可能是欧氏距离如果不改那聚出来的结果就是按距离算的意义就变了。另外还有一种夹角余弦余弦相似度在处理文本数据、高维稀疏数据时很常用。不过在SPSS里做经典的R型聚类皮尔逊相关系数基本够用两者结果也高度接近因为都是衡量“变化方向的一致性”。2.3 聚类方法的选择系统聚类法里的几种策略有了距离/相似度之后还得选一种“把小类并大类”或“把大类拆小类”的策略。最常用的是层次聚类法系统聚类法Q型和R型都能做。它的核心是每个样本/变量起初自成一类然后逐次合并距离最近的两类直到全部合并成一类。合并过程中计算“类间距离”的规则决定了你最后得到的聚类树长什么样。常用方法包括最短距离法最近邻两类中距离最近的样本决定类间距离。容易形成链状结构也就是一类拖很长别优先用。最长距离法最远邻两类中距离最远的样本决定距离。对离群点敏感但类内离差控制得较好。组间平均连接法SPSS默认两类之间所有样本两两距离的平均值作为类间距离。稳健性较好实际用的最多。Ward离差平方和法最大似然聚类合并后组内离差平方和增加值最小的两类合并。效果相对好聚类树分群明显业界用得很多。实际操作中我更推荐直接用Ward法或组间平均连接法然后画出**树状图克拉斯特图即树状图/冰柱图**来观察合并顺序。千万不要用默认参数不思考SPSS里默认是组间平均连接但如果你用欧氏距离组间连接已经很稳了就不用瞎折腾。3. 实操全流程SPSS完成Q型聚类与R型聚类光讲原理不操作等于纸上谈兵。以下用SPSS走一遍完整流程从数据准备到结果解读每一步都写明要点可以直接跟着操作。3.1 数据准备与预处理无论做Q型还是R型聚类数据表的格式都一样一行一个样本一列一个变量。建议变量名用英文或拼音命名避免某些SPSS版本在兼容中文变量名时出现奇怪报错。预处理时注意几个点缺失值聚类算法没法自动处理缺失值个案排除或均值替换随你定。如果个别变量的缺失比例较高先考虑是否删除该变量。能用均值插补就用均值不要用回归插补会自己给自己引入偏差。标准化Q型聚类对于连续变量建议先标准化。SPSS路径分析 → 描述统计 → 描述 → 勾选“将标准化值另存为变量”或者用函数Zscore。这里有一个偷懒办法是直接在做系统聚类时候“勾选”标准化——实际SPSS给出的标准化只针对连续性数值对定序变量不适用所以混合型数据要提前处理。降维与筛选如果变量超过三四十个直接做聚类树状图会特别乱。建议先用因子分析或R型聚类把变量归并再用综合得分做Q型聚类。两个方法常常配合用。3.2 SPSS实现Q型聚类操作路径分析 → 分类 → 系统聚类层次聚类。在弹出的对话框里个案即样本/对象选入把用户ID等标识变量先不用选否则聚类时会把这个ID变量当成普通变量参与距离计算导致结果完全跑偏。选择聚类对象时直接把该选的所有变量选入变量框。在“绘制”里勾选“树状图”偶尔也勾选“冰柱”看看合并过程。在“方法”里设置聚类方法Q型聚类我一般选“Ward法”标准化选择“Z得分”。在“保存”里可以选择“单一解决方案”指定聚类数或“方案范围”比如想看分成3~6类各自的赋值结果直接生成一个新变量到数据表这个变量的值就是每个样本被分到的类别编号。注意用Ward法时测量标准必须选择“平方欧氏距离”因为Ward法本质上是基于离差平方和的增量如果我们这里选欧氏距离就失去Ward法最核心的计算前提了。这个细节很多人忽略结果就感觉Ward跑出来和组间连接差很远其实是度量方式设错了。3.3 SPSS实现R型聚类操作路径分析 → 分类 → 系统聚类这个跟Q型一样唯一的重点是把参与聚类的变量选入“变量”框注意案例标签可不选。在“聚类”里选择**“变量列”**而不是默认的“个案行”。这一步就是Q型和R型的最大分水岭选错了分析对象就反了。在“方法”里“测量方法”选择“皮尔逊相关性”而不是欧氏距离。因为R型聚类衡量的是变量之间的相关程度这个也千万别忘。跑完之后树状图展示的是变量如何一步步合并成组非常直观。比如你用20个题目做R型聚类树状图可能清晰地显示题目1、3、8先合并题目5、6、7再并入最后形成三大分支对应三个潜在维度。3.4 结果解读与类数确定聚成几类合适这是最容易被问到的问题。没有绝对标准我的经验是“看图看业务”结合看树状图观察哪些样本/变量在距离较小时就合并可以很直观地把它们归为一类。一个常用的原则是在树状图中找“长距离的分支”如果在某条横线上下合并的距离骤增说明在那一层往下分是比较合理的。看图跑完之后把每个类别的关键变量均值列出来看各类之间有没有明显差异。如果某一类在某变量上与其他类没有什么区分度说明分得不好。业务经验比如用户分群分3类太少运营同学没有区分度分8类太多运营没精力做差异化策略。通常电商场景3~6类比较常见。你可以设定一个“可解释性”要求每一类在业务上能起名、能制定策略才算合格。一个实操加速技巧把聚类的保留范围设成你预想的上下限比如方案范围填3~6SPSS会一次性生成4个分类变量。你接下来只需要快速对比不同聚类数下的结果看哪一版业务逻辑最顺、每类样本量分布最均衡。4. 进阶场景电商用户聚类、自然断点法与聚类的边界热词里有两块内容很值得展开谈谈一个是“基于k-means与dbscan的电商用户消费行为聚类分析”一个是“自然断点法和聚类分析的区别”。这说明很多人在实际应用中已经把范围扩展到层次聚类之外了。4.1 K-means与DBSCAN在用户分群中的定位K-means可能是大家听得最多的聚类算法思路是先指定K个类中心然后迭代调整直到类内平方和最小化。但K-means在应用中有几个前提需要提前指定K值对初始中心敏感对噪声和异常值敏感算法倾向于形成球形簇数据分布如果极端不均匀效果会打折扣。DBSCAN则是一个基于密度的聚类算法核心思想是在给定半径范围内如果样本密度足够高就不断扩张这个簇。它不需要指定K值也能处理任意形状的簇还能把噪声点单独识别出来。在电商用户行为数据里如果用户分布极其不均匀——大多数人消费少、少数人消费极高——DBSCAN可以很自然地把“异常用户”识别出来而不是强行把它们归到某一类。不过DBSCAN调参也不容易“半径”和“最小邻域数”对结果影响极大不同项目的取值差异也大没有一个通用参数。在真实项目里我通常会先用K-means跑几轮看一下不同K的可解释性再用DBSCAN跑一个密度聚类看能否把噪声用户识别出来。两种方式得到的结果交叉验证比单纯依赖某一种方法更靠谱。说句实在话电商用户聚类并不需要追求“算法多高级”很多时候RFM数据用K-means足够了因为实际业务关心的就是一个“用户分层”。DBSCAN更适合处理那些“有明显噪声、簇形状不规则”的数据——比如检测异常交易、群体发现等。4.2 自然断点法和聚类分析有什么区别好多人第一次在GIS或地图可视化里看到“自然断点法Jenks Natural Breaks”以为这就是聚类分析的同义词其实两者有一定关联但不是一回事。自然断点法本质上是一种单变量分组方法它优化的目标很简单让组内差异最小组间差异最大。它只处理一个变量比如某地区的人均收入把连续值切成若干段每段映射一个颜色等级。聚类分析则是多变量分组方法考虑多个维度共同作用下的样本归属。比如用户聚类的输入可能是消费金额、频率、活跃天数等多个变量每个用户在“多维空间”里都有一个位置聚类就是在这个多维空间里找一些密集区域。所以当你看到“自然断点法 vs 聚类分析”最简单的答案是一个是对单个指标做分级重在可视化分级一个是对多维数据做分组重在识别内部结构。自然断点法本质上是1维的K-means问题但因为它目标单一计算起来非常快在专题地图里广泛应用。不过有一种情况两者确实会撞车假设你只有“客单价”一个指标做自然断点法和做1维K-means几乎得到类似的分界。但实际的业务分析中很少只用单一指标所以两种方法通常承担的角色不同自然断点用于图例分级聚类分析用于样本分群。5. 常见问题与排查技巧实录5.1 数据标准化到底做不做经常有人问什么情况下要标准化什么情况下可以不标准我的习惯是如果所有变量单位相同、数值范围接近比如几个量表题都是1~5分可以不标准结果和标准化后基本一致并且更容易解释。如果变量单位不同、取值范围差异大比如“金额”和“次数”放在一起必须标准化否则大数值变量直接主导距离计算。如果你做的是R型聚类且用皮尔逊相关系数标准化其实不需要单独做因为相关系数本身就是标准化后的协方差数值范围已经控制在-1到1了。5.2 类的个数怎么定给一个具体的实操参考流程四个步骤先用树状图看大致的分支结构把可能的分组范围列出来。在这个范围内跑不同的K值或直接在SPSS里设置方案范围。对每个K值的结果检查各类样本量是否太极端比如某一类只有两三个样本另一类占了80%。如果极端就说明这一类数量选择可能不太合适。结合业务可解释性做最终判断。如果一个分法在统计上很好但业务侧完全无法解释那是给自己挖坑。宁可稍微细分一点让每一类都有清晰的运营含义。5.3 异常值和缺失值怎么处理Q型聚类对异常值非常敏感特别是用欧氏距离时一个极端值可能改变整个聚类的结构。处理办法先画箱线图找出异常值确认是录入错误还是真实情况。如果是真实数据里的极值可以考虑做对数变换或缩尾处理不要直接删除——那些可能是最有价值的用户或最特殊的场景。如果是明显的录入错误直接修正或删除。缺失值方面SPSS里有“按列表排除缺失值”和“按对排除缺失值”两个选项。前者只要某变量缺失就会删掉这个样本后者是算距离时只用两个样本都有值的变量。前者更严格数据完整性强时用后者能保留更多样本适合缺失较多的探索场景。5.4 变量太多导致结果混乱怎么办变量不是越多越好每增加一个变量“距离”的定义就越复杂树状图也越难读。我的处理经验有两个第一种用R型聚类先做一轮变量筛选。把高度相关的变量聚成一组每组选一个有代表性的保留下来再做Q型聚类。这等于先做了一次“变量维度的聚类”再做“样本聚类”两者形成互补。第二种用主成分或因子分析提取核心因子然后用因子得分做Q型聚类。这个方法在大规模问卷数据里特别常见。我之前做过一个消费者调研原始变量有28个因子分析压缩成5个因子再做Q型聚类分类效果反而比用28个原始变量更好——噪声少了分群更稳定。还有一个小技巧在做层次聚类时类别标签如果录入了样本名称可以在“绘制”里勾选“树状图”时让它显示标签这样树状图上能看到每个样本名解读起来会方便很多。不要只显示编号那种编号在几十个样本时就够呛了。5.5 树状图没法看怎么办树状图是Q型聚类解读最重要的产出之一但样本量一大比如超过两三百树状图横向拉得很长SPSS默认输出经常糊成一团。应对方案有两个一是直接换K-means。样本量比较大的时候Q型聚类本来就不如K-means高效层次聚类复杂度高跑起来也慢树状图还难读。一般超过200个样本我很少用系统聚类做Q型而会直接用K-means。二是先跑系统聚类选取聚类数比如用一个小样本子集或者用层次聚类“保存方案范围”生成变量然后用这个K值去跑K-means。很多人就是这么干的用层次聚类确定K再用K-means细化分群结果兼顾可解释性与效率。写在最后的一点经验我在实际操练这套方法时最深的体会是聚类分析的精髓不在于算法复杂而在于“让结果能被打业务同事听懂”。我以前也迷恋过那些“花哨”的算法拿DBSCAN、谱聚类试来试去最后发现最容易被理解和落地的反而还是层次聚类加K-means的组合。如果你是自己第一次跑Q型聚类和R型聚类别一上来就背公式按这个顺序走一遍先明确Q还是R再准备数据标准化该做就做跑一遍层次聚类看树状图用“保存”功能生成分类变量最后交叉验证一下各类的质量。整个过程熟练之后十五分钟就能完成一轮。最后再分享一个小技巧SPSS跑完聚类之后一定要习惯用“均值比较”或者“交叉表”去验证聚类结果。做法很简单把最终分类变量作为分组变量看看每一类的核心指标均值差异是否显著、是否合理。这一步如果你跳过结果很容易因为数据里的某个隐藏问题而“看起来分出来了实际上没意义”。跑聚类本身只是第一步真正的功夫在于解读和验证这正是Q型聚类和R型聚类背后最核心的价值。