无监督学习
问题
什么是无监督学习?聚类、降维和异常检测的原理是什么?有哪些常见算法?
答案
无监督学习(Unsupervised Learning) 是在没有标签的数据中自动发现隐含结构和模式。与监督学习需要"正确答案"不同,无监督学习完全依靠数据本身的分布特征来学习。
一、三大任务类型
| 任务 | 目标 | 典型场景 |
|---|---|---|
| 聚类 | 将相似的数据分到同一组 | 用户分群、新闻主题发现、图像分割 |
| 降维 | 减少特征维度,保留核心信息 | 数据可视化、特征压缩、去噪 |
| 异常检测 | 找出偏离正常模式的数据 | 欺诈检测、故障预警、入侵检测 |
二、聚类算法
K-Means
核心思想:将 N 个数据点分成 K 个簇,使每个数据点到其所属簇中心的距离之和最小。
算法步骤:
- 随机初始化 K 个簇中心
- 将每个数据点分配到最近的簇中心
- 重新计算每个簇的中心(均值)
- 重复 2-3 直到簇中心不再变化
| 优点 | 缺点 |
|---|---|
| 简单、快速 | 需要预先指定 K |
| 适合球状分布 | 对初始中心敏感 |
| 可扩展到大数据集 | 不能发现非凸形状的簇 |
如何选择 K?
- 肘部法(Elbow Method):画 K vs. 簇内误差曲线,找"拐点"
- 轮廓系数(Silhouette Score):衡量簇内紧密度和簇间分离度,取值 [-1, 1]
DBSCAN
核心思想:基于密度的聚类——高密度区域形成簇,低密度区域是噪声。
两个关键参数:
- eps:邻域半径
- min_samples:核心点的最少邻居数
| 优点 | 缺点 |
|---|---|
| 不需要预先指定 K | eps 和 min_samples 敏感 |
| 能发现任意形状的簇 | 不适合密度差异大的数据 |
| 自动识别噪声/异常点 | 高维数据效果差 |
K-Means vs DBSCAN
- 数据分布:球状用 K-Means,不规则形状用 DBSCAN
- 噪声处理:K-Means 会将噪声强行分到某个簇,DBSCAN 会标记为噪声
- K 值:K-Means 需要指定,DBSCAN 自动确定簇数
三、降维算法
PCA(主成分分析)
核心思想:找到数据方差最大的方向(主成分),将高维数据投影到低维空间,最大限度保留信息。
其中 是由协方差矩阵的前 个特征向量组成的投影矩阵。
| 用途 | 说明 |
|---|---|
| 特征压缩 | 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 时间复杂度为 ,其中 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: 什么时候用无监督学习而不是监督学习?
答案:
- 没有标签:标注数据昂贵或不可用时(如新用户分群)
- 探索性分析:不知道数据有什么规律,先探索
- 预处理阶段:降维去噪后再做监督学习
- 异常检测:异常样本极少,无法训练有效的分类器