7.4 聚类 —— 发现自然分组
本章学习目标:
- 理解聚类的本质:发现数据中的自然分组,而非预测
- 掌握K-Means聚类的核心思想(知道“找K个中心点”就够了)
- 了解手肘法、轮廓系数等选择K值的方法
- 理解聚类结果如何转化为业务洞察
- 核心能力:知道什么时候用聚类、如何解读聚类结果
一、聚类是什么?
1.1 聚类的定义
聚类是一种无监督学习算法,用于发现数据中的自然分组——把相似的数据点归为一组,不同组之间的差异尽可能大。
与监督学习的核心区别:聚类没有“正确答案”,模型自己发现数据中的结构。
1.2 一个直观的例子
想象你是一家超市的经理,你有1000名顾客的购买数据:
监督学习的思路:
- 告诉模型:“这是高价值用户,这是低价值用户”
- 模型学习如何区分
聚类的思路:
- 不给任何标签
- 让模型根据购买行为自动分组
- 模型发现:有一类顾客只买生鲜,有一类只买零食,有一类什么都买…
1.3 聚类能解决什么问题?
| 业务场景 | 聚类应用 | 价值 |
|---|---|---|
| 电商 | 用户分群 | 精细化运营、差异化营销 |
| 银行 | 客户分层 | 不同群体推荐不同产品 |
| 内容平台 | 文章/视频聚类 | 个性化推荐 |
| 零售 | 商品关联分组 | 货架布局、捆绑销售 |
| 风控 | 异常行为检测 | 识别欺诈模式 |
1.4 聚类 vs 分类
| 对比维度 | 分类 | 聚类 |
|---|---|---|
| 学习方式 | 监督学习 | 无监督学习 |
| 有没有标签 | ✅ 有 | ❌ 无 |
| 目标 | 预测新数据属于哪类 | 发现数据自然分组 |
| 分组的依据 | 人为定义的标签 | 数据本身的相似性 |
| 例子 | 判断邮件是垃圾还是正常 | 把新闻自动分成几类 |
关键理解:你不知道应该分几类,也不知道每类长什么样——聚类帮你发现。
二、K-Means聚类
2.1 K-Means是什么?
K-Means是最常用、最经典的聚类算法。K代表你要分多少组,Means代表每组的中心点(质心)。
一句话概括:选择K个中心点,把每个点分配给最近的中心,然后移动中心到该组的平均位置,重复直到稳定。
2.2 K-Means的工作步骤
第1步:选择K值
↓
“我想把用户分成3组”(K=3)
第2步:随机放置K个中心点
↓
在数据空间中随机放3个点
第3步:分配每个点到最近的中心
↓
每个用户去最近的“中心”报到
第4步:移动中心到该组的平均位置
↓
计算每组所有用户的“平均位置”,把中心移过去
第5步:重复第3-4步
↓
直到中心不再移动(收敛)
2.3 一个直观的动图理解
初始状态 第1次迭代 第2次迭代 最终结果
× × × ×
点 点 点 点 点 点 点 点
点 点 点 点 点 点 点 点
▲ ▲ ▲ ▲
点 点 点 点 点 点 点 点
× × × ×
○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○
▲ ▲ ▲ ▲
× × × ×
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
- ▲ = 中心点移动轨迹
- ○ × ■ = 不同组的点
每次迭代,中心点都在走向“组的中心”。
2.4 如何理解K-Means的结果?
每个用户会得到一个标签:0组、1组、2组…
然后你需要分析每组的特点:
| 组别 | 特征 | 业务解读 |
|---|---|---|
| 组0 | 低消费、高频次、买生鲜 | 日常采购型 |
| 组1 | 高消费、低频次、买家电 | 大促囤货型 |
| 组2 | 中消费、中频次、买服装 | 时尚购物型 |
这就是聚类的核心价值:不是你告诉模型怎么分,而是模型告诉你“原来用户可以分为这几类,每类长这样”。
2.5 K-Means的优缺点
| 优点 | 缺点 |
|---|---|
| 简单快速,容易理解 | 需要预先指定K值 |
| 适合大数据集 | 对初始中心点敏感 |
| 结果稳定(多次运行后) | 假设聚类是球形的 |
| 实现广泛(sklearn内置) | 对异常值敏感 |
2.6 什么时候用K-Means?
| 适合 | 不适合 |
|---|---|
| 数据量较大 | 数据有异常形状(如环形) |
| K值可以合理估计 | 类别大小差异很大 |
| 聚类大致是球形的 | 需要概率输出 |
| 追求速度和简单 | 高维数据(>20维) |
三、如何选择K值?
这是K-Means最核心的问题:我应该分成几组?
3.1 方法一:业务经验
最简单的思路:根据业务需求决定。
| 业务场景 | 凭经验决定K |
|---|---|
| 用户分群运营 | 可管理:3-5组是人力可接受的;10组以上运营没法针对 |
| 产品分类 | 按品类自然数量 |
| 城市分级 | 按战略需要(一线/新一线/二线/三线/四线) |
3.2 方法二:手肘法(Elbow Method)
核心思想:随着K增加,组内误差会下降。找到下降速度变缓的“拐点”。
组内误差
↑
│
│ ● ← 拐点(手肘)
│ ●
│ ●
│ ●
│ ●
│●
└────────────────────→ K值
1 2 3 4 5
解读:
- K从1到2:误差大幅下降(明显变好)
- K从2到3:误差继续下降(改善)
- K从3到4:下降变缓(改善有限)
- K从4到5:几乎没变化
结论:K=3是最佳选择(之后增加K的收益很小)。
3.3 方法三:轮廓系数(Silhouette Score)
核心思想:同时衡量两个维度——组内紧密程度(自己组里够近)、组间分离程度(与其他组够远)。
| 轮廓系数 | 含义 |
|---|---|
| 接近 +1 | 聚类合理(点离自己组近,离其他组远) |
| 接近 0 | 点在边界上(可能重叠) |
| 接近 -1 | 聚类错误(点可能分错了组) |
选择标准:选择轮廓系数最高的K值。
3.4 三种方法对比
| 方法 | 核心逻辑 | 优点 | 缺点 |
|---|---|---|---|
| 手肘法 | 找“拐点” | 直观可视化 | 拐点可能不明显 |
| 轮廓系数 | 紧密度+分离度 | 有量化指标 | 计算量大 |
| 业务经验 | 按业务需求 | 直接可用 | 可能错过自然分组 |
四、其他聚类算法简介
4.1 层次聚类(Hierarchical Clustering)
核心思想:从每个点自成一类开始,不断合并最近的两类,形成一棵“树”。
输出形式:树状图(Dendrogram)
┌─────────┐
│ ├─────┐
┌─┼─┐ ┌─┼─┐ │
│A│ │ │B│C│ │
└─┘ └─────┘─┴─┘ │
┌─┼─┐
│D│E│
└─┴─┘
优点:不需要预先指定K,可以从树状图“切”出想要的K。缺点:计算慢,不适合大数据。
4.2 DBSCAN(基于密度的聚类)
核心思想:把密集区域的点聚成一类——圈出“稠密”的邻居。
优点:可以发现任意形状的簇、自动识别异常点;不需要指定K值。
缺点:对参数敏感,高维数据效果差。
4.3 算法选择指南
| 算法 | 适用场景 | 不适用场景 |
|---|---|---|
| K-Means | 数据量大,聚类大致球形 | 非球形聚类,类别大小悬殊 |
| 层次聚类 | 小数据量,需要树状图 | 大数据量 |
| DBSCAN | 可能有任意形状,需要发现异常 | 密度不均匀,高维数据 |
五、聚类结果的业务解读
5.1 RFM用户分群案例
RFM模型是最经典的用户分群方法,常用于电商、零售行业。
| 维度 | 全称 | 含义 |
|---|---|---|
| R | Recency | 最近一次消费时间(越小越好) |
| F | Frequency | 消费频率(越大越好) |
| M | Monetary | 消费金额(越大越好) |
5.2 K-Means聚类结果
假设K=4,得到4组用户:
| 组别 | R(最近) | F(频率) | M(金额) | 业务解读 | 运营策略 |
|---|---|---|---|---|---|
| 组0 | 高(很久没买) | 低 | 低 | 流失用户 | 发送优惠券唤醒 |
| 组1 | 低(最近买过) | 高 | 高 | 高价值活跃用户 | VIP权益,会员关怀 |
| 组2 | 中 | 中 | 低 | 普通活跃用户 | 提升客单价 |
| 组3 | 低 | 低 | 低 | 新用户 | 培养习惯 |
5.3 从数字到洞察
聚类输出的原始数据(每组中心点):
| 组别 | R(天) | F(次/月) | M(元) |
|---|---|---|---|
| 0 | 89 | 0.2 | 45 |
| 1 | 3 | 8.5 | 1200 |
| 2 | 15 | 3.2 | 180 |
| 3 | 5 | 0.8 | 65 |
业务翻译:
| 组别 | 业务标签 | 一句话画像 |
|---|---|---|
| 0 | 流失用户 | 快3个月没来了,以前也买得少 |
| 1 | 高价值核心用户 | 最近刚买、买得多、花得多 |
| 2 | 普通活跃用户 | 经常来,但买的不贵 |
| 3 | 新/低频用户 | 最近来过,但不常买 |
5.4 运营策略建议
| 组别 | 策略 | 具体动作 |
|---|---|---|
| 流失用户 | 强力唤醒 | 大额优惠券、新品推荐 |
| 高价值用户 | 维护提升 | 专属客服、积分倍率、新品优先购 |
| 普通活跃用户 | 提升客单价 | 满减活动、捆绑销售、会员激励 |
| 新用户 | 培养习惯 | 引导复购、新手任务、打卡奖励 |
六、实战案例:二手车用户分群(RFM变体)
6.1 问题定义
二手车平台希望了解不同类型的买家和卖家,以便制定差异化的运营策略。
6.2 构造聚类特征
| 维度 | 构造方法 | 业务含义 |
|---|---|---|
| 活跃度 | 过去30天访问次数 | 用户粘性 |
| 购买力 | 历史成交均价 | 消费水平 |
| 价格敏感度 | 浏览均价 / 成交均价 | 是否追求性价比 |
6.3 聚类结果(K=4)
| 组别 | 活跃度 | 购买力 | 价格敏感度 | 业务标签 | 占比 |
|---|---|---|---|---|---|
| 组0 | 高 | 高 | 低 | 实力买家 | 15% |
| 组1 | 高 | 低 | 高 | 淘便宜货 | 35% |
| 组2 | 中 | 中 | 中 | 普通买家 | 40% |
| 组3 | 低 | - | - | 低频用户 | 10% |
6.4 业务解读与策略
| 标签 | 特征 | 策略 |
|---|---|---|
| 实力买家 | 看高端车,价格不敏感 | 推荐高端车型,1对1专属服务 |
| 淘便宜货 | 反复对比,要便宜 | 推荐性价比车型,推送降价提醒 |
| 普通买家 | 主流需求 | 推荐热门车型,标准服务 |
| 低频用户 | 偶尔来看看 | 推送优质车源,引导注册 |
七、聚类完整流程总结
第1步:明确业务问题
↓
“我想把用户分成几类?用来做什么?”
第2步:构造特征
↓
R(最近)、F(频率)、M(金额)及其他业务指标
第3步:数据预处理
↓
标准化(因为R、F、M量纲不同)
第4步:选择K值
↓
手肘法 + 轮廓系数 + 业务经验
第5步:运行K-Means
↓
得到分组标签
第6步:解读结果
↓
分析每组的特征,给出业务标签
第7步:制定策略
↓
针对每组制定差异化运营策略
八、如何向AI描述聚类需求
| 你的需求 | 你应该这样告诉AI |
|---|---|
| 做聚类分析 | “对用户做K-Means聚类分群,K=4” |
| 特征标准化 | “对R、F、M三个特征做标准化,量纲差异很大” |
| 选择K值 | “用手肘法帮我确定最佳的K值” |
| 轮廓系数 | “计算不同K值的轮廓系数,告诉我哪个K最好” |
| 解读结果 | “帮我分析每个聚类的特征,给出业务解读” |
| 可视化 | “把聚类结果画成散点图,用不同颜色表示不同组” |
九、本章总结
聚类核心概念速记
| 概念 | 一句话 |
|---|---|
| 聚类 | 发现数据中的自然分组 |
| K-Means | 找K个中心点,不断迭代优化 |
| 手肘法 | 找误差下降变缓的“拐点” |
| 轮廓系数 | 越接近1聚类越好 |
| RFM | R最近、F频率、M金额——用户分群经典模型 |
算法选择速记
| 场景 | 选什么 |
|---|---|
| 数据量大,要快 | K-Means |
| 不知道K,要可视化 | 层次聚类 |
| 形状不规则,要自动识别异常 | DBSCAN |
聚类 vs 分类速记
| 分类 | 聚类 | |
|---|---|---|
| 有没有答案 | ✅ 有 | ❌ 无 |
| 目标 | 预测类别 | 发现分组 |
| 评估 | 准确率、召回率等 | 轮廓系数、业务判断 |
核心心法
“聚类的价值不在算法本身,而在于你能不能用业务语言解读每组特征,让运营人员看得懂、用得上。”
十、思考题
-
K-Means中K=3,分析后发现每组人数分别是:800人、150人、50人。这个分组结果有什么问题?可能是什么原因?
-
某电商平台对用户做RFM聚类,发现“高价值用户”组里大部分人近3个月没消费,这个聚类结果有什么问题?应该怎么调整?
-
手肘法图中,误差随着K增加一直下降,没有明显“拐点”。这意味着什么?应该怎么选择K?
-
用户消费特征极度偏态(少数用户消费极高),直接做K-Means会有什么问题?应该怎么预处理?
-
聚类后发现某一组的特征非常模糊,与其他组边界不清晰。这是聚类算法的问题,还是数据本身的问题?应该怎么办?
下一节预告:7.5 模型调参与优化 —— 模型效果不够好怎么办?如何调参数、防止过拟合、提升泛化能力?
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)