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

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

知乎: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
构造训练集 随机选择样本 根据前一轮调整本轮样本权重
训练集关系 各轮训练集相互独立 各轮训练集并不独立
样本权重 各样本权重相同 对分类错误样本赋予更大权重
分类器权重 各分类器无权重 各分类器有权重
生成方式 并行生成 只能顺序生成
适用学习器 不稳定学习算法(如决策树) 弱学习器
潜在问题 提升有限 可能发生过拟合(学习到噪声)
相关推荐
zhongerzixunshi2 小时前
以技术创新为翼 筑就发展新高度
大数据·人工智能·物联网
LJ97951112 小时前
媒体发布进入AI时代:如何用智能工具解放你的传播力?
大数据·人工智能
_爱明2 小时前
查看模型参数量
人工智能·pytorch·python
Deepoch2 小时前
模块化智能新纪元:Deepoc开发板如何重塑服务机器人产业生态
人工智能·机器人·具身模型·deepoc
. . . . .2 小时前
ComfyUi
人工智能
WZGL12302 小时前
从个体需求到整体守护,科技助力老人安全安心
大数据·人工智能·科技·安全·智能家居
智算菩萨2 小时前
【Python基础】AI的“重复学习”:循环语句(for, while)的奥秘
人工智能·python·学习
FserSuN2 小时前
AI产品:Google Code Wiki
人工智能
没有故事的Zhang同学2 小时前
04-📦数据结构与算法核心知识 | 动态数组:理论与实践的系统性研究
算法