跳到主要内容

无监督学习

问题

什么是无监督学习?聚类、降维和异常检测的原理是什么?有哪些常见算法?

答案

无监督学习(Unsupervised Learning) 是在没有标签的数据中自动发现隐含结构和模式。与监督学习需要"正确答案"不同,无监督学习完全依靠数据本身的分布特征来学习。

一、三大任务类型

任务目标典型场景
聚类将相似的数据分到同一组用户分群、新闻主题发现、图像分割
降维减少特征维度,保留核心信息数据可视化、特征压缩、去噪
异常检测找出偏离正常模式的数据欺诈检测、故障预警、入侵检测

二、聚类算法

K-Means

核心思想:将 N 个数据点分成 K 个簇,使每个数据点到其所属簇中心的距离之和最小。

算法步骤

  1. 随机初始化 K 个簇中心
  2. 将每个数据点分配到最近的簇中心
  3. 重新计算每个簇的中心(均值)
  4. 重复 2-3 直到簇中心不再变化
优点缺点
简单、快速需要预先指定 K
适合球状分布对初始中心敏感
可扩展到大数据集不能发现非凸形状的簇

如何选择 K?

  • 肘部法(Elbow Method):画 K vs. 簇内误差曲线,找"拐点"
  • 轮廓系数(Silhouette Score):衡量簇内紧密度和簇间分离度,取值 [-1, 1]

DBSCAN

核心思想:基于密度的聚类——高密度区域形成簇,低密度区域是噪声。

两个关键参数:

  • eps:邻域半径
  • min_samples:核心点的最少邻居数
优点缺点
不需要预先指定 Keps 和 min_samples 敏感
能发现任意形状的簇不适合密度差异大的数据
自动识别噪声/异常点高维数据效果差
K-Means vs DBSCAN
  • 数据分布:球状用 K-Means,不规则形状用 DBSCAN
  • 噪声处理:K-Means 会将噪声强行分到某个簇,DBSCAN 会标记为噪声
  • K 值:K-Means 需要指定,DBSCAN 自动确定簇数

三、降维算法

PCA(主成分分析)

核心思想:找到数据方差最大的方向(主成分),将高维数据投影到低维空间,最大限度保留信息。

Z=XWZ = X \cdot W

其中 WW 是由协方差矩阵的前 kk 个特征向量组成的投影矩阵。

用途说明
特征压缩100 维 → 10 维,加速后续模型训练
去噪丢弃小特征值对应的方向(通常是噪声)
数据可视化高维数据降至 2D/3D 进行可视化

t-SNE 与 UMAP

算法特点适用场景
t-SNE非线性降维,保留局部结构论文可视化,探索性分析
UMAP比 t-SNE 更快,保留全局结构高维数据可视化,推荐使用
警告

t-SNE 和 UMAP 主要用于可视化,不适合作为特征工程的降维手段(因为不保留全局距离关系且不可逆变换)。特征工程优先用 PCA。

四、异常检测

算法核心思想适用场景
孤立森林(Isolation Forest)异常点更容易被随机树"孤立"中高维、大数据集
LOF(局部异常因子)异常点的局部密度远低于邻居不同密度的簇
自编码器(Autoencoder)训练正常数据的编-解码器,异常数据重建误差大复杂数据(图像、时序)
One-Class SVM找一个包围正常数据的超球面小数据集

五、无监督学习在 AI/LLM 中的应用

场景应用
预训练LLM 的预训练本质上是无监督学习——从海量文本中自动学习语言规律
Embedding 聚类用 K-Means 对文档 Embedding 聚类,实现主题发现
向量降维用 PCA/UMAP 降低 Embedding 维度,加速检索
异常检测检测 LLM 输出中的异常响应、Prompt 注入

常见面试问题

Q1: K-Means 的时间复杂度是多少?如何加速?

答案

K-Means 时间复杂度为 O(nkdi)O(n \cdot k \cdot d \cdot i),其中 n 是样本数,k 是簇数,d 是特征维度,i 是迭代次数。

加速方法:

  • Mini-Batch K-Means:每次迭代只用一个小批量样本
  • K-Means++:智能初始化簇中心,减少迭代次数
  • Elkan's K-Means:利用三角不等式减少距离计算
  • 降维预处理:先用 PCA 降维再聚类

Q2: PCA 的主成分有什么含义?如何决定保留几个?

答案: 每个主成分是原始特征的线性组合,代表数据方差最大的方向。通常看累积解释方差比——选取使累积方差达到 90% 或 95% 的主成分数。也可以通过 Scree Plot(碎石图)找到"拐点"。

Q3: 聚类结果如何评估?

答案

有外部标签时(有真实类别参照):

  • 调整兰德指数(ARI)
  • 标准化互信息(NMI)

无外部标签时(纯无监督评估):

  • 轮廓系数(Silhouette Score):[-1, 1],越大越好
  • Calinski-Harabasz Index:簇间方差 / 簇内方差,越大越好
  • Davies-Bouldin Index:越小越好

Q4: 什么时候用无监督学习而不是监督学习?

答案

  • 没有标签:标注数据昂贵或不可用时(如新用户分群)
  • 探索性分析:不知道数据有什么规律,先探索
  • 预处理阶段:降维去噪后再做监督学习
  • 异常检测:异常样本极少,无法训练有效的分类器

相关链接