【模式识别与机器学习(8)】重要算法与技术(下篇:高级模型与集成方法)之 元学习与集成方法:组合多个学习器来提高整体性能
本文内容一览(飞快理解)
什么?就是元学习通过组合多个学习器来提高整体性能的途径,“三个臭皮匠顶个诸葛亮”,不同学习器在不同方面有优势,组合可能互补
为什么必须元学习?通过不存在一种完美的学习方案,多个学习器组合往往比单个学习器效果更好,能够提高准确性、鲁棒性,降低过拟合风险
多重解释原理?当有多个理论与观测一致时,应把他们都保留下来,通过组合这些模型可以得到更好的结果
基学习器差异性?基学习器差异性越大,最终组合学习器的学习效果越好,要是都相同会犯相同错误,有差异性可以互补纠正错误
Bagging的核心思想?通过有放回采样生成多个不同的训练集,训练多个基学习器,然后投票决定最终结果,所有基学习器权重相同,可以并行训练
Boosting的核心思想?顺序训练多个基学习器,每个学习器重点关注之前学习器分错的样本,根据学习效果赋予不同权重,不能并行训练
Bagging vs Boosting?Bagging并行训练权重相同,减少方差降低过拟合;Boosting顺序训练权重不同,重点关注困难样本降低偏差
什么?就是随机森林Bagging + 决策树 + 特征随机选择,对实例和属性都进行扰动,双重随机性增加差异性,不需要剪枝
Stacking的核心思想?使用元学习器学习如何最好地组合基学习器的预测结果,不是简单投票而是学习组合方式,可以使用不同类型的基学习器
方法选择标准?基学习器容易过拟合→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)越大,最终组合学习器的学习效果越好。
为什么应该差异性?
如果所有基学习器都相同:
它们会犯相同的错误
组合起来不会改善性能
就像多个相同的人投票,结果和一个人一样
倘若基学习器有差异性:
它们可能在不同样本上犯错
一个学习器的错误可能被其他学习器纠正
就像多个不同专长的人合作,可以互补
如何增加差异性?
使用不同的算法:决策树、神经网络、SVM等
使用不同的训练数据:Bagging(有放回采样)
利用不同的特征:Random Forest(随机选择特征)
运用不同的参数:不同的学习率、不同的网络结构等
例子:
场景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 tt次循环中的每一次,从训练资料中有放回地采样n nn个实例(同一个样本可能被选中多次,每个样本被选中的概率相同,每个训练集大约包含63.2%的原始样本),将学习算法应用于所采样本训练一个基学习器,保存结果模型
- 例子:原始训练集有1000个样本,要训练5个基学习器,每个训练集从1000个样本中有放回采样1000个(可能涵盖重复),每个训练集训练一个基学习器
分类过程:
- 步骤:对于t tt个模型中的每一个,使用模型对实例进行类预测,返回被预测次数最多的类(多数投票)
- 例子:5个基学习器对某个样本的预测,若是"猫"出现4次"狗"出现1次,最终预测为"猫"
特点:
- 实例扰动:Bagging通过对实例进行扰动来增加差异性,每个基学习器使用不同的训练集,训练集通过有放回采样生成,不同训练集包含不同的样本组合
- 相同权值:所有基学习器模型都有相同的权值,每个模型的投票权重相等,简单多数投票
- 并行训练:基学习器能够并行训练(互不依赖),训练速度快,适合大规模数据
优势:
- 减少方差:单个学习器可能对训练数据敏感(方差大),多个学习器平均减少方差,提高泛化能力
- 降低过拟合:每个基学习器只看到部分数据,组合后减少过拟合风险
- 简单有效:算法方便易于建立,通常能提高性能,不需要修改基学习器算法
适用场景:
- 适合:基学习器容易过拟合(如决策树)、训练数据充足、需并行训练
- 不适合:基学习器已经很稳定(如kNN)、训练数据很少、基学习器训练很慢(因为要训练多个)
决策标准:基学习器容易过拟合 → 使用Bagging;需要并行训练 → 使用Bagging;基学习器稳定 → 不适合Bagging
3.1 什么是Bagging?
Bagging(Bootstrap Aggregating,装袋法),也称为叠加归纳法,由Breiman在1996年提出。
核心思想:通过有放回采样生成多个不同的训练集,训练多个基学习器,然后投票决定最终结果。
名字来源:Bootstrap是有放回采样,Aggregating是聚合(投票)。
3.2 Bagging的模型生成过程
算法步骤:
令 n nn为训练数据的实例数量。
对于 t tt次循环中的每一次:
采样:从训练数据中有放回地采样n nn 个实例
有放回:同一个样本可能被选中多次
每个样本被选中的概率相同
每个训练集大约包含63.2%的原始样本(其余是重复的)
训练:将学习算法应用于所采样本,训练一个基学习器
保存:保存结果模型
例子:
假设原始训练集有1000个样本,要训练5个基学习器:
训练集1:从1000个样本中有放回采样1000个(可能包含重复)
训练集2:从1000个样本中有放回采样1000个(与训练集1不同)
训练集3:从1000个样本中有放回采样1000个(与前两个不同)
训练集4:从1000个样本中有放回采样1000个
训练集5:从1000个样本中有放回采样1000个
每个训练集训练一个基学习器(如决策树),得到5个模型。
3.3 Bagging的分类过程
对于待分类的实例:
预测:对于 t tt个模型中的每一个,使用模型对实例进行类预测
投票:返回被预测次数最多的类(多数投票)
例子:
假设有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一个专家先工作,下一个专家重点关注前一个专家做错的地方,依此类推
模型生成过程:
- 初始化:赋予每个训练实例相同的权值w i = 1 / n w_i = 1/nwi=1/n(n nn是样本数)
- 对于t tt次循环中的每一次:
- 训练基学习器:将学习算法应用于加了权的数据集上,样本权重影响学习过程(权重大的样本更重要),保存结果模型
- 计算误差:计算模型在加了权的材料集上的误差e t e_tet,保存这个误差
- 检查终止条件:如果e t = 0 e_t = 0et=0(完美分类)或e t ≥ 0.5 e_t \geq 0.5et≥0.5(比随机猜测还差),终止建模型
- 更新样本权重:对于数据集中的每个实例,如果模型将实例正确分类则将实例的权值乘以e t / ( 1 − e t ) e_t/(1-e_t)et/(1−et)(权重减小),如果模型将实例错误分类则权重不变(相对增大),然后归一化所有实例的权值使得权重和为1
- 关键理解:被正确分类的样本权重减小(下次不那么重要),被错误分类的样本权重相对增大(下次更核心),下一个学习器会重点关注这些"困难样本"
分类过程:
- 步骤:初始化所有类权值为0,对于t tt个模型中的每一个,给模型所预测的类加权− log ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t))−log(et/(1−et))(误差越小权重越大),返回权值最高的类
- 权重计算:误差e t e_tet越小 → − log ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t))−log(et/(1−et))越大,表现好的模型权重更大,表现差的模型权重更小
特点:
- 实例扰动通过调整样本权重,对难以学习的实例增加权值,每个学习器关注不同的样本就是: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/nwi=1/n(n nn 是样本数)
2. 对于 t tt次循环中的每一次:
a. 训练基学习器:
将学习算法应用于加了权的内容集上
样本权重影响学习过程(权重大的样本更重要)
保存结果模型
b. 计算误差:
计算模型在加了权的内容集上的误差e t e_tet
保存这个误差
c. 检查终止条件:
- 如果 e t = 0 e_t = 0et=0(完美分类)或e t ≥ 0.5 e_t \geq 0.5et≥0.5(比随机猜测还差),终止建模型
d. 更新样本权重:
对于数据集中的每个实例:
如果模型将实例正确分类:将实例的权值乘以e t / ( 1 − e t ) e_t/(1-e_t)et/(1−et)(权重减小)
如果模型将实例错误分类:权重不变(相对增大)
归一化:将所有实例的权值进行归一化,使得权重和为1
关键理解:
被正确分类的样本权重减小(下次不那么重要)
被错误分类的样本权重相对增大(下次更重要)
下一个学习器会重点关注这些"困难样本"
4.3 Boosting的分类过程
对于待分类的实例:
1. 初始化:赋予所有类权值为0
2. 加权投票:
对于 t tt(或小于 t tt)个模型中的每一个:
给模型所预测的类加权− log ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t))−log(et/(1−et))
误差越小,权重越大(负号表示误差小→权重大的正相关)
3. 返回结果:返回权值最高的类
权重计算:
误差 e t e_tet 越小 → − log ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t))−log(et/(1−et)) 越大
表现好的模型权重更大
表现差的模型权重更小
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多个决策树组成的"森林"
算法流程:
- 实例扰动:多次随机有放回地采样构建训练集(与Bagging相同),每个训练集训练一个决策树
- 属性扰动:在构建每个决策树时,随机抽取属性(特征),不是应用所有特征而是随机选择一部分特征,在每个节点分裂时从随机选择的特征中选择最优特征
- 训练决策树:每个训练集训练一个决策树,决策树允许完全生长(不剪枝)或限制深度
- 投票:所有基学习器模型都有相同的权值,多数投票决定最终结果
双重随机性:
- 实例随机性(行随机):每个树使用不同的训练样本,依据有放回采样实现
- 属性随机性(列随机):每个树应用不同的特征子集,在每个节点分裂时随机选择特征
- 例子:有1000个样本100个特征,树1训练样本从1000个样本中有放回采样1000个,特征选择在每个节点从100个特征中随机选择10个从中选最优
特点:
- 双重扰动:实例扰动增加样本多样性,属性扰动增加特征多样性,比单纯的Bagging差异性更大
- 相同权值:所有决策树权重相同,容易多数投票
- 并行训练:决策树能够并行训练,训练速度快
- 不需要剪枝:每个决策树可以完全生长,随机性已经提供了正则化效果,减少过拟合风险
优势:
- 性能优异:在很多障碍上表现很好,通常比单个决策树好很多,比Bagging效果更好(因为有特征随机性)
- 处理高维数据:特征随机选择有助于处理高维材料,自动进行特征选择
- 评估特征重要性通过:能够评估每个特征的重要性,通过观察特征在树中的使用频率
- 处理缺失值:可以处理缺失值,不需要资料预处理
- 不易过拟合:双重随机性提供正则化,即使树完全生长也不容易过拟合
主要参数:树的数量(通常100-500)、每次分裂考虑的特征数(通常p \sqrt{p}p或log 2 ( p ) \log_2(p)log2(p),p pp是总特征数)、树的最大深度(可以限制或不限制)
决策标准:需要处理高维材料 → 使用随机森林;基学习器容易过拟合 → 使用随机森林;需要评估特征重要性 → 使用随机森林
随机森林?就是5.1 什么
随机森林(Random Forest)由Breiman在2001年提出,是Bagging + 决策树 + 特征随机选择的组合。
核心思想:对实例和属性都进行扰动,训练多个决策树,然后投票。
名字来源:Random随机选择特征和样本;Forest多个决策树组成的"森林"。
5.2 随机森林的算法
训练过程:
实例扰动:多次随机有放回地采样构建训练集(与Bagging相同);每个训练集训练一个决策树。
属性扰动:在构建每个决策树时,随机抽取属性随机选择一部分特征;在每个节点分裂时,从随机选择的特征中选择最优特征。就是(特征);不是应用所有特征,而
训练决策树:每个训练集训练一个决策树;决策树可以完全生长(不剪枝)或限制深度。
投票:所有基学习器模型都有相同的权值;多数投票决定最终结果。
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 pp是总特征数)
树的最大深度:可能限制或不限制
实际应用:
分类问题
回归问题
特征选择
异常检测
六、堆栈法(Stacking)
[!NOTE]
通过学习组合方式,能够使用不同类型的基学习器,性能通常最好但计算复杂。就是 关键点总结:Stacking使用元学习器学习如何最好地组合基学习器的预测结果,不是简单投票而核心思想:
- 定义:堆栈法(Stacking)是一种高级的集成方法,使用一个元学习器来学习如何最好地组合基学习器的预测结果
- 核心思想学习如何组合,使用机器学习方法学习最优的组合方式就是:不是简单投票,而
两层结构:
- 第一层:基学习器层:训练多个不同类型的基学习器(如决策树、神经网络、SVM等),每个基学习器对训练数据进行预测
- 第二层:元学习器层:使用基学习器的预测结果作为特征,训练一个元学习器(如逻辑回归),元学习器学习如何组合基学习器的预测
训练过程:
- 划分数据:将训练数据分成K KK折(如5折交叉验证)
- 训练基学习器:对每一折,用其他K − 1 K-1K−1折训练基学习器,用该基学习器预测当前折的样本,得到每个样本的基学习器预测结果
- 训练元学习器:使用基学习器的预测结果作为特征,使用原始标签作为目标,训练元学习器
预测过程:
- 基学习器对新样本进行预测
- 将预测结果作为特征输入元学习器
- 元学习器输出最终预测
特点:
- 组合不同类型基学习器通过:能够使用不同类型的基学习器(如决策树、神经网络、SVM、kNN等),发挥各自优势
- 学习组合方式简单投票,元学习器学习最优的组合权重,可能学习复杂的组合方式就是:不
- 需要更多内容:需要额外的数据训练元学习器,通常使用交叉验证避免过拟合
优势:
- 性能通常最好:可以学习最优的组合方式,通常比简单投票效果好
- 灵活性高:可以使用任何类型的基学习器,可以使用任何类型的元学习器
缺点:
- 计算复杂:应该训练多个基学习器,需要训练元学习器,训练时间长
- 容易过拟合:如果基学习器过拟合,元学习器也可能过拟合,需要小心设计
Stacking的变体:
- StackingC:Stacking的一个变体,使用不同的元学习器,或使用不同的特征工程手段
- Blending:使用独立的验证集训练元学习器
- Super Learner:理论上最优的Stacking办法
决策标准:需要最高性能 → 使用Stacking;有充足计算资源 → 使用Stacking;需要快速训练 → 不适合Stacking
6.1 什么是Stacking?
一种就是堆栈法(Stacking)高级的集成方法,使用一个元学习器来学习如何最好地组合基学习器的预测结果。
核心思想:不是简单投票,而是学习如何组合;使用机器学习方法学习最优的组合方式。
6.2 Stacking的算法
两层结构:
第一层:基学习器层:
训练多个不同类型的基学习器
如:决策树、神经网络、SVM等
每个基学习器对训练数据进行预测
第二层:元学习器层:
使用基学习器的预测结果作为特征
训练一个元学习器(如逻辑回归)
元学习器学习如何组合基学习器的预测
训练过程:
划分数据:将训练资料分成K KK折(如5折交叉验证)
训练基学习器:
对每一折:
用其他 K − 1 K-1K−1折训练基学习器
用这个基学习器预测当前折的样本
得到每个样本的基学习器预测结果
训练元学习器:
运用基学习器的预测结果作为特征
使用原始标签作为目标
训练元学习器
预测过程:
基学习器对新样本进行预测
将预测结果作为特征输入元学习器
元学习器输出最终预测
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)
得最高性能的场景
有充足计算资源的情况

浙公网安备 33010602011771号