返回教程列表
文本分析基础教程聚类分析K均值聚类人群分层

样本聚类完整教程:从标准化与 K-Means 迭代,到轮廓系数选 K,再到各类画像和方差分析

三百名大学生、几项单位各不相同的数值指标,怎样分出几种类型?这篇教程从欧氏距离和标准化讲起,说明 TATOOLS 的【样本聚类】怎样用 K-Means 分类,并按轮廓系数挑选类数。文中用两名学生的例子算出标准化前后的距离,用六个样本手算 K-Means 的三轮迭代、样本 A 的轮廓系数 0.855 和两项指标的 F 值 112.5 与 72;再用三类学生的均值表讲怎样给各类起名,以及雷达图和簇规模均衡比怎样读。最后讲报告的阅读顺序、归属表怎样接到交叉表,并给出论文方法部分的写法示例。

作者:TATOOLS 研究团队|更新于 2026-09-24|6011 个字符|约 21 分钟读完
sample-clustering
立即使用

手里有一份三百名大学生的问卷,每人有每周自习时长、每周运动时长和月消费几项数值。想知道这些学生能不能分成几种类型,比如埋头学习的、爱运动的和花钱多的,每种类型各有多少人,彼此差在哪几项上。事先并没有现成的分类标签,类型要从数据里找出来。

聚类分析做的就是这件事。它按样本在各项指标上的接近程度,把相似的样本归到同一类,让同一类里的样本尽量像,不同类之间尽量不一样。事先没有标签、由数据自己分组,统计上叫无监督学习。K-Means(K 均值聚类)是其中最常用的一种,社会科学里常用来做人群分层,也用来划分城市类型和企业类型。

在 TATOOLS 的【样本聚类】里【上传文档】,一行是一个样本,每个数值列是一项指标。TATOOLS 先把各列标准化,再用 K-Means 分类,在一个范围内按轮廓系数自动挑选类数,给出每个样本归入哪一类,以及各类的样本量、占比和各项指标的均值,并用单因素方差分析比较各项指标在类间的差异大小。

这篇教程先讲聚类怎样衡量相似,为什么要先标准化,再用六个样本手算 K-Means 的迭代、轮廓系数和方差分析,最后讲报告的读法和论文里的写法。

01

相似怎样衡量

K-Means 用欧氏距离衡量两个样本的相似程度。把每个样本看成空间里的一个点,每项指标是一根坐标轴,两点之间的直线距离越短,两个样本越像。

· · ·

d(x, y) = √Σ (xⱼ − yⱼ)²

xⱼ、yⱼ:两个样本在第 j 项指标上的取值

两个学生每周自习 20 小时和 12 小时,每周运动 3 小时和 9 小时。

· · ·

d = √((20 − 12)² + (3 − 9)²) = √(64 + 36) = 10

距离只由数值算出,所以参与聚类的列都要是数值,而且要能反映样本之间的差异。编号和年份这类列的数字大小没有实际意义,放进去会把分类带偏。TATOOLS 的【样本标签列】专门用来放编号或名称,它只在归属表里标出样本,不参与距离计算。

02

数据表怎样准备

一行是一个样本,比如一名受访者、一个城市或一家企业;每个数值列是一项指标。

工具页的【智能推荐聚类列】默认打开,TATOOLS 读表头和前几行样例,挑出评分、量表题和测量值这类指标列,跳过编号、年份和自由文本。报告的【聚类指标列】列出选中了哪些列,排除了哪些列。

关掉智能推荐,可以在【参与聚类的列】里自己从表头选;留空时,TATOOLS 取表里大多数单元格是数字的列,取值全都一样的列会跳过,并在报告的【数据提示】里写明。【样本标签列】从表头选一列编号或名称,旁边的【智能填写】按表头和样例自动挑好。

所选列里任何一项缺失,这一行就不参与聚类,报告的【有效行数】是真正参与聚类的样本数。

03

为什么先标准化

各列的单位和数值范围不同。月消费以元计,动辄几百上千;每周运动以小时计,只有几个小时。直接算距离,数值大的列会压倒其他列。

两个学生月消费差 100 元,每周运动差 5 小时。

· · ·

不标准化 d = √(100² + 5²) = √10025 ≈ 100.1

距离几乎全由月消费决定,运动上的差别被淹没了。标准化把每列减去均值再除以标准差,各列都换算成离平均水平有几个标准差。假设月消费的标准差是 400 元,运动的标准差是 2 小时。

· · ·

z = (x − 均值) ÷ 标准差

月消费差 100 ÷ 400 = 0.25

运动差 5 ÷ 2 = 2.5

标准化后 d = √(0.25² + 2.5²) ≈ 2.51

标准化以后,运动上相差 2.5 个标准差,成了这两个学生主要的差别。

TATOOLS 的【聚类前按列标准化】默认打开,各列单位不同时要保持打开。所有列本来就是同一量纲,比如都是 1 到 5 分的量表题,关掉也可以,距离直接按原始分数算。报告的【各类特征均值】始终用原始单位,读起来不用换算。

04

K-Means 怎样迭代

K-Means 要先定下分几类,这个数就是 K。每一类有一个中心,是这一类样本在各项指标上的均值。MacQueen 1967 年给这种方法起了 K-Means 的名字,常用的迭代算法来自 Lloyd 1957 年在贝尔实验室的工作,1982 年正式发表。

· · ·

1. 选 K 个初始中心

2. 每个样本归到离它最近的中心

3. 每一类重新算均值,作为新的中心

4. 重复 2 和 3,直到归属不再变化

它要让所有样本到各自类中心的距离平方和最小,这个量叫类内平方和。

· · ·

W = Σₖ Σ_(x∈Cₖ) ‖x − μₖ‖²

Cₖ:第 k 类;μₖ:第 k 类的中心

归属和重算中心这两步都不会让 W 变大,所以迭代一定会停下来。

用六个样本、两项指标手算,两项指标已在同一尺度上,K = 2。

· · ·

A (1, 1) B (1, 2) C (2, 1)

D (6, 5) E (7, 5) F (6, 6)

故意选一对不好的起点,用 A 和 B 作初始中心。

· · ·

第一轮 C 离 A 更近,D、E、F 离 B 更近

        第 1 类 {A, C},中心 (1.5, 1)

        第 2 类 {B, D, E, F},中心 (5, 4.5)

第二轮 B 到 (1.5, 1) 约 1.12,到 (5, 4.5) 约 4.72

        B 改归第 1 类

        第 1 类 {A, B, C},中心 (4/3, 4/3)

        第 2 类 {D, E, F},中心 (19/3, 16/3)

第三轮 归属不变,停止

W = 4/3 + 4/3 ≈ 2.67

最后停在哪里,取决于起点放在哪里,起点选得差,可能停在一个 W 偏大的分法上。Arthur 和 Vassilvitskii 2007 年提出 k-means++ 选起点法,第一个中心随机选,之后离已选中心越远的样本越容易被选中,初始中心因此彼此分散。TATOOLS 用这种办法选起点,从多组不同的起点各跑一遍,留下 W 最小的那次;随机种子固定,同一份数据每次分出的结果一样。

K-Means 默认每一类大致聚成一团,每个样本都要归到某一类里。极端值会把类中心拉偏,上传前先看看有没有录错的离谱数值。

05

分几类:轮廓系数

K 要事先定,分几类最合适,需要一个衡量分得好不好的指标。Rousseeuw 1987 年提出轮廓系数,对每个样本比较它离本类有多近,离最近的另一类有多远。

· · ·

a(i):样本 i 到本类其他样本的平均距离

b(i):样本 i 到最近的另一类所有样本的平均距离

s(i) = (b(i) − a(i)) ÷ max(a(i), b(i))

s(i) 在 −1 到 1 之间。接近 1,样本明显更靠近本类;接近 0,样本处在两类交界;为负,样本离另一类反而更近。所有样本的 s(i) 取平均,就是整体轮廓系数。

接着六个样本的例子,算样本 A。

· · ·

A 到 B、C 的距离都是 1

a(A) = (1 + 1) ÷ 2 = 1

A 到 D、E、F 的距离是 √41、√52、√50

b(A) ≈ (6.40 + 7.21 + 7.07) ÷ 3 ≈ 6.89

s(A) = (6.89 − 1) ÷ 6.89 ≈ 0.855

Kaufman 和 Rousseeuw 1990 年给整体轮廓系数定了一个常用的分档。

整体轮廓系数 分类结构
0.71 到 1
0.51 到 0.70 合理
0.26 到 0.50 较弱,可能是人为分出来的
0.25 及以下 没有明显的分类结构

工具页的【聚类数】默认选【自动(轮廓系数选 K)】,TATOOLS 在【搜索 K 下限】到【搜索 K 上限】之间逐个试,默认 2 到 10,每个 K 都跑一遍 K-Means 并算出整体轮廓系数,挑最高的那个。已经从理论或文献里知道要分几类,就选【指定 K】,在【聚类数 K】里填 2 到 30 之间的数。

报告的【聚类数如何确定】写明搜索范围、选中的 K 和对应的轮廓系数;【样本与分群概览】的轮廓系数下面有一句按区间给出的解读。

06

各类画像

分好类以后,要给每一类起名字,依据是各类在每项指标上的均值。回到三百名大学生的例子,假设分成三类。

样本量 占比 每周自习(小时) 每周运动(小时) 月消费(元)
1 120 40.0% 25 2 1200
2 100 33.3% 10 8 1500
3 80 26.7% 12 3 2600

第 1 类自习时间最长,可以叫埋头学习型;第 2 类运动最多,是运动活跃型;第 3 类的月消费明显高出,是消费较高型。名字由研究者根据均值起,TATOOLS 给出的是类的编号,报告里把类叫作簇,簇 1 就是第 1 类。

报告的【各类特征均值】列出每一类的样本量、占比和各项指标的均值,单位和上传的表格一致。【聚类画像雷达】把各类的均值画成多边形,每项指标在各类之间做 0 到 1 的相对化,最低的一类为 0,最高的一类为 1。

· · ·

每周自习 最低 10,最高 25

第 3 类 (12 − 10) ÷ (25 − 10) ≈ 0.13

月消费 最低 1200,最高 2600

第 2 类 (1500 − 1200) ÷ (2600 − 1200) ≈ 0.21

雷达图看的是哪一类在哪项指标上相对更高,具体数值以表格为准。参与聚类的指标至少三项才画雷达图。

【样本与分群概览】里的簇规模均衡比,是最小一类和最大一类的样本量之比,这个例子是 80 ÷ 120 ≈ 0.67。比值越接近 1,各类规模越接近;比值很小,最小的那一类可能只是少数几个极端样本,解读时要单独说明它的样本量。

07

哪些指标拉开了分群

各类在哪些指标上差得最多,用单因素方差分析比较。把类当作分组,对每项指标算一个 F 值,F 是组间均方和组内均方之比。

· · ·

F = (SSB ÷ (K − 1)) ÷ (SSW ÷ (n − K))

SSB:组间平方和,各类均值离总均值有多远

SSW:组内平方和,样本离本类均值有多远

接着六个样本的例子,两类各三个样本。

· · ·

指标一 第 1 类 1, 1, 2 均值 4/3

        第 2 类 6, 7, 6 均值 19/3

        总均值 23/6

SSB = 3 × 2.5² + 3 × 2.5² = 37.5

SSW = 2/3 + 2/3 = 4/3

F = 37.5 ÷ (4/3 ÷ 4) = 112.5

指标二 同样算得 F = 72

指标一的 F 更大,这两类主要是沿着指标一拉开的。

类本来就是按这些指标分出来的,各类在这些指标上的差异几乎总会显著,p 值通常很小。这张表的用处是比较 F 值的相对大小,看分群主要由哪几项指标撑起,给各类起名时先看这几项。

TATOOLS 的【类间差异线索】按 F 值从高到低列出每项指标的 F 值和 p 值,下面一句话写明有几项指标在 0.05 水平上差异显著,区分力最强的是哪几项。

08

二维投影

指标多于两项时,样本分布在高维空间里,没法直接画出来。TATOOLS 用主成分分析把参与聚类的指标投影到一个平面上,横轴和纵轴是前两个主成分,每个样本是一个点,颜色代表所属的类。

同一类的点聚成一团、不同类的团彼此分开,分类在数据里就有比较清楚的结构;几团点挤在一起,对应的轮廓系数一般也偏低。图下写明两根轴各解释了多少差异,两根轴合计解释得越多,平面上看到的分布越接近真实情况。样本很多时,图上抽取一部分点展示。只有一项指标参与聚类时,横轴就是这项指标,纵轴只是为了把点错开。

09

工具页上的设置一览

设置 选项或范围 默认 影响什么
智能推荐聚类列 开或关 由 TATOOLS 读表头挑指标列
参与聚类的列 从表头选,可留空 关掉智能推荐时出现 哪些列参与距离计算
样本标签列 从表头选,可留空 行号 归属表里怎样标出样本
聚类数 自动(轮廓系数选 K)或指定 K 自动 类数由谁决定
搜索 K 下限和上限 2 到 30 2 和 10 自动模式下比较哪些 K
聚类数 K 2 到 30 4 指定 K 时分几类
聚类前按列标准化 开或关 各列是否换算到同一尺度

各类画像、方差分析和二维投影每次都会全部给出,TATOOLS 不需要另外选择。

10

报告怎么读

区块 先看什么
这份结果说明了什么 有效样本、类数、轮廓系数和均衡比
样本与分群概览 轮廓系数落在哪一档,各类规模是否悬殊
聚类指标列 智能推荐选中和排除了哪些列
聚类数如何确定 搜索范围和选中的 K
二维投影 各类的点是否分成清楚的几团
聚类画像雷达 哪一类在哪项指标上相对更高
各类特征均值 每类的样本量、占比和均值,给每类起名
类间差异线索 F 值最大的几项指标
归属表预览 每个样本分到了哪一类

读的顺序是先看轮廓系数和均衡比,判断分类结构清不清楚、各类规模差得多不多,再看二维投影,然后在各类特征均值和类间差异线索里给每一类起名,最后在归属表里找几个熟悉的样本,看它们分到的类是否合乎常识。

下载结果里的样本聚类归属表按行序号列出每个样本的聚类编号,选了样本标签列时另有一列标签。按行序号把聚类编号贴回原表,就可以把它当作一个分类变量,用 TATOOLS 的【交叉表与卡方分析】看它和性别、年级这类字段有没有关联。

11

把结果写进论文

下面是一段常见的写法示例,方括号里换成自己的数字。

本研究使用 TATOOLS 的样本聚类,对 [样本数] 名 [样本类型] 的 [指标数] 项指标进行 K-Means 聚类。各指标先做 z 分数标准化,在 K = [下限] 至 [上限] 的范围内按平均轮廓系数确定聚类数,最终分为 [K] 类,平均轮廓系数为 [值]。各类样本量分别为 [样本量]。单因素方差分析显示,[指标] 在各类之间的差异最大(F = [F 值])。依据各类在各项指标上的均值,分别将其命名为 [名称]。

论文里一般给出一张各类样本量、占比和指标均值的表,再给一张方差分析表,TATOOLS 报告里的【各类特征均值】和【类间差异线索】正好对应这两张表。

12

小结

聚类分析按样本在各项指标上的接近程度分组,事先不需要分类标签,K-Means 用欧氏距离衡量接近程度。

各列单位不同时要先标准化,否则数值大的列会主导距离。

K-Means 反复把样本归到最近的中心、再重算中心,直到归属不变,目标是让类内平方和最小。

轮廓系数比较样本离本类和离最近的另一类有多远,TATOOLS 在一个 K 的范围里挑整体轮廓系数最高的那个。

各类特征均值是给每一类起名的依据,方差分析的 F 值说明分群主要由哪几项指标拉开。

想先把多项相关的指标压成几个综合维度,可以用 TATOOLS 的【PCA 主成分降维】;想把聚类编号和其他分类字段做关联分析,用【交叉表与卡方分析】;想把各项指标整理成论文里的描述统计表,用【论文描述性统计表】。

13

资料来源

MacQueen:Some Methods for Classification and Analysis of Multivariate Observations,Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability,第 1 卷,1967

Lloyd:Least Squares Quantization in PCM,IEEE Transactions on Information Theory,第 28 卷第 2 期,1982

Rousseeuw:Silhouettes: A Graphical Aid to the Interpretation and Validation of Cluster Analysis,Journal of Computational and Applied Mathematics,第 20 卷,1987

Kaufman 与 Rousseeuw:Finding Groups in Data: An Introduction to Cluster Analysis,Wiley,1990

Arthur 与 Vassilvitskii:k-means++: The Advantages of Careful Seeding,Proceedings of the Eighteenth Annual ACM-SIAM Symposium on Discrete Algorithms,2007


END