本章学习目标

  • 理解聚类的本质:发现数据中的自然分组,而非预测
  • 掌握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 分类速记

分类 聚类
有没有答案 ✅ 有 ❌ 无
目标 预测类别 发现分组
评估 准确率、召回率等 轮廓系数、业务判断

核心心法

“聚类的价值不在算法本身,而在于你能不能用业务语言解读每组特征,让运营人员看得懂、用得上。”

十、思考题

  1. K-Means中K=3,分析后发现每组人数分别是:800人、150人、50人。这个分组结果有什么问题?可能是什么原因?

  2. 某电商平台对用户做RFM聚类,发现“高价值用户”组里大部分人近3个月没消费,这个聚类结果有什么问题?应该怎么调整?

  3. 手肘法图中,误差随着K增加一直下降,没有明显“拐点”。这意味着什么?应该怎么选择K?

  4. 用户消费特征极度偏态(少数用户消费极高),直接做K-Means会有什么问题?应该怎么预处理?

  5. 聚类后发现某一组的特征非常模糊,与其他组边界不清晰。这是聚类算法的问题,还是数据本身的问题?应该怎么办?


下一节预告:7.5 模型调参与优化 —— 模型效果不够好怎么办?如何调参数、防止过拟合、提升泛化能力?

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐