跳转至

P1-8.2 无监督学习:结构与表征

Section ID: P1-8.2 Version: v2026.07.20

8.1 已经把 label 说明成贴在数据上的区分标记。监督学习则是在同时给出 input 与 label 的例子中,去拟合输入与输出的关系。

这一节从相反的一侧开始。unsupervised learning 是一种不依赖人事先贴好标签,而是试图在数据内部寻找 structureclusterrepresentation 的学习方式。

这一节的核心问题是:

当没有标签时,
模型到底试图在数据里找到什么?

无监督学习并不是“完全没有标准地乱学”,
而是在没有人提供标签的情况下,去寻找数据内部的结构。

这一节会把 unsupervised learningstructureclusteringdimensionality reductioncluster label 统一放到一个视角下理解:在没有标签的数据里寻找结构。labelsupervised learning 的基线已经在 8.1 固定,representation 的基础感觉则在 3.3 和 4.3 先出现过。

这一节不会计算具体的无监督学习算法。K-means、hierarchical clustering、PCA、t-SNE 和 autoencoder 只会以名称和作用的形式略过。

这一节也先固定 没有标签时模型试图在数据里寻找什么。Distance function、the curse of dimensionality 和 cluster evaluation metric 会在 Part 4 的 clustering 与 dimensionality reduction 章节回来;manifold learning 的细部数学这里先不展开。

这里也不会再次长篇定义 label。它的基础区分已经在 8.1 固定。这里聚焦的是 没有标签时什么会成为学习标准representation 也不是这一节第一次引入的新词;这里只抓住无监督学习可以为了显露结构而改变表示这一连接。

这里先采用一个工作定义:

无监督学习,就是在没有人附加标签的情况下,
从数据内部寻找结构、聚类或表征的方法。

不依靠标签寻找结构与表征的方式

  • 把无监督学习说明成“从无标签数据中寻找结构”的学习方式。
  • 理解“没有标签”并不等于“没有目标”或“没有标准”。
  • 在入门层面区分 clustering 与 dimensionality reduction。
  • 避免把 cluster label 和人附加的监督学习标签混为一谈。
  • 不把无监督学习和监督学习、强化学习、深度学习压成同一种分类。

三个基准

基准 为什么重要 本节需要达到的理解程度
无监督学习是在没有标签时寻找数据内部结构 这是它和监督学习最基础的边界。 理解它是在没有现成答案标签时寻找“相似、聚合或隐藏轴”即可。
结果不会自动自带意义,仍然需要人解释 这能减少把 cluster 或降维结果直接读成真相的错误。 理解即使模型分出了组,给这些组起什么业务名字仍然是人的工作。
clustering、dimensionality reduction 等问题问的并不一样 这能防止把“无监督学习”当成某一种单独技术。 至少先能区分“什么彼此相似”“怎样把维度压缩下来看”“结构在哪里变得密集”。

先做一个角色分拆:

术语 极短含义 本节里的作用
unsupervised learning 不依赖标签,通过寻找结构来学习 Chapter 8 的第二个基准点
structure 数据内部的关系与模式 这一节的中心概念
clustering 把相似的东西聚在一起 代表性的无监督学习问题
dimensionality reduction 用更少的轴重新看高维数据 让结构更容易被看见的代表问题
representation 数据在模型内部呈现出来的形式 让结构可见的角度
cluster label 算法生成的分组编号或标记 必须和监督学习标签区分开的对象

没有标签,不等于没有目标

很多人第一次听到 unsupervised,会以为这里什么引导都没有。更准确的说法只是:这里没有人预先贴好的标签。

人没有事先贴好标签,
但目标仍然存在:要从数据内部找到结构。

Google 的 Machine Learning Glossary 也把 unsupervised learning 说明成:让模型在 unlabeled examples 中寻找模式。如果监督学习是按给定标签去拟合输出,那么无监督学习看的就是数据本身的排布与关系。

假设我们有这样一组客服消息:

客服句子 人提供的标签
“我想退款。”
“配送什么时候到?”
“商品寄来时是坏的。”
“可以取消订单吗?”
“我想修改地址。”

这里没有 配送退款换货 这样的标签。但句子之间仍然可能存在相似性。无监督学习试图去找的,就是这类相似、重复模式或隐藏轴。

structure 指的是数据内部的关系

在无监督学习里,structure 指的是:数据并不是完全随机散落的,而是内部带着某种关系。

例如:

数据 可能找到的结构
客户购买历史 购买倾向相似的客户群
商品浏览记录 经常被一起浏览的商品集合
客服句子 意图相近的句子组
服务器日志 与平时不同的请求模式
图像特征 视觉上相近的形状或纹理集合

关键在于:这些结构并不是人预先贴好的 A 组配送咨询 之类标签。算法通常是通过距离、相似度、密度或方差之类的标准去找结构。

监督学习是按标签去拟合;
无监督学习是在没有标签时寻找结构。

clustering 会把相似的东西聚在一起

clustering 是无监督学习最典型的例子之一。scikit-learn 也说明,unlabeled data 的 clustering 可以通过 sklearn.cluster 来完成。

这里说的 clustering,并不等于“人看一眼再手工分类”。人在业务分析或统计整理里当然也会自己分组;但在机器学习语境中,clustering 更接近一种数值程序:先把数据变成可计算的特征表示,再用 distance、similarity、density 或 variance 之类的标准去形成分组。

区分 人手工分组 算法式 clustering
标准 人的阅读理解、业务经验、先验知识 选定的特征、距离、相似度、密度、方差
结果 人命名的业务组或类别 cluster 编号、中心点或分组结构
优点 容易直接引入上下文与意图 适合用一致的可计算标准扫大量数据
注意点 不同人标准可能不同 算出来的分组未必直接等于业务意义

所以,clustering 并不是“机器自动懂得真正分类”。更准确地说,它是在给定表示与标准下,把“看起来相似”的数据聚在一起。

例如 K-means 会把数据划分成若干 cluster,并反复把每个样本分配到最近的 centroid。Stanford CS229 把 k-means 说明成:在无标签数据中构造 cohesive clusters 的问题,并说明每个训练样本会被分配给最近的 cluster centroid。scikit-learn 也说明,k-means 会把样本分成若干组,并试图最小化 within-cluster sum-of-squares 标准。

输入数据 clustering 想找出的东西
客户购买历史 购买模式相近的客户群
新闻文章 主题相近的文章群
句子 embedding 语义接近的句子群
图像特征 视觉上相近的图像群
传感器记录 相似运行状态的集合

最重要的问题永远是:

我们究竟是按什么样的“相似”来把它们视作一组的?

这个答案会随着特征选择而改变。即使是同一份数据,只要比较的特征不同,聚出来的结果也可能不同。

场景 可以比较的特征 可能聚出的组 注意点
商城客户 购买频率、平均订单金额、回访间隔 经常购买的客户、偶尔大额消费的客户、只浏览不怎么买的客户 VIP流失风险 之类的名字,是人后面加上的解释
客服消息 句子 embedding、高频词、消息长度 接近配送的消息、接近退款的消息、接近瑕疵投诉的消息 聚类结果未必和业务部门划分完全一致
新闻文章 标题与正文 embedding、人物、地点、主题词 政治文章组、经济文章组、体育文章组 同一事件和同一主题可能会混在一起
商品图片 颜色、形状、纹理、特征向量 色调相近的商品、形状相近的商品、拍摄角度相近的商品 结果可能和人熟悉的商品分类不同
服务器日志 请求时间、状态码、延迟、路径 正常请求模式、慢请求模式、错误偏多的模式 它只是异常候选,不等于原因分析已经完成

比如把客服句子的 embedding 拿来聚类:

聚类 可能包含的句子
cluster 1 “什么时候发货?”,“我订的商品还没到。”
cluster 2 “我想退款。”,“可以取消付款吗?”
cluster 3 “商品寄来时是坏的。”,“可以换货吗?”

算法一开始并不知道 配送退款换货 这些名字。它先是按相似性把句子聚起来,之后人才可能看着结果说:“这一组看起来接近配送咨询。”

这也是为什么 cluster label 和监督学习里的 label 不是同一个概念。

cluster label 是算法为了表示分组结果而生成的编号或标记;
它不等于人事先贴好的监督学习标签。

dimensionality reduction 是用更少的轴重新看复杂数据

无监督学习不只用于分组,也常用来把复杂数据放到更少的轴上重新观察,这就叫 dimensionality reduction

这里的 dimension 可以先理解成描述数据的一条轴。图像可能带着大量像素维度,文本可能带着大量词或 embedding 维度,客户数据则可能包含购买次数、金额、访问时间、地区等许多变量。

dimensionality reduction 的目标,是在尽量保留重要结构的前提下,用更少的轴去重新观察这些高维数据。

数据 dimensionality reduction 能帮什么
高维图像特征 看相似图像是否彼此靠近
句子 embedding 观察语义接近的句子群
客户行为数据 找出主要行为轴并可视化
传感器数据 查看正常模式与异常模式的区别

scikit-learn 对 PCA 的说明指出,PCA 会把多变量数据分解成能解释较多方差的正交成分。对入门阶段来说,先保留下面这条基线就够了:

降维,就是用更少的轴重新看复杂数据,
同时尽量保住重要结构。

representation 是数据在模型里呈现出来的形状

这里 representation 这个词也很重要。它表示原始数据被转换成某种更适合模型或算法处理的形式。

例如,句子原样拿来并不容易直接计算;把句子变成数值向量后,句子之间的距离和相似性就可以计算了。图像原本是像素数组,但在模型内部,它可能会以形状、颜色、边界或纹理特征的形式出现。

在无监督学习里,模型不一定是为了拟合标签,它也可能是在寻找一种能让数据结构显现出来的 representation。

原始数据 representation 例子
客服句子 sentence embedding
商品图像 图像特征向量
客户行为日志 行为模式向量
文档集合 与主题相关的低维表示

无监督学习也可以和“在没有标签时,通过改变数据表示让结构更可见”这件事联系起来。后面的章节会把它和深度学习、embedding 更直接地连起来。

无监督学习结果需要解释

因为没有预先标签,把无监督学习结果直接读成业务真相是有风险的。

假设某次聚类结果是这样:

聚类 包含的客户
cluster 1 购买金额高、访问频率高
cluster 2 访问很多但购买少
cluster 3 只在特定季节购买

如果立刻把它们命名成 VIP流失风险季节型客户,就太快了。那些名字是人后来加上的解释,不是算法直接给出的真理。无监督学习能做的是揭示“候选结构”,而不是自动给出业务意义。

因此,读无监督学习结果时,至少要继续问:

这个结构是按什么标准形成的?
如果换了距离函数或变量选择,结果会不会变?
这个结果能否被业务解释?
人后来贴上的名字是不是过度解释?

它和其他学习类型的边界

第 8 章在区分三种基本学习类型。重新压缩一下:

学习类型 数据与信号 核心问题 本章位置
supervised learning 输入与标签 这个输入该预测什么标签? 8.1
unsupervised learning 无标签数据 数据内部有什么结构? 8.2
reinforcement learning 状态、动作、奖励 哪些动作会提高长期奖励? 8.3

deep learning 不在这张表同一条分类轴上。它可以被用于无监督学习,但它本身不等于无监督学习。

检查清单

  • 能把无监督学习说明成“从无标签数据中寻找结构”的学习方式。
  • 能说明“没有标签”并不等于“没有目标”。
  • 能把 clustering 说明成“把相似的东西聚在一起”的方式。
  • 能把 dimensionality reduction 说明成“用更少的轴重新看复杂数据”的方式。
  • 能区分 cluster label 和人附加的监督学习 label。
  • 能说明无监督学习结果仍然需要人的解释与复核。
  • 能把“什么算相似”“要找什么结构”“结果由谁来解释”分开来说明。
  • 能说明不该把 cluster 编号或降维坐标直接读成业务意义或真相。

来源与参考资料