Skip to content

无监督学习

本页速览 没有标签怎么办?无监督学习从数据本身发现结构——聚类、降维、异常检测、关联规则。本文讲清四大任务的原理、代表算法与评估困境,以及"无监督"在真实业务中的落地方式。

无监督学习 ​

概念定义:没有标准答案的学习 ​

监督学习靠"带标签的 (x, y)"学习,无监督学习(unsupervised learning)面对的是只有输入 x、没有标签 y 的数据。目标不是预测某个答案,而是发现数据内在的结构:哪些样本相似?数据本质是几类?哪些维度重要?哪些点是异常的?

一句话总结四大任务:

  • 聚类(Clustering):把相似的样本自动分组;
  • 降维(Dimensionality Reduction):把高维数据压缩到低维,保留主要结构;
  • 异常检测(Anomaly Detection):找出与大多数样本显著不同的点;
  • 关联规则(Association):发现特征/物品之间的共现规律。

无监督的价值在真实业务中常常被低估:现实里标签是稀缺且昂贵的(标注要钱要人),而无监督能直接从未标注的海量数据里提取价值——客户分群、数据压缩、欺诈识别、特征学习。深度学习时代,无监督的"表征学习"(预训练)甚至成了大模型的核心,见生成式模型与大语言模型。

二、聚类:给数据分组 ​

代表算法 ​

算法核心思想特点
K-Means迭代:分配样本到最近质心 → 更新质心快、简单、必须指定 K、对异常值/非球形分布敏感
DBSCAN密度相连的样本成簇不用指定 K、能找任意形状、自动识别噪声点
层次聚类(Agglomerative)自底向上合并最近簇,生成树状图可视化友好、可看任意粒度
GMM(高斯混合)假设数据是 K 个高斯分布的混合软聚类(给概率)、能建模椭圆簇

K-Means 的完整流程 ​

text
① 选 K 个初始质心
② 循环直到收敛:
   a. 每个样本分配到最近质心(距离常用欧氏距离)
   b. 每个簇的质心 = 簇内样本均值
python
from sklearn.cluster import KMeans
import numpy as np

X = np.random.default_rng(0).normal(size=(500, 2))  # 500 个二维样本
kmeans = KMeans(n_clusters=3, n_init=10, random_state=42)
labels = kmeans.fit_predict(X)
print(f"质心: {kmeans.cluster_centers_}")

K 怎么选? ​

  • 肘部法(Elbow):画"簇内平方和(inertia)随 K"的曲线,找拐点;
  • 轮廓系数(Silhouette Score):衡量"簇内紧凑 + 簇间分离",取最高 K;
  • 业务驱动:客户分群 K=5 还是 K=8,最终看分出的群业务上是否有意义、可解释。

聚类的评估困境 ​

聚类没有"标准答案",评估天然两难:内部指标(轮廓系数、inertia)只看结构,不保证业务有意义;外部指标(ARI、NMI)需要真实标签——但真实标签存在时,你通常直接用监督学习了。实践建议:以业务可解释性为准,内部指标只作参考。

三、降维:压缩数据,保住结构 ​

高维数据的三个问题:计算贵、可视化不可能、维度灾难(高维空间里样本越来越"稀疏",距离概念失效)。降维把数据映射到低维空间,分两类:

线性降维 ​

PCA(主成分分析):找方差最大的正交方向(主成分),把数据投影上去。原理:第一主成分方向 = 数据方差最大的方向。PCA 的用途:

  • 可视化(降到 2D/3D);
  • 去噪(丢弃方差小的成分);
  • 压缩特征(防过拟合);
  • 白化/预处理(与缩放配合)。
python
from sklearn.decomposition import PCA

pca = PCA(n_components=2)      # 降到 2 维
X_2d = pca.fit_transform(X)
print(f"两个主成分解释方差比: {pca.explained_variance_ratio_}")

选成分数:看"累计解释方差比"曲线,取达到 80%~95% 的成分数。

非线性降维 ​

算法核心思想特点
t-SNE保持高维邻域关系,用 t 分布低维投影可视化效果好,但不保全局结构、结果随机、不可逆
UMAP流形学习 + 拓扑思想比 t-SNE 快、更保全局结构,近年可视化首选
Autoencoder神经网络:压缩到瓶颈再还原非线性表征学习,可微、可继续训练

降维的三个误用

  1. PCA 前必须标准化(否则量纲大的特征主导主成分);
  2. t-SNE 的距离不可信——它只保邻域相对关系,图上"远"不代表真实远;
  3. 降维用于可视化 ≠ 用于建模:把 X 降到 2 维再训练分类器,通常丢信息;建模前降维要用 PCA/autoencoder 而非 t-SNE。

四、异常检测:找"不一样"的点 ​

业务场景:欺诈检测、工业质检、网络入侵、数据清洗。

方法思想特点
统计法(Z-score / IQR)偏离均值/分位数的点是异常快、可解释,仅适合单维/简单分布
隔离森林(Isolation Forest)随机切分,异常点容易被"孤立"(路径短)高效、抗高维,表格异常检测首选
LOF(局部离群因子)比较样本与其邻居的密度能发现局部异常
One-Class SVM学习"正常样本"的边界高维有效,调参敏感
自编码器重建误差正常样本重建误差小,异常误差大深度学习场景

异常检测的本质是"分布外"问题:正常数据占绝大多数,模型只需描述"正常长什么样",偏离太多的就是异常——这与[无监督聚类]的"主类结构"思想同源。

五、关联规则:购物篮分析 ​

Apriori(1994):从交易数据里发现"买了 A 也常买 B"的规则。三个指标:

  • 支持度:规则覆盖的比例(P(A∩B));
  • 置信度:A 出现时 B 出现的条件概率;
  • 提升度:P(B|A)/P(B),>1 表示正相关。

经典案例:沃尔玛"啤酒与尿布"(实际是数据挖掘教材的著名例子)。应用:捆绑销售、货架摆放、交叉推荐。今天在大规模场景已被协同过滤和 embedding 推荐取代,但规则可解释性至今是营销活动设计的实用工具(见推荐系统)。

六、无监督学习的落地姿势 ​

无监督很少"单独交付",更多作为管道的上游组件:

无监督的四种落地方式
├── 前置:聚类分群 → 按群分别建模(客户分群后各建流失模型)
├── 特征:降维/自编码器 → 给下游监督模型当特征
├── 引擎:表征预训练 → 微调(BERT、CLIP 都是无监督预训练)
└── 兜底:异常检测 → 数据清洗、欺诈告警(无标签也能上线)

这解释了为什么无监督是"便宜但有用":它不依赖昂贵标注,但产出(分组、表征、异常)能被监督学习或业务直接消费。

无监督 vs 自监督 vs 弱监督

  • 无监督:只用 x,无任何标签;
  • 自监督(self-supervised):从 x 自身构造伪标签(预测句子中被遮的词、预测图像旋转角度)——本质是"无监督地造出监督信号",是 BERT/GPT 预训练的核心;
  • 弱监督:用不精确/不完整的标签(远程监督、规则打标)。 大模型时代"无监督"的高光时刻其实是自监督——详见生成式模型。

七、权衡与取舍 ​

  • K-Means vs DBSCAN:数据球形、知道 K → K-Means;形状任意、要自动去噪 → DBSCAN。
  • PCA vs t-SNE/UMAP:要可解释、可逆、保方差 → PCA;只要可视化 → UMAP/t-SNE。
  • 聚类 vs 降维:聚类给"分组",降维给"坐标";二者常组合(先降维再聚类提速/可视化)。
  • 自动化 vs 可解释:无监督的"正确答案"由人定义——每个聚类结果都必须回到业务验证意义,否则就是"看起来分了组"。

延伸阅读 ​

参考资料 ​