[模式识别-从入门到入土] 组合分类器

模式识别-从入门到入土 组合分类器

知乎:https://www.zhihu.com/people/byzh_rc

CSDN:https://blog.csdn.net/qq_54636039

注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码

参考文章:各方资料

文章目录

分类法的准确性评估

一、分类法准确率的评估方法

1. 留出法(Holdout)

  • 将数据集划分为两个相互独立的部分:训练集和测试集
  • 使用训练集训练模型,使用测试集评估分类准确率

2. k 折交叉验证(k-fold Cross Validation)

  • 将数据集划分为 k 个大小大致相等的子集(folds)
  • 每次使用其中 k−1 个子集作为训练集 ,1 个子集作为测试集
  • 重复 k 次,取平均性能作为最终评估结果
二、提高分类法准确率的基本思想
  • Arcing(Adaptive Reweighting and Combining,自适应加权与组合)
  • Bagging(Bootstrap Aggregating)
  • Boosting

核心思想: 通过组合多个分类器,降低单一模型的偏差或方差,从而提高整体预测性能

分类器组合评价

1.泛化误差(Generalization Error)

定义:学习到的模型在**新样本(未参与训练的数据)**上的预测误差

常见估计方法:

  • 留出法(Holdout)

    • 将数据集随机划分为两个互不重叠的部分
  • 交叉验证估计(Cross Validation)

    • 将数据集分成 k 个大小大致相等的子集(folds)
  • 自举法(Bootstrap)

    • 从原始数据集中有放回地随机抽样,生成若干重采样数据集
2.计算复杂度

分类器组合方法的总体复杂度可以看作以下三部分之和:

  • 产生一个新的分类器的计算复杂度
  • 更新一个分类器的计算复杂度
  • 将一个新样本进行分类的计算复杂度
3.其他评价标准
  • 鲁棒性
  • 稳定性
  • 可解释性
  • 大规模数据的可扩展性(可测量性)

采样方法 -> Bootstrap(自举法)

Bootstrap 是统计学上的一种估计方法, 属于一种非参数蒙特卡罗方法

  • 避免交叉验证导致的样本减少问题

    ->通过有放回重抽样构造训练集

  • 创造数据的随机性`

  • 当样本量很大时,任一样本被抽中的概率约为 0.632 0.632 0.632

集成学习方法

1.Bagging(Bootstrap Aggregating)

基本流程:

  • 从初始训练集中随机有放回地抽取 n 个样本,构成一个数据集
  • 构造 T 个 这样的数据集,分别训练得到 T 个分类器

结果融合方式:

  • 分类问题 → 投票
  • 回归问题 → 平均

特点:

  • 对不稳定的学习算法(如决策树)能提高预测的准确度
2.随机森林(Random Forest, RF)

基本思想:

  • 以决策树作为基本的弱分类器

训练方式:

  • 初始训练集随机取样本的 m 个特征 构成一个数据集
  • 构造 T 个 这样的数据集,训练得到 T 个分类器

结果融合方式:

  • 分类问题 → 投票
  • 回归问题 → 平均
3.Boosting

核心思想:

  • 为每个样本赋予一个权重
  • 进行 T 次迭代
  • 每次迭代后对分类错误的样本加大权重(更加关注)

结果融合方式:

  • 分类问题 → 投票
  • 回归问题 → 平均
4.AdaBoost(Adaptive Boosting)

AdaBoost 是 Boosting 的一种具体实现方式

1. 初始化训练集的权重 D 1 D_1 D1
D 1 = ( W 1 , 1 , ... , W 1 , i , ... , W 1 , m ) , W 1 , i = 1 m , i = 1 , 2 , ... , m D_1 = (W_{1,1}, \ldots, W_{1,i}, \ldots, W_{1,m}), \quad W_{1,i} = \frac{1}{m}, \ i=1,2,\ldots,m D1=(W1,1,...,W1,i,...,W1,m),W1,i=m1, i=1,2,...,m

2. 使用 D t D_t Dt 训练,得到基分类器 G t ( x ) G_t(x) Gt(x)

3. 计算 G t ( x ) G_t(x) Gt(x) 在训练集上的分类错误率
e t = P ( G t ( x i ) ≠ y i ) = ∑ i = 1 m w t i I ( G t ( x i ) ≠ y i ) e_t = P(G_t(x_i) \neq y_i) = \sum_{i=1}^{m} w_{ti} I(G_t(x_i) \neq y_i) et=P(Gt(xi)=yi)=i=1∑mwtiI(Gt(xi)=yi)

4. 更新训练集的权重 D t + 1 D_{t+1} Dt+1
W t + 1 , i = W t , i Z t exp ⁡ ( − α t y i G t ( x i ) ) , i = 1 , 2 , ... , m W_{t+1,i} = \frac{W_{t,i}}{Z_t} \exp(-\alpha_t y_i G_t(x_i)), \quad i=1,2,\ldots,m Wt+1,i=ZtWt,iexp(−αtyiGt(xi)),i=1,2,...,m

其中规范化因子为
Z t = ∑ i = 1 m W t , i exp ⁡ ( − α t y i G t ( x i ) ) Z_t = \sum_{i=1}^{m} W_{t,i} \exp(-\alpha_t y_i G_t(x_i)) Zt=i=1∑mWt,iexp(−αtyiGt(xi))

5. 强分类器构建

基本分类器:
f ( x ) = ∑ t = 1 T α t G t ( x ) f(x) = \sum_{t=1}^{T} \alpha_t G_t(x) f(x)=t=1∑TαtGt(x)

最终分类器:
G ( x ) = sign ⁡ ( f ( x ) ) = sign ⁡ ( ∑ t = 1 T α t G t ( x ) ) G(x) = \operatorname{sign}(f(x)) = \operatorname{sign}\left(\sum_{t=1}^{T} \alpha_t G_t(x)\right) G(x)=sign(f(x))=sign(t=1∑TαtGt(x))

5.XGBoost(eXtreme Gradient Boosting)

基本思想:

  • 对多个回归树进行集成
  • 使树群的预测值尽可能接近真实值且具有泛化能力
  • 能够对单个弱分类器进行优化

训练过程说明:

  • 使用训练集训练第一棵树

    • 以标签作为预测目标
    • 得到预测值,与真实值相减得到残差
  • 训练第二棵树

    • 以残差作为新的学习目标
  • 不断迭代,后续树持续学习前面模型尚未拟合好的部分

模型组合形式:

两棵树时:
y ^ = f 1 ( x ) + η f 2 ( x ) \hat{y} = f_1(x) + \eta f_2(x) y^=f1(x)+ηf2(x)

三棵树时:
y ^ = f 1 ( x ) + η f 2 ( x ) + η f 3 ( x ) \hat{y} = f_1(x) + \eta f_2(x) + \eta f_3(x) y^=f1(x)+ηf2(x)+ηf3(x)

其中 η \eta η 为学习率

对比说明:

  • XGBoost 是串行组合决策树
  • 随机森林 是并行组合决策树
6.Stacking 方法

基本思想:

  • 一种分层模型

流程:

  • 多个底层分类器分别输出预测结果
  • 将这些预测结果作为新的输入特征
  • 使用真实标签作为输出,训练高层分类器

Bagging 与 Boosting 的对比

训练集方面:

  • Bagging:随机选择样本,各轮训练集相互独立
  • Boosting:各轮训练集并不独立,与前一轮学习结果相关

预测函数方面:

  • Bagging:分类器无权重,可以并行生成
  • Boosting:分类器有权重,只能顺序生成

性能结论:

  • 在大多数数据集中,Boosting 的准确性高于 Bagging
  • 在部分数据集中,Boosting 可能产生退化
    • 原因是过拟合(学习到了噪声)
Bagging Boosting
构造训练集 随机选择样本 根据前一轮调整本轮样本权重
训练集关系 各轮训练集相互独立 各轮训练集并不独立
样本权重 各样本权重相同 对分类错误样本赋予更大权重
分类器权重 各分类器无权重 各分类器有权重
生成方式 可并行生成 只能顺序生成
适用学习器 不稳定学习算法(如决策树) 弱学习器
潜在问题 提升有限 可能发生过拟合(学习到噪声)
相关推荐
leobertlan39 分钟前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
镜象科技40 分钟前
职业院校AI心理健康解决方案怎么选?三个特殊场景与三类路线
人工智能
蛋蛋的就会顺顺的1 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
Leo.yuan1 小时前
企业Data Agent架构选型:帆软Dora基于NL2BI的现有BI体系复用方案
大数据·人工智能
朱涛的自习室1 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
米小虾1 小时前
上下文:Agent 的眼睛里到底装着什么
人工智能·agent
米小虾1 小时前
Agent = 大脑 + 眼睛 + 手脚:一篇看懂现代 AI Agent 的骨架
人工智能
小小测试开发2 小时前
安全评测得分 0.9556 掉到 0.3257,只改了 top_k 和 prompt_style 之外的题面比例
人工智能·安全·prompt
开发小能手1232 小时前
答案daanC语言
数据结构·算法
slacker-kian2 小时前
[实践]-用LLM对文本结构化:把多段文本描述变成规范的 JSON 知识库
人工智能·llm·prompt·结构化·pydantic·one-shot 提示