05 K-Means 与无监督:从客户分群到语义去重与异常检测

总:聚类是唯一”没有标签还能干活”的算法,工业界它有两个身份:显式使用(用户分群、语料治理)和隐式内嵌(IVF 向量索引、量化压缩、异常检测的底层思想)。LLM 时代语料爆炸,“自动把相似的东西归堆”比以前更重要了。


一、研究定位

  • K-Means 这一算法还在服役(用户分群、运营分层),但更大的戏份是当零件:IVF 索引的分桶、PQ 量化的码本全是 K-Means
  • 无标签场景的真正难点是评估——没有 ground truth,SSE/轮廓系数/CH 都是代理指标,最终要靠业务验收
  • 2026 年的热点落点:embedding + 聚类做语义去重/主题发现(BERTopic),这是 RAG 语料治理的标准动作

二、机制回顾

  • 流程:随机 K 个质心 → 样本归最近质心 → 簇内均值更新质心 → 质心不动为止(本质是 EM:E 步分配、M 步更新)
  • 评估:SSE(inertia_,只能同数据不同 K 比)、肘部法(拐点定 K)、SC 轮廓系数([-1,1] 簇内紧簇间远)、CH 指数
  • 已知坑:对初始质心敏感(→ k-means++ + n_init)、只能切凸形簇(→ DBSCAN)、要标准化、K 是超参没有常用参照

三、研究与应用脉络

3.1 用户分群:从 RFM 到现代特征工程

课内客户分群案例的现代完整版:

  • 特征层:RFM(最近购买/频次/金额)→ 加行为序列特征(浏览深度、活跃时段)→ embedding 特征(用户行为序列过双塔/embedding 模型)
  • 聚类层:K-Means 仍然是基线;群体行为复杂时换 GMM(软分配+椭圆形簇)或层次聚类
  • 应用层:分群结果喂给运营做差异化策略(新人券、沉睡唤醒)、喂给推荐做多路召回(每簇一路召回,类目热榜单)
  • 研究记录中值得补充:讲清楚”分群不是终点,接什么动作才是”——业务闭环意识比算法指标值钱

3.2 语义去重与语料治理(LLM 时代刚需)

RAG/预训练语料治理的标准管线:

  1. 全量文档 → embedding(bge-m3 等)
  2. 聚类(K-Means 或 HDBSCAN)→ 每簇只留代表性样本
  3. 近重复检测:簇内再做 pairwise 相似度(>0.95 判重)

实际案例:LLaMA 系列的语料清洗、企业知识库”一万篇文档聚成 200 个主题”做目录导航。工具上 BERTopic(embedding + HDBSCAN + c-TF-IDF 抽主题词)是这个管线的产品化。

3.3 K-Means 隐藏身份:向量检索的零件

  • IVF 索引:对全库向量做 K-Means,查询时只扫最近的 nprobe 个桶——聚类就是索引
  • PQ 乘积量化:向量切段,每段跑 K-Means 得到码本,存”码本 ID”不存原始向量,内存省 10-100 倍
  • 结论:学不好 K-Means,读不懂 Faiss 的源码。向量数据库的两大主流索引思想都建立在它上面

3.4 无监督异常检测:隔离森林

聚类的反面问题:“找出不属于任何堆的点”。主流方案 Isolation Forest:

  • 思想:随机特征+随机切分点递归切数据——正常点扎堆难隔离(要切很多刀),异常点孤立易隔离(几刀就出来),路径深度就是异常分数
  • 优点:无需标签、线性时间、对量纲不敏感(随机切分对单调变换不敏感,天然树系)
  • 应用:反欺诈、服务器指标告警、数据质量监控;我的漏损雷达里用它检测漏损线索(没有”漏损”标签,纯无监督)
  • 对比记忆:聚类找”堆”,异常检测找”非堆”,两者互补

3.5 聚类算法族谱速查

算法 简要判断 什么时候用
K-Means 质心迭代,快,只能凸簇 默认基线、大样本
DBSCAN 密度连通成簇,任意形状,自动识别噪声点 非凸簇、要剔噪
层次聚类 树状合并/分裂,出 dendrogram 小样本、想看层级结构
GMM 高斯混合 + EM,软分配 簇有重叠、要概率归属
HDBSCAN DBSCAN 的自适应密度升级 BERTopic 的默认件

四、研究问题与讨论

问题: K-Means 的 K 怎么定? 讨论: 数据驱动:肘部法(SSE 下降率突变点)+ 轮廓系数(越大越好)交叉验证;业务驱动:分群数量要能配上运营动作,K 的答案是”指标 + 业务”的交集,没有绝对正确值。

问题: K-Means 和 KNN 的区别?(经典基础问题,也经典容易混淆的问题) 讨论: 完全不同的两类算法只是名字像。KNN 是监督学习,有标签,预测时找 K 个最近邻居投票;K-Means 是无监督聚类,无标签,迭代更新质心把样本分堆。KNN 的 K 是”几个邻居”,K-Means 的 K 是”几个簇”。

问题: K-Means 怎么避免坏初始化? 讨论: k-means++ 让初始质心互相远离(按距离概率采样)+ n_init 多次重启取 SSE 最小的一轮。sklearn 默认已启用,但要意识到它在兜底。

问题: 无监督怎么评估? 讨论: 内部指标(SSE/SC/CH,代理质量)+ 外部指标(有部分标注时 ARI/NMI)+ 业务验收(分群是否可执行)。核心观点:无标签下所有内部指标都只是代理,最终裁判是下游任务效果。

五、后续实验

聚类教给我的是“没有标签也能发现结构”,以及一个工程觉悟:评估无监督算法时,先想清楚”这个簇拿来干什么”,指标只是代理。 动手项:拿自己知识库的 embedding 跑一遍 K-Means(肘部法定 K)→ 每簇打印 3 篇代表文档 → 亲手验证”聚类=语料目录”这件事,再对比 HDBSCAN 的簇形状。

六、研究向延伸

无监督问题要把“发现结构”和“结构是否有用”分开记录。聚类实验至少保留三类证据:内部指标、人工抽样解释、下游任务变化。没有下游目标时,SSE 或轮廓系数只能说明几何结构,不能说明业务价值。

建议做一个语料治理实验:对知识库 embedding 分别使用 K-Means、HDBSCAN 和近重复阈值去重,比较主题可读性、重复率、召回损失和人工审核成本。重点观察哪些簇是语义主题,哪些只是格式、来源或模板相似。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇