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

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

知乎: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
构造训练集 随机选择样本 根据前一轮调整本轮样本权重
训练集关系 各轮训练集相互独立 各轮训练集并不独立
样本权重 各样本权重相同 对分类错误样本赋予更大权重
分类器权重 各分类器无权重 各分类器有权重
生成方式 并行生成 只能顺序生成
适用学习器 不稳定学习算法(如决策树) 弱学习器
潜在问题 提升有限 可能发生过拟合(学习到噪声)
相关推荐
不会打球的摄影师不是好程序员13 小时前
dify实战-个人知识库搭建
人工智能
Xの哲學13 小时前
Linux 软中断深度剖析: 从设计思想到实战调试
linux·网络·算法·架构·边缘计算
暴风游侠13 小时前
如何进行科学的分类
笔记·算法·分类
xixixi7777713 小时前
对 两种不同AI范式——Transformer 和 LSTM 进行解剖和对比
人工智能·深度学习·大模型·lstm·transformer·智能·前沿
lfPCB13 小时前
聚焦机器人算力散热:PCB液冷集成的工程化现实阻碍
人工智能·机器人
sunxunyong13 小时前
CC-Ralph实测
人工智能·自然语言处理
IT_陈寒13 小时前
Vite 5分钟性能优化实战:从3秒到300ms的冷启动提速技巧(附可复用配置)
前端·人工智能·后端
十六年开源服务商13 小时前
WordPress集成GoogleAnalytics最佳实践指南
前端·人工智能·机器学习
市象13 小时前
石头把科技摔掉了
人工智能
子午13 小时前
【2026原创】水稻植物病害识别系统~Python+深度学习+人工智能+resnet50算法+TensorFlow+图像识别
人工智能·python·深度学习