Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

现代分类方法概述

分类问题是模式识别与机器学习的核心任务之一。从经典的统计判别分析到当代的集成学习分类器,分类方法经历了数十年的演进。本章系统梳理现代分类方法的理论框架、评价体系与主要算法,为数学建模中的分类问题提供方法论指引。


从统计判别到机器学习

分类方法的发展脉络体现了统计学与计算机科学的深度融合,从参数化的概率模型逐步走向数据驱动的非参数学习。

经典统计判别分析

统计判别分析起源于 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)通过构建大量决策树并聚合预测来提升性能:

  1. Bagging:每棵树在 Bootstrap 子集上训练
  2. 随机子空间:每次分裂仅考虑随机选取的 \( 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 + 集成
在线学习场景逻辑回归、感知机

实践流程

  1. 数据探索:了解特征分布、类别比例、缺失情况
  2. 特征工程:编码、标准化、特征选择与构造
  3. 基线模型:逻辑回归或决策树建立基准
  4. 模型迭代:尝试多种方法,通过交叉验证比较
  5. 超参数调优:网格搜索或贝叶斯优化
  6. 模型集成:综合多个优秀模型的预测
  7. 结果解释:特征重要性分析、错误案例分析

小结

现代分类方法从统计判别分析发展到深度集成学习,核心思想始终围绕三个基本问题:如何表示决策边界、如何从有限数据中学习、如何保证在新数据上的泛化能力。

本章的关键要点:

  1. 分类问题的数学本质是学习从特征空间到标签空间的映射
  2. 模型评价需要结合具体问题选择合适的指标
  3. 交叉验证是估计泛化性能的标准工具
  4. 正则化是对抗过拟合的基本手段
  5. 集成学习通过“群体智慧“提升分类性能
  6. 方法选择应综合考虑数据规模、可解释性需求和计算资源