文章目录
- [元学习(Meta Learning)](#元学习(Meta Learning))
-
- 一、考试范围知识框架
- 二、正文内容
-
- [1. 元学习原理](#1. 元学习原理)
- [2. 装袋法(Bagging)](#2. 装袋法(Bagging))
- [3. 提升法(Boosting)](#3. 提升法(Boosting))
- [4. 随机森林(Random Forest)](#4. 随机森林(Random Forest))
- [5. 堆栈法(Stacking)](#5. 堆栈法(Stacking))
元学习(Meta Learning)
一、考试范围知识框架
- 元学习原理
- 装袋法(Bagging)
- 提升法(Boosting)
- 随机森林(Random Forest)
- 堆栈法(Stacking)
二、正文内容
1. 元学习原理
关键词:元学习、系综方法、多分类器融合、组合学习、分类器集成、基学习器
什么是元学习?
元学习(Meta Learning),也称为系综方法 、多分类器融合 、组合学习 或分类器集成 (Ensemble),是一种通过组合多个学习器来提高整体性能的方法。
核心思想 :不存在一种完美的学习方案。
通俗理解:就像"三个臭皮匠,顶个诸葛亮",多个学习器组合起来,往往比单个学习器效果更好,不同的学习器可能在不同方面有优势,组合可以互补。
重要区别 :不是 简单地将数据集在多个不同分类器上重复训练,而是揭示怎样才能更好地组合多个不同的学习器(基学习器)。
多重解释原理
元学习遵循**"多重解释原理"**:
原理:当有多个理论与观测一致(符合)时,应把他们都保留下来。
含义:如果多个不同的模型都能很好地解释数据,不要只选择一个,而是保留多个,通过组合这些模型,可以得到更好的结果。
例子:
假设有三个医生诊断同一个病人:
- 医生A(决策树):诊断结果为"感冒",置信度80%
- 医生B(神经网络):诊断结果为"感冒",置信度75%
- 医生C(SVM):诊断结果为"过敏",置信度70%
虽然医生C的诊断不同,但他的判断也有参考价值。通过组合三个医生的意见,可能得到更准确的诊断。
基学习器的差异性
关键原则 :基学习器差异性(diversity)越大,最终组合学习器的学习效果越好。
为什么需要差异性?
如果所有基学习器都相同:它们会犯相同的错误;组合起来不会改善性能;就像多个相同的人投票,结果和一个人一样。
如果基学习器有差异性:它们可能在不同样本上犯错;一个学习器的错误可能被其他学习器纠正;就像多个不同专长的人合作,可以互补。
如何增加差异性?
- 使用不同的算法:决策树、神经网络、SVM等
- 使用不同的训练数据:Bagging(有放回采样)
- 使用不同的特征:Random Forest(随机选择特征)
- 使用不同的参数:不同的学习率、不同的网络结构等
例子:
场景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 次循环中的每一次:
-
采样 :从训练数据中有放回地采样 n n n 个实例
- 有放回:同一个样本可能被选中多次
- 每个样本被选中的概率相同
- 每个训练集大约包含63.2%的原始样本(其余是重复的)
-
训练:将学习算法应用于所采样本,训练一个基学习器
-
保存:保存结果模型
例子:
假设原始训练集有1000个样本,要训练5个基学习器:
- 训练集1:从1000个样本中有放回采样1000个(可能包含重复)
- 训练集2:从1000个样本中有放回采样1000个(与训练集1不同)
- 训练集3:从1000个样本中有放回采样1000个(与前两个不同)
- 训练集4:从1000个样本中有放回采样1000个
- 训练集5:从1000个样本中有放回采样1000个
每个训练集训练一个基学习器(如决策树),得到5个模型。
Bagging的分类过程
对于待分类的实例:
- 预测 :对于 t t t 个模型中的每一个,使用模型对实例进行类预测
- 投票 :返回被预测次数最多的类(多数投票)
例子:
假设有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多个决策树组成的"森林"。
随机森林的算法
训练过程:
-
实例扰动 :多次随机有放回地采样构建训练集(与Bagging相同);每个训练集训练一个决策树。
-
属性扰动 :在构建每个决策树时,随机抽取属性(特征);不是使用所有特征,而是随机选择一部分特征;在每个节点分裂时,从随机选择的特征中选择最优特征。
-
训练决策树:每个训练集训练一个决策树;决策树可以完全生长(不剪枝)或限制深度。
-
投票 :所有基学习器模型都有相同的权值;多数投票决定最终结果。
双重随机性
随机森林通过双重随机性增加差异性:
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等;每个基学习器对训练数据进行预测。
第二层:元学习器层 :使用基学习器的预测结果作为特征 ;训练一个元学习器(如逻辑回归);元学习器学习如何组合基学习器的预测。
训练过程:
-
划分数据 :将训练数据分成 K K K 折(如5折交叉验证)
-
训练基学习器 :对每一折:用其他 K − 1 K-1 K−1 折训练基学习器;用这个基学习器预测当前折的样本。得到每个样本的基学习器预测结果。
-
训练元学习器:使用基学习器的预测结果作为特征;使用原始标签作为目标;训练元学习器。
预测过程:
- 基学习器对新样本进行预测
- 将预测结果作为特征输入元学习器
- 元学习器输出最终预测
Stacking的特点
1. 组合不同类型基学习器 :可以使用不同类型的基学习器;如:决策树、神经网络、SVM、kNN等;发挥各自优势。
2. 学习组合方式 :不是简单投票;元学习器学习最优的组合权重;可以学习复杂的组合方式。
3. 需要更多数据:需要额外的数据训练元学习器;通常使用交叉验证避免过拟合。
Stacking的变体
StackingC:Stacking的一个变体,使用不同的元学习器,或使用不同的特征工程方法。
其他变体 :Blending 使用独立的验证集训练元学习器;Super Learner理论上最优的Stacking方法。
Stacking的优势
1. 性能通常最好:可以学习最优的组合方式;通常比简单投票效果好。
2. 灵活性高:可以使用任何类型的基学习器;可以使用任何类型的元学习器。
Stacking的缺点
1. 计算复杂:需要训练多个基学习器;需要训练元学习器;训练时间长。
2. 容易过拟合:如果基学习器过拟合,元学习器也可能过拟合;需要小心设计。
实际应用:机器学习竞赛(如Kaggle);需要最高性能的场景;有充足计算资源的情况。