现代分类方法概述
分类问题是模式识别与机器学习的核心任务之一。从经典的统计判别分析到当代的集成学习分类器,分类方法经历了数十年的演进。本章系统梳理现代分类方法的理论框架、评价体系与主要算法,为数学建模中的分类问题提供方法论指引。
从统计判别到机器学习
分类方法的发展脉络体现了统计学与计算机科学的深度融合,从参数化的概率模型逐步走向数据驱动的非参数学习。
经典统计判别分析
统计判别分析起源于 Fisher(1936)提出的线性判别分析(LDA)。其核心思想是寻找一个投影方向 \( \mathbf{w} \),使得不同类别在该方向上的投影尽可能分开。Fisher 判别准则定义为:
\[ J(\mathbf{w}) = \frac{\mathbf{w}^T \mathbf{S}_B \mathbf{w}}{\mathbf{w}^T \mathbf{S}_W \mathbf{w}} \]
其中 \( \mathbf{S}_B \) 为类间散布矩阵,\( \mathbf{S}_W \) 为类内散布矩阵。最优投影方向满足广义特征值问题 \( \mathbf{S}_B \mathbf{w} = \lambda \mathbf{S}_W \mathbf{w} \)。
贝叶斯判别则从后验概率出发,将样本 \( \mathbf{x} \) 判给使后验概率最大的类别:
\[ \hat{y} = \arg\max_{k} P(C_k \mid \mathbf{x}) = \arg\max_{k} \frac{P(\mathbf{x} \mid C_k) P(C_k)}{P(\mathbf{x})} \]
当类条件密度服从多元正态分布且协方差相等时,贝叶斯判别退化为线性判别分析。
从参数模型到非参数方法
经典方法依赖分布假设(如正态性),当数据分布复杂时表现受限。20世纪80年代后,非参数方法逐渐兴起:
- \( k \)-近邻法(KNN):通过样本空间中的局部投票进行分类,无需假设数据分布
- 核密度估计:用核函数逼近类条件概率密度
- 决策树:通过递归划分特征空间实现分类
机器学习范式的确立
20世纪90年代,统计学习理论(Vapnik)和计算学习理论(Valiant)为分类问题提供了统一的理论框架。核心特征包括经验风险最小化、结构风险最小化以及对计算效率的关注。
学习理论的核心不等式(泛化界)为:
\[ R(f) \leq R_{\text{emp}}(f) + \sqrt{\frac{h(\ln(2n/h) + 1) - \ln(\delta/4)}{n}} \]
其中 \( R(f) \) 为期望风险,\( R_{\text{emp}}(f) \) 为经验风险,\( h \) 为 VC 维,\( n \) 为样本量。
监督学习分类框架
监督学习分类的统一框架可以概括为:给定标记数据集,学习从输入空间到标签空间的映射,并使该映射在未见数据上具有良好的预测能力。
问题形式化
设训练集为 \( \mathcal{D} = {(\mathbf{x}i, y_i)}{i=1}^n \),其中 \( \mathbf{x}_i \in \mathcal{X} \subseteq \mathbb{R}^d \) 为特征向量,\( y_i \in {1, 2, \ldots, K} \) 为类别标签。学习目标是从假设空间 \( \mathcal{H} \) 中选择使期望风险最小的分类器:
\[ f^* = \arg\min_{f \in \mathcal{H}} \mathbb{E}_{(\mathbf{x}, y) \sim P} \left[ L(y, f(\mathbf{x})) \right] \]
常用的损失函数包括:
- 0-1 损失:\( L(y, \hat{y}) = \mathbb{I}(y \neq \hat{y}) \)
- 交叉熵损失:\( L(y, \hat{p}) = -\sum_{k=1}^K \mathbb{I}(y=k) \ln \hat{p}_k \)
- Hinge 损失:\( L(y, f(\mathbf{x})) = \max(0, 1 - y f(\mathbf{x})) \)
生成式与判别式模型
生成式模型建模联合分布 \( P(\mathbf{x}, y) \) 或类条件分布 \( P(\mathbf{x} \mid y) \),典型代表包括朴素贝叶斯和高斯混合模型。判别式模型直接建模条件概率 \( P(y \mid \mathbf{x}) \) 或决策边界,典型代表包括逻辑回归和支持向量机。
逻辑回归对二分类问题建模为:
\[ P(y = 1 \mid \mathbf{x}) = \sigma(\mathbf{w}^T \mathbf{x} + b) = \frac{1}{1 + e^{-(\mathbf{w}^T \mathbf{x} + b)}} \]
多分类策略
对于 \( K > 2 \) 的多分类问题,常用一对多(OvR)、一对一(OvO)或 Softmax 直接多分类:
\[ P(y = k \mid \mathbf{x}) = \frac{e^{\mathbf{w}k^T \mathbf{x} + b_k}}{\sum{j=1}^K e^{\mathbf{w}_j^T \mathbf{x} + b_j}} \]
模型评价
选择合适的评价指标是分类建模中至关重要的环节。不同的应用场景对分类错误的代价不同,需要根据问题特点选择评价标准。
混淆矩阵与准确率
对于二分类问题,混淆矩阵定义了 TP(真正例)、FN(假负例)、FP(假正例)、TN(真负例)四个基本计数。准确率为:
\[ \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} \]
注意:当类别严重不平衡时,准确率会产生误导。例如在 1% 正例的数据集上,将所有样本判为负类即可获得 99% 准确率。
精确率与召回率
精确率(Precision)衡量预测为正类中的准确程度,召回率(Recall)衡量实际正类被正确识别的比例:
\[ \text{Precision} = \frac{TP}{TP + FP}, \quad \text{Recall} = \frac{TP}{TP + FN} \]
二者之间存在权衡关系。提高分类阈值通常增加精确率但降低召回率。
F1 分数
F1 分数是精确率与召回率的调和平均:
\[ F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} = \frac{2TP}{2TP + FP + FN} \]
更一般地,\( F_\beta \) 分数允许对召回率赋予不同权重:
\[ F_\beta = (1 + \beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}} \]
ROC 曲线与 AUC
ROC 曲线以假正率(FPR)为横轴、真正率(TPR)为纵轴:
\[ \text{TPR} = \frac{TP}{TP + FN}, \quad \text{FPR} = \frac{FP}{FP + TN} \]
AUC 表示随机正样本的预测分数高于随机负样本的概率:
\[ \text{AUC} = P(f(\mathbf{x}^+) > f(\mathbf{x}^-)) \]
AUC = 0.5 表示随机猜测,AUC = 1.0 表示完美分类。AUC 对类别不平衡和阈值选择具有鲁棒性。
多分类评价
对于多分类问题,指标扩展方式包括宏平均(Macro)、微平均(Micro)和加权平均(Weighted):
\[ \text{Macro-}F_1 = \frac{1}{K} \sum_{k=1}^K F_1^{(k)}, \quad \text{Micro-}F_1 = \frac{2 \sum_k TP_k}{2 \sum_k TP_k + \sum_k FP_k + \sum_k FN_k} \]
交叉验证
交叉验证是估计模型泛化性能的标准方法,通过反复将数据划分为训练集与验证集来降低评估方差。
K 折交叉验证
将数据集随机划分为 \( K \) 个等大小的子集。每次使用 \( K-1 \) 个子集训练,剩余 1 个子集验证:
\[ \text{CV}(K) = \frac{1}{K} \sum_{k=1}^K L(\mathcal{D}_k^{\text{val}}, f_k) \]
常用的 \( K \) 值为 5 或 10。留一交叉验证(LOOCV)是 \( K = n \) 的极端情形,偏差小但计算开销大。
分层交叉验证
当类别不平衡时,分层 K 折交叉验证确保每折中各类别的比例与原始数据集一致,避免某些折中缺失某个类别。
嵌套交叉验证
当需要同时进行模型选择和性能评估时,应使用嵌套交叉验证:外层循环评估最终模型性能,内层循环选择最优超参数。这避免了超参数选择过程中的信息泄露。
过拟合与正则化
过拟合是分类模型面临的核心挑战。正则化通过约束模型复杂度来缓解过拟合,在拟合能力与泛化能力之间取得平衡。
偏差-方差分解
期望预测误差可以分解为:
\[ \text{Error} = \text{Bias}^2 + \text{Variance} + \text{Irreducible Noise} \]
高偏差意味着欠拟合,高方差意味着过拟合。模型选择的本质是在二者之间寻找最优平衡点。
L1 正则化(Lasso)
\[ \mathcal{L}_{\text{L1}} = \mathcal{L}(\mathbf{w}) + \lambda |\mathbf{w}|1 = \mathcal{L}(\mathbf{w}) + \lambda \sum{j=1}^d |w_j| \]
L1 正则化倾向于产生稀疏解,自动将部分系数压缩为零,从而实现特征选择。
L2 正则化(Ridge)
\[ \mathcal{L}_{\text{L2}} = \mathcal{L}(\mathbf{w}) + \lambda |\mathbf{w}|2^2 = \mathcal{L}(\mathbf{w}) + \lambda \sum{j=1}^d w_j^2 \]
L2 正则化将所有系数缩小但不精确为零,对共线性特征的处理更稳定。
弹性网(Elastic Net)
\[ \mathcal{L}_{\text{EN}} = \mathcal{L}(\mathbf{w}) + \lambda_1 |\mathbf{w}|_1 + \lambda_2 |\mathbf{w}|_2^2 \]
兼具 L1 的稀疏性和 L2 的分组效应。
其他正则化手段
- 早停(Early Stopping):在验证误差开始上升时终止训练
- Dropout:训练时随机屏蔽部分神经元
- 数据增强:通过变换扩充训练集
- Bagging:通过集成降低模型方差
正则化参数 \( \lambda \) 通常在对数尺度 \( {10^{-4}, 10^{-3}, \ldots, 10^{3}} \) 上通过交叉验证选择。
主要方法概览
本节介绍四类在数学建模竞赛和实际应用中最为常用的分类方法:支持向量机、决策树、随机森林和集成学习。
支持向量机(SVM)
线性与软间隔 SVM
支持向量机寻找最大间隔超平面来分离两类数据。引入松弛变量 \( \xi_i \) 后的软间隔形式为:
\[ \min_{\mathbf{w}, b, \boldsymbol{\xi}} \frac{1}{2} |\mathbf{w}|^2 + C \sum_{i=1}^n \xi_i \quad \text{s.t.} \quad y_i(\mathbf{w}^T \mathbf{x}_i + b) \geq 1 - \xi_i, ; \xi_i \geq 0 \]
参数 \( C > 0 \) 控制对误分类的惩罚程度。几何间隔为 \( \frac{2}{|\mathbf{w}|} \)。
核方法
通过核函数 \( K(\mathbf{x}_i, \mathbf{x}_j) = \langle \phi(\mathbf{x}_i), \phi(\mathbf{x}_j) \rangle \) 实现隐式高维映射。常用核函数:
- 多项式核:\( K(\mathbf{x}, \mathbf{z}) = (\mathbf{x}^T \mathbf{z} + c)^d \)
- RBF 核:\( K(\mathbf{x}, \mathbf{z}) = \exp\left(-\frac{|\mathbf{x} - \mathbf{z}|^2}{2\sigma^2}\right) \)
对偶问题为:
\[ \max_{\boldsymbol{\alpha}} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j K(\mathbf{x}_i, \mathbf{x}_j) \quad \text{s.t.} \quad 0 \leq \alpha_i \leq C, ; \sum_i \alpha_i y_i = 0 \]
SVM 在高维小样本场景表现优异,但大规模数据训练效率低(\( O(n^2) \) 至 \( O(n^3) \)),且对参数选择敏感。
决策树
划分准则
决策树通过递归选择最优特征和切分点来划分特征空间。常用准则:
信息增益:
\[ \text{Gain}(S, A) = H(S) - \sum_{v \in \text{Values}(A)} \frac{|S_v|}{|S|} H(S_v), \quad H(S) = -\sum_{k=1}^K p_k \log_2 p_k \]
基尼指数:
\[ \text{Gini}(S) = 1 - \sum_{k=1}^K p_k^2 \]
剪枝策略
- 预剪枝:限制树深度、最小样本数等条件提前停止
- 后剪枝:先生长完整树,再自底向上剪除不显著子树
CART 代价复杂度剪枝优化目标为:
\[ C_\alpha(T) = \sum_{t \in \text{leaves}(T)} N_t H_t(T) + \alpha |T| \]
决策树可解释性强、无需特征标准化,但容易过拟合且对数据变化敏感。
随机森林
随机森林(Breiman, 2001)通过构建大量决策树并聚合预测来提升性能:
- Bagging:每棵树在 Bootstrap 子集上训练
- 随机子空间:每次分裂仅考虑随机选取的 \( m = \lfloor \sqrt{d} \rfloor \) 个特征
最终通过多数投票确定分类:
\[ \hat{y} = \text{mode}{h_1(\mathbf{x}), h_2(\mathbf{x}), \ldots, h_B(\mathbf{x})} \]
泛化误差上界为:
\[ PE^* \leq \frac{\bar{\rho}(1 - s^2)}{s^2} \]
其中 \( \bar{\rho} \) 为树间预测的平均相关性,\( s \) 为单棵树的平均强度。
袋外估计与特征重要性
每棵树仅使用约 63.2% 样本训练,剩余袋外样本(OOB)可用于性能评估,无需单独划分验证集。特征重要性可通过平均不纯度下降或置换重要性度量。
随机森林泛化能力强、不易过拟合、支持并行计算,但可解释性不如单棵决策树。
集成学习
Boosting 方法
AdaBoost 迭代调整样本权重,使后续学习器关注错分样本。学习器权重为:
\[ \alpha_t = \frac{1}{2} \ln \frac{1 - \epsilon_t}{\epsilon_t} \]
最终分类器为加权投票:
\[ H(\mathbf{x}) = \text{sign}\left(\sum_{t=1}^T \alpha_t h_t(\mathbf{x})\right) \]
梯度提升决策树(GBDT) 将 Boosting 推广到任意可微损失函数,每步拟合负梯度:
\[ F_m(\mathbf{x}) = F_{m-1}(\mathbf{x}) + \eta \cdot h_m(\mathbf{x}), \quad r_{im} = -\frac{\partial L(y_i, F(\mathbf{x}i))}{\partial F(\mathbf{x}i)}\bigg|{F=F{m-1}} \]
XGBoost 与 LightGBM
XGBoost 引入正则化目标函数 \( \mathcal{L} = \sum_i L(y_i, \hat{y}_i) + \sum_t (\gamma T + \frac{1}{2}\lambda |\mathbf{w}|^2) \),并使用二阶泰勒展开近似。LightGBM 通过基于梯度的单边采样(GOSS)和互斥特征绑定(EFB)提升大规模数据的训练效率。
Stacking
Stacking 使用元学习器组合异质基学习器:第一层训练多个基分类器,第二层将其输出作为特征训练元分类器。为避免过拟合,第一层输出通过交叉验证产生。
集成学习显著提升预测性能,在竞赛中广泛胜出,但模型复杂度高、可解释性下降。
应用领域
现代分类方法在众多领域中发挥着关键作用,从传统的模式识别到新兴的人工智能应用。
医学诊断
- 疾病筛查:基于影像特征(CT/MRI)判断肿瘤良恶性
- 基因表达分析:利用高维基因芯片数据进行癌症亚型分类
- 心电图分析:识别心律失常类型
在医学场景中,召回率通常比精确率更重要(避免漏诊),需要根据临床代价调整分类阈值。
金融风控
- 信用评分:预测借款人违约概率
- 反欺诈检测:识别异常交易模式
- 客户流失预警:预测客户离开的可能性
金融场景类别极度不平衡,需要采用过采样(SMOTE)、欠采样或代价敏感学习等策略。
自然语言处理
- 情感分析:判断文本的情感倾向
- 垃圾邮件过滤:区分正常邮件与垃圾邮件
- 文档分类:新闻话题分类、意图识别
文本分类需先进行特征提取(TF-IDF、词嵌入),再应用分类算法。
计算机视觉
- 图像分类:物体识别(如 ImageNet 挑战赛)
- 人脸识别:身份验证与识别
- 遥感图像分析:土地利用类型分类
数学建模竞赛
常见应用场景包括客户细分与画像、工业产品质量检测、环境监测与预警、交通流量模式识别等。
建模建议:先用简单模型(逻辑回归、决策树)建立基线,理解数据特征后再尝试集成方法。最终方案应平衡性能与可解释性。
方法选择指南
没有放之四海而皆准的分类器。根据数据特征和问题需求选择合适的方法是建模成功的关键。
| 因素 | 建议方法 |
|---|---|
| 样本量小、特征维度高 | SVM(RBF核)、正则化逻辑回归 |
| 样本量大、特征维度低 | 随机森林、GBDT |
| 需要可解释性 | 决策树、逻辑回归 |
| 追求最优性能 | XGBoost、LightGBM、Stacking |
| 类别不平衡 | 代价敏感学习、SMOTE + 集成 |
| 在线学习场景 | 逻辑回归、感知机 |
实践流程
- 数据探索:了解特征分布、类别比例、缺失情况
- 特征工程:编码、标准化、特征选择与构造
- 基线模型:逻辑回归或决策树建立基准
- 模型迭代:尝试多种方法,通过交叉验证比较
- 超参数调优:网格搜索或贝叶斯优化
- 模型集成:综合多个优秀模型的预测
- 结果解释:特征重要性分析、错误案例分析
小结
现代分类方法从统计判别分析发展到深度集成学习,核心思想始终围绕三个基本问题:如何表示决策边界、如何从有限数据中学习、如何保证在新数据上的泛化能力。
本章的关键要点:
- 分类问题的数学本质是学习从特征空间到标签空间的映射
- 模型评价需要结合具体问题选择合适的指标
- 交叉验证是估计泛化性能的标准工具
- 正则化是对抗过拟合的基本手段
- 集成学习通过“群体智慧“提升分类性能
- 方法选择应综合考虑数据规模、可解释性需求和计算资源