【模式识别与机器学习(8)】主要算法与技术(下篇:高级模型与集成方法)之 元学习

文章目录

元学习(Meta Learning)

一、考试范围知识框架

  • 元学习原理
  • 装袋法(Bagging)
  • 提升法(Boosting)
  • 随机森林(Random Forest)
  • 堆栈法(Stacking)

二、正文内容

1. 元学习原理

关键词:元学习、系综方法、多分类器融合、组合学习、分类器集成、基学习器

什么是元学习?

元学习(Meta Learning),也称为系综方法多分类器融合组合学习分类器集成 (Ensemble),是一种通过组合多个学习器来提高整体性能的方法。

核心思想不存在一种完美的学习方案

通俗理解:就像"三个臭皮匠,顶个诸葛亮",多个学习器组合起来,往往比单个学习器效果更好,不同的学习器可能在不同方面有优势,组合可以互补。

重要区别不是 简单地将数据集在多个不同分类器上重复训练,而是揭示怎样才能更好地组合多个不同的学习器(基学习器)。

多重解释原理

元学习遵循**"多重解释原理"**:

原理:当有多个理论与观测一致(符合)时,应把他们都保留下来。

含义:如果多个不同的模型都能很好地解释数据,不要只选择一个,而是保留多个,通过组合这些模型,可以得到更好的结果。

例子

假设有三个医生诊断同一个病人:

  • 医生A(决策树):诊断结果为"感冒",置信度80%
  • 医生B(神经网络):诊断结果为"感冒",置信度75%
  • 医生C(SVM):诊断结果为"过敏",置信度70%

虽然医生C的诊断不同,但他的判断也有参考价值。通过组合三个医生的意见,可能得到更准确的诊断。

基学习器的差异性

关键原则基学习器差异性(diversity)越大,最终组合学习器的学习效果越好

为什么需要差异性?

如果所有基学习器都相同:它们会犯相同的错误;组合起来不会改善性能;就像多个相同的人投票,结果和一个人一样。

如果基学习器有差异性:它们可能在不同样本上犯错;一个学习器的错误可能被其他学习器纠正;就像多个不同专长的人合作,可以互补。

如何增加差异性?

  1. 使用不同的算法:决策树、神经网络、SVM等
  2. 使用不同的训练数据:Bagging(有放回采样)
  3. 使用不同的特征:Random Forest(随机选择特征)
  4. 使用不同的参数:不同的学习率、不同的网络结构等

例子

场景1:低差异性

  • 基学习器1:决策树(深度=5)
  • 基学习器2:决策树(深度=5)
  • 基学习器3:决策树(深度=5)
  • 结果:三个模型几乎相同,组合效果差

场景2:高差异性

  • 基学习器1:决策树
  • 基学习器2:神经网络
  • 基学习器3:SVM
  • 结果:三个模型不同,组合效果好
元学习的优势

1. 提高准确性:多个学习器投票,减少错误,通常比单个最好的学习器效果更好。

2. 提高鲁棒性:即使某个学习器出错,其他学习器可以纠正,对噪声和异常值更鲁棒。

3. 降低过拟合风险:单个学习器可能过拟合,多个学习器平均,减少过拟合。

4. 处理复杂问题:不同学习器可能擅长问题的不同方面,组合可以发挥各自优势。

实际应用:图像识别竞赛(如ImageNet);推荐系统;金融风控;医疗诊断。

2. 装袋法(Bagging)

关键词:装袋法、叠加归纳法、有放回采样、相同权值、投票

什么是Bagging?

Bagging(Bootstrap Aggregating,装袋法),也称为叠加归纳法,由Breiman在1996年提出。

核心思想 :通过有放回采样 生成多个不同的训练集,训练多个基学习器,然后投票决定最终结果。

名字来源Bootstrap 是有放回采样,Aggregating是聚合(投票)。

Bagging的模型生成过程

算法步骤

令 n n n 为训练数据的实例数量。

对于 t t t 次循环中的每一次:

  1. 采样 :从训练数据中有放回地采样 n n n 个实例

    • 有放回:同一个样本可能被选中多次
    • 每个样本被选中的概率相同
    • 每个训练集大约包含63.2%的原始样本(其余是重复的)
  2. 训练:将学习算法应用于所采样本,训练一个基学习器

  3. 保存:保存结果模型

例子

假设原始训练集有1000个样本,要训练5个基学习器:

  • 训练集1:从1000个样本中有放回采样1000个(可能包含重复)
  • 训练集2:从1000个样本中有放回采样1000个(与训练集1不同)
  • 训练集3:从1000个样本中有放回采样1000个(与前两个不同)
  • 训练集4:从1000个样本中有放回采样1000个
  • 训练集5:从1000个样本中有放回采样1000个

每个训练集训练一个基学习器(如决策树),得到5个模型。

Bagging的分类过程

对于待分类的实例:

  1. 预测 :对于 t t t 个模型中的每一个,使用模型对实例进行类预测
  2. 投票 :返回被预测次数最多的类(多数投票

例子

假设有5个基学习器,对某个样本的预测:

  • 模型1:预测为"猫"
  • 模型2:预测为"猫"
  • 模型3:预测为"狗"
  • 模型4:预测为"猫"
  • 模型5:预测为"猫"

投票结果:"猫"出现4次,"狗"出现1次 → 最终预测为"猫"

Bagging的特点

1. 实例扰动 :Bagging通过对实例进行扰动来增加差异性:每个基学习器使用不同的训练集;训练集通过有放回采样生成;不同训练集包含不同的样本组合。

2. 相同权值 :所有基学习器模型都有相同的权值;每个模型的投票权重相等;简单多数投票。

3. 并行训练 :基学习器可以并行训练(互不依赖);训练速度快;适合大规模数据。

Bagging的优势

1. 减少方差:单个学习器可能对训练数据敏感(方差大);多个学习器平均,减少方差;提高泛化能力。

2. 降低过拟合:每个基学习器只看到部分数据,组合后减少过拟合风险。

3. 简单有效:算法简单,易于实现;通常能提高性能;不需要修改基学习器算法。

Bagging的适用场景

适合:基学习器容易过拟合(如决策树);训练数据充足;需要并行训练。

不适合:基学习器已经很稳定(如kNN);训练数据很少;基学习器训练很慢(因为要训练多个)。

实际应用随机森林(Bagging + 决策树 + 特征随机选择);图像分类;推荐系统。

3. 提升法(Boosting)

关键词:提升法、级联归纳法、AdaBoost、权重调整、困难样本

什么是Boosting?

Boosting(提升法),也称为级联归纳法,由Freund在1996年提出。

核心思想顺序训练 多个基学习器,每个学习器重点关注之前学习器分错的样本

与Bagging的区别Bagging 并行训练,所有基学习器权重相同;Boosting顺序训练,根据学习效果赋予不同权重。

形象比喻Bagging 多个专家同时独立工作,然后投票;Boosting一个专家先工作,下一个专家重点关注前一个专家做错的地方,依此类推。

Boosting的模型生成过程

算法步骤

1. 初始化 :赋予每个训练实例相同的权值 w i = 1 / n w_i = 1/n wi=1/n( n n n 是样本数)

2. 对于 t t t 次循环中的每一次

a. 训练基学习器 :将学习算法应用于加了权的数据集上;样本权重影响学习过程(权重大的样本更重要);保存结果模型。

b. 计算误差 :计算模型在加了权的数据集上的误差 e t e_t et;保存这个误差。

c. 检查终止条件 :如果 e t = 0 e_t = 0 et=0(完美分类)或 e t ≥ 0.5 e_t \geq 0.5 et≥0.5(比随机猜测还差),终止建模型。

d. 更新样本权重:对于数据集中的每个实例:

  • 如果模型将实例正确分类 :将实例的权值乘以 e t / ( 1 − e t ) e_t/(1-e_t) et/(1−et)(权重减小)
  • 如果模型将实例错误分类:权重不变(相对增大)
  • 归一化:将所有实例的权值进行归一化,使得权重和为1

关键理解 :被正确分类的样本权重减小 (下次不那么重要);被错误分类的样本权重相对增大(下次更重要);下一个学习器会重点关注这些"困难样本"。

Boosting的分类过程

对于待分类的实例:

1. 初始化:赋予所有类权值为0

2. 加权投票 :对于 t t t(或小于 t t t)个模型中的每一个:给模型所预测的类加权 − log ⁡ ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t)) −log(et/(1−et));误差越小,权重越大(负号表示误差小→权重大的正相关)。

3. 返回结果:返回权值最高的类

权重计算 :误差 e t e_t et 越小 → − log ⁡ ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t)) −log(et/(1−et)) 越大;表现好的模型权重更大;表现差的模型权重更小。

Boosting的特点

1. 实例扰动 :Boosting通过对实例进行扰动 来增加差异性:不是通过采样,而是通过调整样本权重 ;对难以学习的实例增加权值;每个学习器关注不同的样本。

2. 顺序训练 :基学习器顺序训练(一个接一个);后面的学习器依赖前面的学习器;不能并行训练。

3. 不同权值 :根据基学习器学习效果赋予它们不同权值;表现好的模型权重更大;表现差的模型权重更小。

4. 利用不稳定性 :利用学习算法内在的不稳定性;实现学习模型互补;每个学习器可能在不同样本上犯错。

Boosting的优势

1. 重点关注困难样本:自动识别难以分类的样本;后续学习器专门处理这些样本;逐步提高整体性能。

2. 降低偏差:单个学习器可能有偏差(欠拟合);多个学习器组合,减少偏差;提高模型复杂度。

3. 通常效果很好:在很多问题上表现优异;如AdaBoost在多个数据集上取得好成绩。

Boosting的缺点

1. 对噪声敏感:如果数据有噪声,可能过度关注噪声样本,容易过拟合。

2. 顺序训练:不能并行训练,训练时间较长。

3. 需要弱学习器:要求基学习器是"弱学习器"(略好于随机猜测);如果基学习器太强,可能无法提升。

AdaBoost

AdaBoost(Adaptive Boosting)是最著名的Boosting算法:自适应地调整样本权重;根据误差自适应地调整模型权重;在很多问题上表现优异。

实际应用:人脸检测;文本分类;图像识别。

4. 随机森林(Random Forest)

关键词:随机森林、实例扰动、属性扰动、随机有放回采样、随机属性抽取

什么是随机森林?

随机森林(Random Forest)由Breiman在2001年提出,是Bagging + 决策树 + 特征随机选择的组合。

核心思想 :对实例和属性都进行扰动,训练多个决策树,然后投票。

名字来源Random 随机选择特征和样本;Forest多个决策树组成的"森林"。

随机森林的算法

训练过程

  1. 实例扰动 :多次随机有放回地采样构建训练集(与Bagging相同);每个训练集训练一个决策树。

  2. 属性扰动 :在构建每个决策树时,随机抽取属性(特征);不是使用所有特征,而是随机选择一部分特征;在每个节点分裂时,从随机选择的特征中选择最优特征。

  3. 训练决策树:每个训练集训练一个决策树;决策树可以完全生长(不剪枝)或限制深度。

  4. 投票 :所有基学习器模型都有相同的权值;多数投票决定最终结果。

双重随机性

随机森林通过双重随机性增加差异性:

1. 实例随机性(行随机):每个树使用不同的训练样本;通过有放回采样实现。

2. 属性随机性(列随机):每个树使用不同的特征子集;在每个节点分裂时随机选择特征。

例子

假设有1000个样本,100个特征:

  • 树1:训练样本从1000个样本中有放回采样1000个;特征选择在每个节点从100个特征中随机选择10个,从中选最优。
  • 树2:训练样本不同的1000个样本(有重复);特征选择在每个节点随机选择不同的10个特征。
  • 树3-N:类似...
随机森林的特点

1. 双重扰动实例扰动 增加样本多样性;属性扰动增加特征多样性;比单纯的Bagging差异性更大。

2. 相同权值:所有决策树权重相同;简单多数投票。

3. 并行训练:决策树可以并行训练;训练速度快。

4. 不需要剪枝:每个决策树可以完全生长;随机性已经提供了正则化效果;减少过拟合风险。

随机森林的优势

1. 性能优异:在很多问题上表现很好;通常比单个决策树好很多;比Bagging效果更好(因为有特征随机性)。

2. 处理高维数据:特征随机选择有助于处理高维数据;自动进行特征选择。

3. 评估特征重要性:可以评估每个特征的重要性;通过观察特征在树中的使用频率。

4. 处理缺失值:可以处理缺失值;不需要数据预处理。

5. 不易过拟合:双重随机性提供正则化;即使树完全生长也不容易过拟合。

随机森林的参数

主要参数树的数量 通常100-500;每次分裂考虑的特征数 通常 p \sqrt{p} p 或 log ⁡ 2 ( p ) \log_2(p) log2(p)( p p p 是总特征数);树的最大深度可以限制或不限制。

实际应用:分类问题;回归问题;特征选择;异常检测。

5. 堆栈法(Stacking)

关键词:堆栈法、组合不同类型基学习器、元学习器、堆栈变体

什么是Stacking?

堆栈法(Stacking)是一种高级的集成方法 ,使用一个元学习器来学习如何最好地组合基学习器的预测结果。

核心思想 :不是简单投票,而是学习如何组合;使用机器学习方法学习最优的组合方式。

Stacking的算法

两层结构

第一层:基学习器层 :训练多个不同类型的基学习器;如:决策树、神经网络、SVM等;每个基学习器对训练数据进行预测。

第二层:元学习器层 :使用基学习器的预测结果作为特征 ;训练一个元学习器(如逻辑回归);元学习器学习如何组合基学习器的预测。

训练过程

  1. 划分数据 :将训练数据分成 K K K 折(如5折交叉验证)

  2. 训练基学习器 :对每一折:用其他 K − 1 K-1 K−1 折训练基学习器;用这个基学习器预测当前折的样本。得到每个样本的基学习器预测结果。

  3. 训练元学习器:使用基学习器的预测结果作为特征;使用原始标签作为目标;训练元学习器。

预测过程

  1. 基学习器对新样本进行预测
  2. 将预测结果作为特征输入元学习器
  3. 元学习器输出最终预测
Stacking的特点

1. 组合不同类型基学习器 :可以使用不同类型的基学习器;如:决策树、神经网络、SVM、kNN等;发挥各自优势。

2. 学习组合方式 :不是简单投票;元学习器学习最优的组合权重;可以学习复杂的组合方式。

3. 需要更多数据:需要额外的数据训练元学习器;通常使用交叉验证避免过拟合。

Stacking的变体

StackingC:Stacking的一个变体,使用不同的元学习器,或使用不同的特征工程方法。

其他变体Blending 使用独立的验证集训练元学习器;Super Learner理论上最优的Stacking方法。

Stacking的优势

1. 性能通常最好:可以学习最优的组合方式;通常比简单投票效果好。

2. 灵活性高:可以使用任何类型的基学习器;可以使用任何类型的元学习器。

Stacking的缺点

1. 计算复杂:需要训练多个基学习器;需要训练元学习器;训练时间长。

2. 容易过拟合:如果基学习器过拟合,元学习器也可能过拟合;需要小心设计。

实际应用:机器学习竞赛(如Kaggle);需要最高性能的场景;有充足计算资源的情况。

相关推荐
haing20191 小时前
Bezier曲线曲率极值的计算方法
人工智能·算法·机器学习·曲率极值
大志若愚YYZ1 小时前
嵌入式Linux学习——Framebuffer 应用编程详解(理论知识)
学习
嵌入式小能手1 小时前
飞凌嵌入式ElfBoard-文件I/O的深入学习之阻塞I/O与非阻塞I/O
学习
歌_顿1 小时前
深度学习算法以及优化器复习
人工智能·算法
AI360labs_atyun1 小时前
学习教学AI指南,附4个提示词指令(Prompts)
人工智能·科技·学习·ai·chatgpt
Zero不爱吃饭2 小时前
位1的个数
算法
爱思德学术2 小时前
中国计算机学会(CCF)推荐学术会议-C(计算机体系结构/并行与分布计算/存储系统):CF 2026
人工智能·算法·硬件
大千AI助手2 小时前
正态分布:机器学习中的统计基石与高斯遗产
人工智能·机器学习·概率论·高斯分布·正态分布·概率分布·大千ai助手
FAREWELL000752 小时前
Lua学习记录(4) --- Lua中多文件调用 以及 关于位运算符的零碎知识点
开发语言·学习·lua