跳转至

无监督学习

无监督学习是机器学习的重要分支,其核心特征是训练数据没有标签。模型需要自行发现数据中的结构、模式和规律。

无监督学习概述

与监督学习的对比

维度 监督学习 无监督学习
标签 需要标注数据 不需要标签
目标 学习输入到输出的映射 发现数据的内在结构
评估 有明确的评估指标 评估较困难,常需人工判断
典型任务 分类、回归 聚类、降维、异常检测、密度估计
数据成本 标注成本高 数据获取成本低

应用场景

  • 客户分群:根据购买行为将客户划分为不同群体
  • 异常检测:信用卡欺诈检测、网络入侵检测
  • 数据可视化:高维数据的低维可视化
  • 特征学习:自编码器学习数据表征
  • 推荐系统:发现用户或物品的潜在相似性

聚类算法

聚类是无监督学习中最基本的任务之一,目标是将数据点划分为若干组(簇),使得同一组内的数据点尽可能相似,不同组的数据点尽可能不同。

K-Means 算法

K-Means 是最经典的聚类算法,思想简洁,实现高效。

算法步骤:

  1. 随机初始化 \(K\) 个聚类中心 \(\boldsymbol{\mu}_1, \boldsymbol{\mu}_2, \dots, \boldsymbol{\mu}_K\)
  2. 分配步骤(E-step):将每个数据点 \(\mathbf{x}_i\) 分配到最近的聚类中心:
\[ c_i = \arg\min_{k} \|\mathbf{x}_i - \boldsymbol{\mu}_k\|^2 \]
  1. 更新步骤(M-step):重新计算每个簇的中心:
\[ \boldsymbol{\mu}_k = \frac{1}{|C_k|} \sum_{\mathbf{x}_i \in C_k} \mathbf{x}_i \]
  1. 重复步骤 2-3,直到收敛(中心不再变化或变化量低于阈值)。

目标函数(SSE / Inertia):

\[ J = \sum_{k=1}^{K} \sum_{\mathbf{x}_i \in C_k} \|\mathbf{x}_i - \boldsymbol{\mu}_k\|^2 \]

K-Means 本质上是在最小化组内平方和(Within-Cluster Sum of Squares, WCSS)。

K 值选择:

  • 肘部法则(Elbow Method):绘制 \(K\) 与 SSE 的关系图,选择 SSE 下降速度明显减缓的"肘部"点。
  • 轮廓系数(Silhouette Score):对每个样本 \(i\),定义:
\[ s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}} \]

其中 \(a(i)\) 是样本到同簇其他点的平均距离,\(b(i)\) 是样本到最近其他簇的平均距离。\(s(i) \in [-1, 1]\),越接近 1 越好。

K-Means 的局限性:

  • 需要预先指定 \(K\)
  • 对初始化敏感(K-Means++ 可缓解)
  • 只能发现凸形(球形)簇
  • 对异常值敏感

DBSCAN

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,能发现任意形状的簇,并自动识别噪声点。

核心概念:

  • \(\varepsilon\)-邻域:以点 \(p\) 为中心、半径为 \(\varepsilon\) 的区域内的所有点
  • 核心点\(\varepsilon\)-邻域中至少包含 \(\text{MinPts}\) 个点的点
  • 密度直达:点 \(q\) 在核心点 \(p\)\(\varepsilon\)-邻域内,则 \(q\)\(p\) 密度直达
  • 密度可达:存在一条核心点链,使得相邻点密度直达
  • 密度相连:存在一个核心点 \(o\),使得 \(p\)\(q\) 都由 \(o\) 密度可达

参数选择:

  • \(\varepsilon\):通常通过 K-距离图(K-distance plot)来选择,对第 \(k\) 近邻距离排序后找拐点
  • MinPts:经验法则通常取 \(\text{MinPts} \geq d + 1\)\(d\) 为数据维度),常用值为 5

优势:无需指定簇数、能发现任意形状的簇、能识别噪声点。

劣势:对参数敏感、难以处理密度不均匀的数据。


层次聚类

层次聚类构建一棵聚类树(dendrogram),可以从底向上合并(凝聚式)或从顶向下分裂(分裂式)。

凝聚式层次聚类步骤:

  1. 初始时每个样本为一个簇
  2. 计算所有簇对之间的距离
  3. 合并距离最近的两个簇
  4. 重复直到只剩一个簇

常用链接准则:

链接方法 定义 特点
单链接(Single) \(d(A,B) = \min_{a \in A, b \in B} d(a,b)\) 易产生链式效应
全链接(Complete) \(d(A,B) = \max_{a \in A, b \in B} d(a,b)\) 倾向于紧凑的簇
平均链接(Average) $d(A,B) = \frac{1}{ A
Ward 链接 合并后组内方差增量最小 倾向于等大小的簇

高斯混合模型(GMM)

GMM 假设数据由 \(K\) 个高斯分布混合生成:

\[ p(\mathbf{x}) = \sum_{k=1}^{K} \pi_k \, \mathcal{N}(\mathbf{x} \mid \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) \]

其中 \(\pi_k\) 为混合权重,满足 \(\sum_k \pi_k = 1\)

EM 算法求解:

E-step:计算每个样本属于各高斯成分的后验概率(责任):

\[ \gamma_{ik} = \frac{\pi_k \, \mathcal{N}(\mathbf{x}_i \mid \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)}{\sum_{j=1}^{K} \pi_j \, \mathcal{N}(\mathbf{x}_i \mid \boldsymbol{\mu}_j, \boldsymbol{\Sigma}_j)} \]

M-step:更新参数:

\[ \boldsymbol{\mu}_k = \frac{\sum_i \gamma_{ik} \mathbf{x}_i}{\sum_i \gamma_{ik}}, \quad \boldsymbol{\Sigma}_k = \frac{\sum_i \gamma_{ik} (\mathbf{x}_i - \boldsymbol{\mu}_k)(\mathbf{x}_i - \boldsymbol{\mu}_k)^\top}{\sum_i \gamma_{ik}}, \quad \pi_k = \frac{\sum_i \gamma_{ik}}{N} \]

GMM 相比 K-Means 的优势:可以建模椭球形簇、提供概率化的软分配。


谱聚类

谱聚类利用数据的相似度图的拉普拉斯矩阵的谱(特征值)来进行聚类。

算法步骤:

  1. 构建相似度矩阵 \(\mathbf{W}\)(如高斯核 \(w_{ij} = \exp(-\|\mathbf{x}_i - \mathbf{x}_j\|^2 / 2\sigma^2)\)
  2. 计算度矩阵 \(\mathbf{D}\),其中 \(D_{ii} = \sum_j w_{ij}\)
  3. 计算归一化拉普拉斯矩阵 \(\mathbf{L}_{\text{sym}} = \mathbf{I} - \mathbf{D}^{-1/2}\mathbf{W}\mathbf{D}^{-1/2}\)
  4. \(\mathbf{L}_{\text{sym}}\) 最小的 \(K\) 个特征向量,组成矩阵 \(\mathbf{U} \in \mathbb{R}^{n \times K}\)
  5. \(\mathbf{U}\) 的行向量进行 K-Means 聚类

谱聚类能发现非凸形的簇,适用于流形结构的数据。


降维

降维旨在将高维数据映射到低维空间,同时尽可能保留数据的重要结构信息。

PCA(主成分分析)

PCA 寻找数据方差最大的方向,将数据投影到这些方向上。

数学推导:

给定数据矩阵 \(\mathbf{X} \in \mathbb{R}^{n \times d}\)(已中心化),计算协方差矩阵:

\[ \mathbf{C} = \frac{1}{n-1} \mathbf{X}^\top \mathbf{X} \]

\(\mathbf{C}\) 进行特征值分解:

\[ \mathbf{C} \mathbf{v}_k = \lambda_k \mathbf{v}_k \]

按特征值 \(\lambda_1 \geq \lambda_2 \geq \dots \geq \lambda_d\) 降序排列,取前 \(K\) 个特征向量作为投影方向。

方差解释比(Explained Variance Ratio):

\[ \text{EVR}_k = \frac{\lambda_k}{\sum_{i=1}^{d} \lambda_i} \]

通常选择使累计方差解释比达到 95% 的维度数。


t-SNE

t-SNE(t-distributed Stochastic Neighbor Embedding)是一种非线性降维方法,特别适合高维数据的可视化。

核心思想:

  1. 在高维空间中,用高斯核计算点对的相似度:
\[ p_{j|i} = \frac{\exp(-\|\mathbf{x}_i - \mathbf{x}_j\|^2 / 2\sigma_i^2)}{\sum_{k \neq i}\exp(-\|\mathbf{x}_i - \mathbf{x}_k\|^2 / 2\sigma_i^2)} \]

对称化:\(p_{ij} = \frac{p_{j|i} + p_{i|j}}{2n}\)

  1. 在低维空间中,用 Student-t 分布(自由度为1)计算相似度:
\[ q_{ij} = \frac{(1 + \|\mathbf{y}_i - \mathbf{y}_j\|^2)^{-1}}{\sum_{k \neq l}(1 + \|\mathbf{y}_k - \mathbf{y}_l\|^2)^{-1}} \]
  1. 最小化 KL 散度:\(\text{KL}(P \| Q) = \sum_{i \neq j} p_{ij} \log \frac{p_{ij}}{q_{ij}}\)

困惑度(Perplexity):控制高斯核带宽 \(\sigma_i\),通常取 5-50。困惑度越大,关注的邻域越广。

注意事项: t-SNE 不保留全局结构,不同运行结果可能不同,不适合作为预处理步骤。


UMAP

UMAP(Uniform Manifold Approximation and Projection)基于拓扑数据分析黎曼几何的理论。

核心思想:

  1. 假设数据均匀分布在一个黎曼流形上
  2. 在高维空间中构建模糊单纯复形(fuzzy simplicial set)来表示拓扑结构
  3. 在低维空间中寻找尽可能保留该拓扑结构的嵌入

UMAP vs t-SNE 对比:

维度 t-SNE UMAP
速度 慢(\(O(n^2)\) 或 Barnes-Hut \(O(n \log n)\) 快(基于近似最近邻)
全局结构 不保留 更好地保留
可扩展性 数万点 可处理百万级数据
理论基础 概率分布匹配 拓扑/范畴论
用途 仅可视化 可视化 + 通用降维

异常检测

异常检测的目标是识别与大多数数据显著不同的"异常"样本。

Isolation Forest

核心思想:异常点比正常点更容易被"隔离"(即需要更少的随机切分次数)。

  • 随机选择特征和分裂值,构建隔离树(iTree)
  • 异常分数基于样本在所有树中的平均路径长度:
\[ s(\mathbf{x}, n) = 2^{-\frac{E[h(\mathbf{x})]}{c(n)}} \]

其中 \(h(\mathbf{x})\) 为路径长度,\(c(n)\) 为归一化因子。\(s\) 接近 1 表示异常,接近 0.5 表示正常。

LOF(Local Outlier Factor)

LOF 通过比较样本的局部密度与其邻居的局部密度来检测异常:

\[ \text{LOF}_k(\mathbf{x}) = \frac{\sum_{\mathbf{o} \in N_k(\mathbf{x})} \frac{\text{lrd}_k(\mathbf{o})}{\text{lrd}_k(\mathbf{x})}}{|N_k(\mathbf{x})|} \]

LOF 大于 1 表示该点密度低于其邻域,可能是异常点。

One-Class SVM

One-Class SVM 在特征空间中找到一个超平面,将大部分数据与原点分开:

\[ \min_{\mathbf{w}, \rho, \boldsymbol{\xi}} \frac{1}{2}\|\mathbf{w}\|^2 + \frac{1}{\nu n}\sum_{i=1}^{n}\xi_i - \rho \]
\[ \text{s.t.} \quad \mathbf{w}^\top \phi(\mathbf{x}_i) \geq \rho - \xi_i, \quad \xi_i \geq 0 \]

参数 \(\nu\) 控制异常比例的上界。


各方法综合对比

方法 类型 适用场景 复杂度 关键参数
K-Means 聚类 凸形簇、大数据集 \(O(nKt)\) \(K\)
DBSCAN 聚类 任意形状、有噪声 \(O(n \log n)\) \(\varepsilon\), MinPts
GMM 聚类 椭球形簇、软分配 \(O(nK d^2)\) \(K\), 协方差类型
谱聚类 聚类 非凸流形结构 \(O(n^3)\) \(K\), \(\sigma\)
PCA 降维 线性降维、去相关 \(O(nd^2)\) 主成分数
t-SNE 降维 高维数据可视化 \(O(n^2)\) 困惑度
UMAP 降维 可视化 + 通用降维 \(O(n^{1.14})\) n_neighbors, min_dist
Isolation Forest 异常检测 高维异常检测 \(O(n \log n)\) 树数量、采样大小
LOF 异常检测 局部异常检测 \(O(n^2)\) \(k\)(邻居数)
One-Class SVM 异常检测 小数据、高维 \(O(n^2) \sim O(n^3)\) \(\nu\), 核函数

评论 #