文章目录
本文内容一览(快速理解)
-
元学习是什么? 通过组合多个学习器来提高整体性能的方法,“三个臭皮匠顶个诸葛亮”,不同学习器在不同方面有优势,组合可以互补
-
为什么需要元学习? 不存在一种完美的学习方案,多个学习器组合往往比单个学习器效果更好,可以提高准确性、鲁棒性,降低过拟合风险
-
多重解释原理? 当有多个理论与观测一致时,应把他们都保留下来,通过组合这些模型可以得到更好的结果
-
基学习器差异性? 基学习器差异性越大,最终组合学习器的学习效果越好,如果都相同会犯相同错误,有差异性可以互补纠正错误
-
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 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 次循环中的每一次:
-
采样:从训练数据中有放回地采样 n n n 个实例
-
有放回:同一个样本可能被选中多次
-
每个样本被选中的概率相同
-
每个训练集大约包含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 t t 个模型中的每一个,使用模型对实例进行类预测
-
投票:返回被预测次数最多的类(多数投票)
例子:
假设有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/n wi=1/n( n n n是样本数)
- 对于 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 et≥0.5(比随机猜测还差),终止建模型
- 更新样本权重:对于数据集中的每个实例,如果模型将实例正确分类则将实例的权值乘以 e t / ( 1 − e t ) e_t/(1-e_t) et/(1−et)(权重减小),如果模型将实例错误分类则权重不变(相对增大),然后归一化所有实例的权值使得权重和为1
- 关键理解:被正确分类的样本权重减小(下次不那么重要),被错误分类的样本权重相对增大(下次更重要),下一个学习器会重点关注这些"困难样本"
分类过程:
- 步骤:初始化所有类权值为0,对于 t t t个模型中的每一个,给模型所预测的类加权 − log ( e t / ( 1 − e t ) ) -\log(e_t/(1-e_t)) −log(et/(1−et))(误差越小权重越大),返回权值最高的类
- 权重计算:误差 e t e_t et越小 → − 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/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
关键理解:
-
被正确分类的样本权重减小(下次不那么重要)
-
被错误分类的样本权重相对增大(下次更重要)
-
下一个学习器会重点关注这些"困难样本"
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/(1−et))
-
误差越小,权重越大(负号表示误差小→权重大的正相关)
3. 返回结果:返回权值最高的类
权重计算:
-
误差 e t e_t et 越小 → − 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 p p是总特征数)、树的最大深度(可以限制或不限制)
决策标准:需要处理高维数据 → 使用随机森林;基学习器容易过拟合 → 使用随机森林;需要评估特征重要性 → 使用随机森林
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 p p 是总特征数)
-
树的最大深度:可以限制或不限制
实际应用:
-
分类问题
-
回归问题
-
特征选择
-
异常检测
六、堆栈法(Stacking)
[!NOTE]
📝 关键点总结:Stacking使用元学习器学习如何最好地组合基学习器的预测结果,不是简单投票而是学习组合方式,可以使用不同类型的基学习器,性能通常最好但计算复杂。核心思想:
- 定义:堆栈法(Stacking)是一种高级的集成方法,使用一个元学习器来学习如何最好地组合基学习器的预测结果
- 核心思想:不是简单投票,而是学习如何组合,使用机器学习方法学习最优的组合方式
两层结构:
- 第一层:基学习器层:训练多个不同类型的基学习器(如决策树、神经网络、SVM等),每个基学习器对训练数据进行预测
- 第二层:元学习器层:使用基学习器的预测结果作为特征,训练一个元学习器(如逻辑回归),元学习器学习如何组合基学习器的预测
训练过程:
- 划分数据:将训练数据分成 K K K折(如5折交叉验证)
- 训练基学习器:对每一折,用其他 K − 1 K-1 K−1折训练基学习器,用这个基学习器预测当前折的样本,得到每个样本的基学习器预测结果
- 训练元学习器:使用基学习器的预测结果作为特征,使用原始标签作为目标,训练元学习器
预测过程:
- 基学习器对新样本进行预测
- 将预测结果作为特征输入元学习器
- 元学习器输出最终预测
特点:
- 组合不同类型基学习器:可以使用不同类型的基学习器(如决策树、神经网络、SVM、kNN等),发挥各自优势
- 学习组合方式:不是简单投票,元学习器学习最优的组合权重,可以学习复杂的组合方式
- 需要更多数据:需要额外的数据训练元学习器,通常使用交叉验证避免过拟合
优势:
- 性能通常最好:可以学习最优的组合方式,通常比简单投票效果好
- 灵活性高:可以使用任何类型的基学习器,可以使用任何类型的元学习器
缺点:
- 计算复杂:需要训练多个基学习器,需要训练元学习器,训练时间长
- 容易过拟合:如果基学习器过拟合,元学习器也可能过拟合,需要小心设计
Stacking的变体:
- StackingC:Stacking的一个变体,使用不同的元学习器,或使用不同的特征工程方法
- Blending:使用独立的验证集训练元学习器
- Super Learner:理论上最优的Stacking方法
决策标准:需要最高性能 → 使用Stacking;有充足计算资源 → 使用Stacking;需要快速训练 → 不适合Stacking
6.1 什么是Stacking?
堆栈法(Stacking)是一种高级的集成方法,使用一个元学习器来学习如何最好地组合基学习器的预测结果。
核心思想:不是简单投票,而是学习如何组合;使用机器学习方法学习最优的组合方式。
6.2 Stacking的算法
两层结构:
第一层:基学习器层:
-
训练多个不同类型的基学习器
-
如:决策树、神经网络、SVM等
-
每个基学习器对训练数据进行预测
第二层:元学习器层:
-
使用基学习器的预测结果作为特征
-
训练一个元学习器(如逻辑回归)
-
元学习器学习如何组合基学习器的预测
训练过程:
-
划分数据:将训练数据分成 K K K 折(如5折交叉验证)
-
训练基学习器:
对每一折:
-
用其他 K − 1 K-1 K−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)
-
需要最高性能的场景
-
有充足计算资源的情况
1万+

被折叠的 条评论
为什么被折叠?



