【模式识别与机器学习(8)】主要算法与技术(下篇:高级模型与集成方法)之 元学习与集成方法:组合多个学习器来提高整体性能

「C++ 40 周年」主题征文大赛(有机会与C++之父现场交流!) 10w+人浏览 793人参与

本文内容一览(快速理解)

  1. 元学习是什么? 通过组合多个学习器来提高整体性能的方法,“三个臭皮匠顶个诸葛亮”,不同学习器在不同方面有优势,组合可以互补

  2. 为什么需要元学习? 不存在一种完美的学习方案,多个学习器组合往往比单个学习器效果更好,可以提高准确性、鲁棒性,降低过拟合风险

  3. 多重解释原理? 当有多个理论与观测一致时,应把他们都保留下来,通过组合这些模型可以得到更好的结果

  4. 基学习器差异性? 基学习器差异性越大,最终组合学习器的学习效果越好,如果都相同会犯相同错误,有差异性可以互补纠正错误

  5. Bagging的核心思想? 通过有放回采样生成多个不同的训练集,训练多个基学习器,然后投票决定最终结果,所有基学习器权重相同,可以并行训练

  6. Boosting的核心思想? 顺序训练多个基学习器,每个学习器重点关注之前学习器分错的样本,根据学习效果赋予不同权重,不能并行训练

  7. Bagging vs Boosting? Bagging并行训练权重相同,减少方差降低过拟合;Boosting顺序训练权重不同,重点关注困难样本降低偏差

  8. 随机森林是什么? Bagging + 决策树 + 特征随机选择,对实例和属性都进行扰动,双重随机性增加差异性,不需要剪枝

  9. Stacking的核心思想? 使用元学习器学习如何最好地组合基学习器的预测结果,不是简单投票而是学习组合方式,可以使用不同类型的基学习器

  10. 方法选择标准? 基学习器容易过拟合→Bagging;需要重点关注困难样本→Boosting;需要处理高维数据→随机森林;需要最高性能→Stacking

学习路线建议

初学者:理解元学习"组合多个学习器"的核心思想,掌握Bagging和Boosting的基本区别 | 进阶者:深入理解基学习器差异性的重要性、随机森林的双重随机性、Stacking的元学习器机制 | 考试复习:重点掌握元学习原理、Bagging和Boosting的区别、随机森林算法、Stacking的两层结构

总结口诀

  • 核心思想:组合多个学习器 → 提高整体性能 → “三个臭皮匠顶个诸葛亮”
  • 多重解释原理:多个理论一致 → 都保留 → 组合更好
  • 基学习器差异性:差异性越大 → 效果越好 → 互补纠正错误
  • Bagging:有放回采样 → 并行训练 → 权重相同 → 投票
  • Boosting:顺序训练 → 关注困难样本 → 权重不同 → 加权投票
  • 随机森林:Bagging + 决策树 + 特征随机 → 双重随机性 → 不需要剪枝
  • Stacking:基学习器层 + 元学习器层 → 学习组合方式 → 性能最好
  • 方法对比:Bagging(并行,权重相同)vs Boosting(顺序,权重不同)vs 随机森林(双重随机)vs Stacking(元学习)

一、考试范围知识框架

[!NOTE]
📝 关键点总结:考试重点围绕元学习原理、Bagging、Boosting、随机森林和Stacking的核心思想和区别,需要理解基学习器差异性的重要性、不同集成方法的特点和适用场景。

考查重点

  • 元学习原理:多重解释原理、基学习器差异性的重要性、如何增加差异性、元学习的优势
  • 装袋法(Bagging):有放回采样、模型生成过程、分类过程、特点(实例扰动、相同权值、并行训练)
  • 提升法(Boosting):顺序训练、权重调整机制、重点关注困难样本、与Bagging的区别
  • 随机森林(Random Forest):双重随机性(实例扰动和属性扰动)、算法流程、特点、优势
  • 堆栈法(Stacking):两层结构(基学习器层和元学习器层)、训练过程、特点、优势

可能考查的问题:元学习的核心思想、Bagging和Boosting的区别、随机森林的双重随机性、Stacking的元学习器机制、基学习器差异性的重要性

考试范围

  • 元学习原理

  • 装袋法(Bagging)

  • 提升法(Boosting)

  • 随机森林(Random Forest)

  • 堆栈法(Stacking)

 

二、元学习原理

[!NOTE]
📝 关键点总结:元学习通过组合多个学习器来提高整体性能,遵循多重解释原理,基学习器差异性越大效果越好,可以提高准确性、鲁棒性,降低过拟合风险。

核心思想

  • 定义:元学习(Meta Learning)也称为系综方法、多分类器融合、组合学习或分类器集成,通过组合多个学习器来提高整体性能
  • 核心观点:不存在一种完美的学习方案
  • 通俗理解:“三个臭皮匠,顶个诸葛亮”,多个学习器组合往往比单个学习器效果更好,不同学习器在不同方面有优势,组合可以互补
  • 重要区别:不是简单地将数据集在多个不同分类器上重复训练,而是揭示怎样才能更好地组合多个不同的学习器(基学习器)

多重解释原理

  • 原理:当有多个理论与观测一致(符合)时,应把他们都保留下来
  • 含义:如果多个不同的模型都能很好地解释数据,不要只选择一个,而是保留多个,通过组合这些模型可以得到更好的结果
  • 例子:三个医生诊断同一个病人,虽然诊断可能不同,但通过组合三个医生的意见可能得到更准确的诊断

基学习器的差异性

  • 关键原则:基学习器差异性(diversity)越大,最终组合学习器的学习效果越好
  • 为什么需要差异性:如果所有基学习器都相同,它们会犯相同的错误,组合起来不会改善性能;如果基学习器有差异性,它们可能在不同样本上犯错,一个学习器的错误可能被其他学习器纠正
  • 如何增加差异性:使用不同的算法(决策树、神经网络、SVM等)、使用不同的训练数据(Bagging有放回采样)、使用不同的特征(Random Forest随机选择特征)、使用不同的参数(不同的学习率、不同的网络结构等)

元学习的优势

  • 提高准确性:多个学习器投票减少错误,通常比单个最好的学习器效果更好
  • 提高鲁棒性:即使某个学习器出错,其他学习器可以纠正,对噪声和异常值更鲁棒
  • 降低过拟合风险:单个学习器可能过拟合,多个学习器平均减少过拟合
  • 处理复杂问题:不同学习器可能擅长问题的不同方面,组合可以发挥各自优势

决策标准:基学习器差异性大 → 组合效果更好;使用不同算法/数据/特征/参数 → 增加差异性

2.1 什么是元学习?

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

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

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

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

 

2.2 多重解释原理

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

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

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

例子

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

  • 医生A(决策树):诊断结果为"感冒",置信度80%

  • 医生B(神经网络):诊断结果为"感冒",置信度75%

  • 医生C(SVM):诊断结果为"过敏",置信度70%

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

 

2.3 基学习器的差异性

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

为什么需要差异性?

如果所有基学习器都相同:

  • 它们会犯相同的错误

  • 组合起来不会改善性能

  • 就像多个相同的人投票,结果和一个人一样

如果基学习器有差异性:

  • 它们可能在不同样本上犯错

  • 一个学习器的错误可能被其他学习器纠正

  • 就像多个不同专长的人合作,可以互补

如何增加差异性?

  1. 使用不同的算法:决策树、神经网络、SVM等

  2. 使用不同的训练数据:Bagging(有放回采样)

  3. 使用不同的特征:Random Forest(随机选择特征)

  4. 使用不同的参数:不同的学习率、不同的网络结构等

例子

场景1:低差异性

  • 基学习器1:决策树(深度=5)

  • 基学习器2:决策树(深度=5)

  • 基学习器3:决策树(深度=5)

  • 结果:三个模型几乎相同,组合效果差

场景2:高差异性

  • 基学习器1:决策树

  • 基学习器2:神经网络

  • 基学习器3:SVM

  • 结果:三个模型不同,组合效果好

 

2.4 元学习的优势

1. 提高准确性

多个学习器投票,减少错误,通常比单个最好的学习器效果更好。

2. 提高鲁棒性

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

3. 降低过拟合风险

单个学习器可能过拟合,多个学习器平均,减少过拟合。

4. 处理复杂问题

不同学习器可能擅长问题的不同方面,组合可以发挥各自优势。

实际应用

  • 图像识别竞赛(如ImageNet)

  • 推荐系统

  • 金融风控

  • 医疗诊断

 

三、装袋法(Bagging)

[!NOTE]
📝 关键点总结:Bagging通过有放回采样生成多个不同的训练集,训练多个基学习器,然后投票决定最终结果,所有基学习器权重相同,可以并行训练,减少方差降低过拟合。

核心思想

  • 定义:Bagging(Bootstrap Aggregating,装袋法)也称为叠加归纳法,由Breiman在1996年提出
  • 核心思想:通过有放回采样生成多个不同的训练集,训练多个基学习器,然后投票决定最终结果
  • 名字来源:Bootstrap是有放回采样,Aggregating是聚合(投票)

模型生成过程

  • 算法步骤:对于 t t t次循环中的每一次,从训练数据中有放回地采样 n n n个实例(同一个样本可能被选中多次,每个样本被选中的概率相同,每个训练集大约包含63.2%的原始样本),将学习算法应用于所采样本训练一个基学习器,保存结果模型
  • 例子:原始训练集有1000个样本,要训练5个基学习器,每个训练集从1000个样本中有放回采样1000个(可能包含重复),每个训练集训练一个基学习器

分类过程

  • 步骤:对于 t t t个模型中的每一个,使用模型对实例进行类预测,返回被预测次数最多的类(多数投票)
  • 例子:5个基学习器对某个样本的预测,如果"猫"出现4次"狗"出现1次,最终预测为"猫"

特点

  • 实例扰动:Bagging通过对实例进行扰动来增加差异性,每个基学习器使用不同的训练集,训练集通过有放回采样生成,不同训练集包含不同的样本组合
  • 相同权值:所有基学习器模型都有相同的权值,每个模型的投票权重相等,简单多数投票
  • 并行训练:基学习器可以并行训练(互不依赖),训练速度快,适合大规模数据

优势

  • 减少方差:单个学习器可能对训练数据敏感(方差大),多个学习器平均减少方差,提高泛化能力
  • 降低过拟合:每个基学习器只看到部分数据,组合后减少过拟合风险
  • 简单有效:算法简单易于实现,通常能提高性能,不需要修改基学习器算法

适用场景

  • 适合:基学习器容易过拟合(如决策树)、训练数据充足、需要并行训练
  • 不适合:基学习器已经很稳定(如kNN)、训练数据很少、基学习器训练很慢(因为要训练多个)

决策标准:基学习器容易过拟合 → 使用Bagging;需要并行训练 → 使用Bagging;基学习器稳定 → 不适合Bagging

3.1 什么是Bagging?

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

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

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

 

3.2 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个模型。

 

3.3 Bagging的分类过程

对于待分类的实例:

  1. 预测:对于 t t t 个模型中的每一个,使用模型对实例进行类预测

  2. 投票:返回被预测次数最多的类(多数投票

例子

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

  • 模型1:预测为"猫"

  • 模型2:预测为"猫"

  • 模型3:预测为"狗"

  • 模型4:预测为"猫"

  • 模型5:预测为"猫"

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

 

3.4 Bagging的特点

1. 实例扰动

Bagging通过对实例进行扰动来增加差异性:

  • 每个基学习器使用不同的训练集

  • 训练集通过有放回采样生成

  • 不同训练集包含不同的样本组合

2. 相同权值

所有基学习器模型都有相同的权值

  • 每个模型的投票权重相等

  • 简单多数投票

3. 并行训练

基学习器可以并行训练(互不依赖):

  • 训练速度快

  • 适合大规模数据

 

3.5 Bagging的优势

1. 减少方差

  • 单个学习器可能对训练数据敏感(方差大)

  • 多个学习器平均,减少方差

  • 提高泛化能力

2. 降低过拟合

  • 每个基学习器只看到部分数据

  • 组合后减少过拟合风险

3. 简单有效

  • 算法简单,易于实现

  • 通常能提高性能

  • 不需要修改基学习器算法

 

3.6 Bagging的适用场景

适合

  • 基学习器容易过拟合(如决策树)

  • 训练数据充足

  • 需要并行训练

不适合

  • 基学习器已经很稳定(如kNN)

  • 训练数据很少

  • 基学习器训练很慢(因为要训练多个)

实际应用

  • 随机森林(Bagging + 决策树 + 特征随机选择)

  • 图像分类

  • 推荐系统

 

四、提升法(Boosting)

[!NOTE]
📝 关键点总结:Boosting顺序训练多个基学习器,每个学习器重点关注之前学习器分错的样本,根据学习效果赋予不同权重,不能并行训练,重点关注困难样本降低偏差。

核心思想

  • 定义:Boosting(提升法)也称为级联归纳法,由Freund在1996年提出
  • 核心思想:顺序训练多个基学习器,每个学习器重点关注之前学习器分错的样本
  • 与Bagging的区别:Bagging并行训练,所有基学习器权重相同;Boosting顺序训练,根据学习效果赋予不同权重
  • 形象比喻:Bagging多个专家同时独立工作然后投票;Boosting一个专家先工作,下一个专家重点关注前一个专家做错的地方,依此类推

模型生成过程

  1. 初始化:赋予每个训练实例相同的权值 w i = 1 / n w_i = 1/n wi=1/n n n n是样本数)
  2. 对于 t t t次循环中的每一次
    • 训练基学习器:将学习算法应用于加了权的数据集上,样本权重影响学习过程(权重大的样本更重要),保存结果模型
    • 计算误差:计算模型在加了权的数据集上的误差 e t e_t et,保存这个误差
    • 检查终止条件:如果 e t = 0 e_t = 0 et=0(完美分类)或 e t ≥ 0.5 e_t \geq 0.5 et0.5(比随机猜测还差),终止建模型
    • 更新样本权重:对于数据集中的每个实例,如果模型将实例正确分类则将实例的权值乘以 e t / ( 1 − e t ) e_t/(1-e_t) et/(1et)(权重减小),如果模型将实例错误分类则权重不变(相对增大),然后归一化所有实例的权值使得权重和为1
  • 关键理解:被正确分类的样本权重减小(下次不那么重要),被错误分类的样本权重相对增大(下次更重要),下一个学习器会重点关注这些"困难样本"

分类过程

  • 步骤:初始化所有类权值为0,对于 t t t个模型中的每一个,给模型所预测的类加权 − log ⁡ ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t)) log(et/(1et))(误差越小权重越大),返回权值最高的类
  • 权重计算:误差 e t e_t et越小 → − log ⁡ ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t)) log(et/(1et))越大,表现好的模型权重更大,表现差的模型权重更小

特点

  • 实例扰动:Boosting通过对实例进行扰动来增加差异性,不是通过采样而是通过调整样本权重,对难以学习的实例增加权值,每个学习器关注不同的样本
  • 顺序训练:基学习器顺序训练(一个接一个),后面的学习器依赖前面的学习器,不能并行训练
  • 不同权值:根据基学习器学习效果赋予它们不同权值,表现好的模型权重更大,表现差的模型权重更小
  • 利用不稳定性:利用学习算法内在的不稳定性,实现学习模型互补,每个学习器可能在不同样本上犯错

优势

  • 重点关注困难样本:自动识别难以分类的样本,后续学习器专门处理这些样本,逐步提高整体性能
  • 降低偏差:单个学习器可能有偏差(欠拟合),多个学习器组合减少偏差,提高模型复杂度
  • 通常效果很好:在很多问题上表现优异,如AdaBoost在多个数据集上取得好成绩

缺点

  • 对噪声敏感:如果数据有噪声,可能过度关注噪声样本,容易过拟合
  • 顺序训练:不能并行训练,训练时间较长
  • 需要弱学习器:要求基学习器是"弱学习器"(略好于随机猜测),如果基学习器太强可能无法提升

决策标准:需要重点关注困难样本 → 使用Boosting;需要降低偏差 → 使用Boosting;数据有噪声 → 谨慎使用Boosting

4.1 什么是Boosting?

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

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

与Bagging的区别

  • Bagging:并行训练,所有基学习器权重相同

  • Boosting:顺序训练,根据学习效果赋予不同权重

形象比喻

  • Bagging:多个专家同时独立工作,然后投票

  • Boosting:一个专家先工作,下一个专家重点关注前一个专家做错的地方,依此类推

 

4.2 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 et0.5(比随机猜测还差),终止建模型

d. 更新样本权重

对于数据集中的每个实例:

  • 如果模型将实例正确分类:将实例的权值乘以 e t / ( 1 − e t ) e_t/(1-e_t) et/(1et)(权重减小)

  • 如果模型将实例错误分类:权重不变(相对增大)

  • 归一化:将所有实例的权值进行归一化,使得权重和为1

关键理解

  • 被正确分类的样本权重减小(下次不那么重要)

  • 被错误分类的样本权重相对增大(下次更重要)

  • 下一个学习器会重点关注这些"困难样本"

 

4.3 Boosting的分类过程

对于待分类的实例:

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

2. 加权投票

对于 t t t(或小于 t t t)个模型中的每一个:

  • 给模型所预测的类加权 − log ⁡ ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t)) log(et/(1et))

  • 误差越小,权重越大(负号表示误差小→权重大的正相关)

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

权重计算

  • 误差 e t e_t et 越小 → − log ⁡ ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t)) log(et/(1et)) 越大

  • 表现好的模型权重更大

  • 表现差的模型权重更小

 

4.4 Boosting的特点

1. 实例扰动

Boosting通过对实例进行扰动来增加差异性:

  • 不是通过采样,而是通过调整样本权重

  • 难以学习的实例增加权值

  • 每个学习器关注不同的样本

2. 顺序训练

基学习器顺序训练(一个接一个):

  • 后面的学习器依赖前面的学习器

  • 不能并行训练

3. 不同权值

根据基学习器学习效果赋予它们不同权值

  • 表现好的模型权重更大

  • 表现差的模型权重更小

4. 利用不稳定性

利用学习算法内在的不稳定性

  • 实现学习模型互补

  • 每个学习器可能在不同样本上犯错

 

4.5 Boosting的优势

1. 重点关注困难样本

  • 自动识别难以分类的样本

  • 后续学习器专门处理这些样本

  • 逐步提高整体性能

2. 降低偏差

  • 单个学习器可能有偏差(欠拟合)

  • 多个学习器组合,减少偏差

  • 提高模型复杂度

3. 通常效果很好

  • 在很多问题上表现优异

  • 如AdaBoost在多个数据集上取得好成绩

 

4.6 Boosting的缺点

1. 对噪声敏感

如果数据有噪声,可能过度关注噪声样本,容易过拟合。

2. 顺序训练

不能并行训练,训练时间较长。

3. 需要弱学习器

要求基学习器是"弱学习器"(略好于随机猜测):

  • 如果基学习器太强,可能无法提升

 

4.7 AdaBoost

AdaBoost(Adaptive Boosting)是最著名的Boosting算法:

  • 自适应地调整样本权重

  • 根据误差自适应地调整模型权重

  • 在很多问题上表现优异

实际应用

  • 人脸检测

  • 文本分类

  • 图像识别

 

五、随机森林(Random Forest)

[!NOTE]
📝 关键点总结:随机森林是Bagging + 决策树 + 特征随机选择的组合,对实例和属性都进行扰动,双重随机性增加差异性,不需要剪枝,性能优异。

核心思想

  • 定义:随机森林(Random Forest)由Breiman在2001年提出,是Bagging + 决策树 + 特征随机选择的组合
  • 核心思想:对实例和属性都进行扰动,训练多个决策树,然后投票
  • 名字来源:Random随机选择特征和样本,Forest多个决策树组成的"森林"

算法流程

  1. 实例扰动:多次随机有放回地采样构建训练集(与Bagging相同),每个训练集训练一个决策树
  2. 属性扰动:在构建每个决策树时,随机抽取属性(特征),不是使用所有特征而是随机选择一部分特征,在每个节点分裂时从随机选择的特征中选择最优特征
  3. 训练决策树:每个训练集训练一个决策树,决策树可以完全生长(不剪枝)或限制深度
  4. 投票:所有基学习器模型都有相同的权值,多数投票决定最终结果

双重随机性

  • 实例随机性(行随机):每个树使用不同的训练样本,通过有放回采样实现
  • 属性随机性(列随机):每个树使用不同的特征子集,在每个节点分裂时随机选择特征
  • 例子:有1000个样本100个特征,树1训练样本从1000个样本中有放回采样1000个,特征选择在每个节点从100个特征中随机选择10个从中选最优

特点

  • 双重扰动:实例扰动增加样本多样性,属性扰动增加特征多样性,比单纯的Bagging差异性更大
  • 相同权值:所有决策树权重相同,简单多数投票
  • 并行训练:决策树可以并行训练,训练速度快
  • 不需要剪枝:每个决策树可以完全生长,随机性已经提供了正则化效果,减少过拟合风险

优势

  • 性能优异:在很多问题上表现很好,通常比单个决策树好很多,比Bagging效果更好(因为有特征随机性)
  • 处理高维数据:特征随机选择有助于处理高维数据,自动进行特征选择
  • 评估特征重要性:可以评估每个特征的重要性,通过观察特征在树中的使用频率
  • 处理缺失值:可以处理缺失值,不需要数据预处理
  • 不易过拟合:双重随机性提供正则化,即使树完全生长也不容易过拟合

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

决策标准:需要处理高维数据 → 使用随机森林;基学习器容易过拟合 → 使用随机森林;需要评估特征重要性 → 使用随机森林

5.1 什么是随机森林?

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

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

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

 

5.2 随机森林的算法

训练过程

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

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

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

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

 

5.3 双重随机性

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

1. 实例随机性(行随机):

  • 每个树使用不同的训练样本

  • 通过有放回采样实现

2. 属性随机性(列随机):

  • 每个树使用不同的特征子集

  • 在每个节点分裂时随机选择特征

例子

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

  • 树1:训练样本从1000个样本中有放回采样1000个;特征选择在每个节点从100个特征中随机选择10个,从中选最优。

  • 树2:训练样本不同的1000个样本(有重复);特征选择在每个节点随机选择不同的10个特征。

  • 树3-N:类似…

 

5.4 随机森林的特点

1. 双重扰动

  • 实例扰动:增加样本多样性

  • 属性扰动:增加特征多样性

  • 比单纯的Bagging差异性更大

2. 相同权值

  • 所有决策树权重相同

  • 简单多数投票

3. 并行训练

  • 决策树可以并行训练

  • 训练速度快

4. 不需要剪枝

  • 每个决策树可以完全生长

  • 随机性已经提供了正则化效果

  • 减少过拟合风险

 

5.5 随机森林的优势

1. 性能优异

  • 在很多问题上表现很好

  • 通常比单个决策树好很多

  • 比Bagging效果更好(因为有特征随机性)

2. 处理高维数据

  • 特征随机选择有助于处理高维数据

  • 自动进行特征选择

3. 评估特征重要性

  • 可以评估每个特征的重要性

  • 通过观察特征在树中的使用频率

4. 处理缺失值

  • 可以处理缺失值

  • 不需要数据预处理

5. 不易过拟合

  • 双重随机性提供正则化

  • 即使树完全生长也不容易过拟合

 

5.6 随机森林的参数

主要参数

  • 树的数量:通常100-500

  • 每次分裂考虑的特征数:通常 p \sqrt{p} p log ⁡ 2 ( p ) \log_2(p) log2(p) p p p 是总特征数)

  • 树的最大深度:可以限制或不限制

实际应用

  • 分类问题

  • 回归问题

  • 特征选择

  • 异常检测

 

六、堆栈法(Stacking)

[!NOTE]
📝 关键点总结:Stacking使用元学习器学习如何最好地组合基学习器的预测结果,不是简单投票而是学习组合方式,可以使用不同类型的基学习器,性能通常最好但计算复杂。

核心思想

  • 定义:堆栈法(Stacking)是一种高级的集成方法,使用一个元学习器来学习如何最好地组合基学习器的预测结果
  • 核心思想:不是简单投票,而是学习如何组合,使用机器学习方法学习最优的组合方式

两层结构

  • 第一层:基学习器层:训练多个不同类型的基学习器(如决策树、神经网络、SVM等),每个基学习器对训练数据进行预测
  • 第二层:元学习器层:使用基学习器的预测结果作为特征,训练一个元学习器(如逻辑回归),元学习器学习如何组合基学习器的预测

训练过程

  1. 划分数据:将训练数据分成 K K K折(如5折交叉验证)
  2. 训练基学习器:对每一折,用其他 K − 1 K-1 K1折训练基学习器,用这个基学习器预测当前折的样本,得到每个样本的基学习器预测结果
  3. 训练元学习器:使用基学习器的预测结果作为特征,使用原始标签作为目标,训练元学习器

预测过程

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

特点

  • 组合不同类型基学习器:可以使用不同类型的基学习器(如决策树、神经网络、SVM、kNN等),发挥各自优势
  • 学习组合方式:不是简单投票,元学习器学习最优的组合权重,可以学习复杂的组合方式
  • 需要更多数据:需要额外的数据训练元学习器,通常使用交叉验证避免过拟合

优势

  • 性能通常最好:可以学习最优的组合方式,通常比简单投票效果好
  • 灵活性高:可以使用任何类型的基学习器,可以使用任何类型的元学习器

缺点

  • 计算复杂:需要训练多个基学习器,需要训练元学习器,训练时间长
  • 容易过拟合:如果基学习器过拟合,元学习器也可能过拟合,需要小心设计

Stacking的变体

  • StackingC:Stacking的一个变体,使用不同的元学习器,或使用不同的特征工程方法
  • Blending:使用独立的验证集训练元学习器
  • Super Learner:理论上最优的Stacking方法

决策标准:需要最高性能 → 使用Stacking;有充足计算资源 → 使用Stacking;需要快速训练 → 不适合Stacking

6.1 什么是Stacking?

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

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

 

6.2 Stacking的算法

两层结构

第一层:基学习器层

  • 训练多个不同类型的基学习器

  • 如:决策树、神经网络、SVM等

  • 每个基学习器对训练数据进行预测

第二层:元学习器层

  • 使用基学习器的预测结果作为特征

  • 训练一个元学习器(如逻辑回归)

  • 元学习器学习如何组合基学习器的预测

训练过程

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

  2. 训练基学习器

    对每一折:

    • 用其他 K − 1 K-1 K1 折训练基学习器

    • 用这个基学习器预测当前折的样本

    得到每个样本的基学习器预测结果

  3. 训练元学习器

    • 使用基学习器的预测结果作为特征

    • 使用原始标签作为目标

    • 训练元学习器

预测过程

  1. 基学习器对新样本进行预测

  2. 将预测结果作为特征输入元学习器

  3. 元学习器输出最终预测

 

6.3 Stacking的特点

1. 组合不同类型基学习器

  • 可以使用不同类型的基学习器

  • 如:决策树、神经网络、SVM、kNN等

  • 发挥各自优势

2. 学习组合方式

  • 不是简单投票

  • 元学习器学习最优的组合权重

  • 可以学习复杂的组合方式

3. 需要更多数据

  • 需要额外的数据训练元学习器

  • 通常使用交叉验证避免过拟合

 

6.4 Stacking的变体

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

其他变体

  • Blending:使用独立的验证集训练元学习器

  • Super Learner:理论上最优的Stacking方法

 

6.5 Stacking的优势

1. 性能通常最好

  • 可以学习最优的组合方式

  • 通常比简单投票效果好

2. 灵活性高

  • 可以使用任何类型的基学习器

  • 可以使用任何类型的元学习器

 

6.6 Stacking的缺点

1. 计算复杂

  • 需要训练多个基学习器

  • 需要训练元学习器

  • 训练时间长

2. 容易过拟合

  • 如果基学习器过拟合,元学习器也可能过拟合

  • 需要小心设计

实际应用

  • 机器学习竞赛(如Kaggle)

  • 需要最高性能的场景

  • 有充足计算资源的情况

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值