基本概念
集成学习:
集成学习是一种机器学习方法,它本身不是一个单独的机器学习算法,而是通过构建并结合多个学习器来完成学习任务。这种方法有时也被称为多分类器系统或基于委员会的学习。
集成学习通常用多个分类器/模型各自独立地学习和作出预测。这些预测最后结合成组合预测,组合预测优于任何一个单独模型的预测。
图片来源:https://zhuanlan.zhihu.com/p/33621750
强学习器与弱学习器:
弱学习器:那些分类准确率只稍微好于随机猜测的分类器(error rate < 0.5),例如决策树、朴素贝叶斯分类器、支持向量机等
强学习器:在机器学习中,具有较高预测能力的学习算法或模型。与弱学习器相比,强学习器的预测准确率更高,能够提供更可靠的预测结果,常见的强学习器包括神经网络、深度学习模型、支持向量机等
集成学习的优点
集成学习的优势主要体现在以下几个方面:
- 降低偏差:多个模型的预测结果可以互相补充,减少单一模型可能出现的高偏差问题。有助于解决欠拟合问题
- 降低方差:通过结合多个模型的结果,可以减少过拟合的可能性,从而降低模型的方差。
- 增强稳定性:集成学习通过将多个弱模型的优势结合起来,可以提高最终预测结果的稳定性
集成学习算法需要关注的问题
如何训练弱学习器?
-
按照个体学习器是否相同,可以分为两种:
同质个体学习器(Homogeneous Ensemble):集成学习中所有个体学习器都是同一类型的模型。这些模型通常具有相同的学习算法,但可能在参数设置、训练数据或训练过程中有所不同。
- Boosting系列算法:每个学习器的训练都依赖于前一个学习器的结果。Boosting算法通过关注前一个学习器错误分类的样本来提高模型性能。典型的Boosting算法包括AdaBoost、Gradient Boosting和XGBoost等。
- Bagging系列算法:个体学习器之间可以并行生成。每个学习器都是在原始数据集的一个随机子集上训练得到的。随机森林(Random Forest)是Bagging的一个变种,它使用决策树作为基学习器,并且在分裂节点时引入随机性来增加多样性。
异质个体学习器(Heterogeneous Ensemble):集成学习中包含不同类型的模型,这些模型可能有不同的学习算法和结构。
- Stacking:Stacking将多个不同的学习器(可以是同质的也可以是异质的)的输出作为新的特征,输入到一个或多个元学习器(meta-learner)中进行学习。这种方法的关键在于,元学习器能够学习如何最好地组合不同基学习器的预测结果。Stacking可以用于分类和回归问题,并且可以提高模型的泛化能力。
-
按照个体学习器之间的依赖关系,可以分为两种
-
强依赖关系:在Boosting系列算法中,个体学习器之间存在强依赖关系。每个学习器的训练都依赖于前一个学习器的错误,通过调整样本权重或关注特定样本来提高整体性能。
-
无依赖关系:在Bagging系列算法中,个体学习器之间没有强依赖关系,可以独立并行训练。这种方法的优点是计算效率高,可以很好地扩展到大规模数据集。
-
如何将个体学习器组合?
- 在分类问题中,可以通过多数投票法来决定最终的类别。即每个个体学习器对新样本进行预测,然后选择得票最多的类别作为最终预测结果
- 对于回归问题,可以将所有个体学习器的预测结果取平均值作为最终的预测结果。这种方法也可以用于分类问题,通过计算每个类别的预测概率的平均值来确定最终的类别
boosting
个体学习器间存在强依赖关系、必须串行生成的序列化方法
核心思想
关注那些被之前分类器错误分类的样本,并给予这些样本更高的权重,从而使后续的分类器更加关注这些"困难"样本。
- 提高分错样本的权值,减小分对样本的权值
- 在每一轮迭代中,Boosting 算法会训练一个新的弱分类器。
- 这个分类器会给予那些在前一轮被错误分类的样本更高的权重,那些被正确分类的样本的权重会被降低。这样,后续的分类器就会更加关注那些之前被错误分类的样本。
- 加法模型:将弱分类器进行线性组合
- Boosting 算法最终的强分类器是所有弱分类器的线性组合。
- 每个弱分类器都有一个与之对应的权重,这个权重通常是基于该分类器在训练集上的性能来确定的。
- 最终的预测结果是所有弱分类器预测结果的加权和。
代表
AdaBoost(Adaptive Boosting)
AdaBoost 是最早的Boosting算法之一,它通过迭代地训练弱分类器(通常是决策树),并根据每个分类器的错误率来分配权重。
在每一轮中,错误分类的样本权重增加,而正确分类的样本权重减少。
最终的分类器是所有弱分类器的加权多数投票。
GBDT(Gradient Boosting Decision Tree)
GBDT 通过构建决策树来逐步改进模型。
它使用梯度下降法来最小化损失函数,并以负梯度方向作为残差的近似值来训练新的决策树。
GBDT 可以处理回归和分类问题。
XGBoost(eXtreme Gradient Boosting)
XGBoost 是基于GBDT的优化版本,它在速度和性能上都有所提升。
XGBoost 引入了正则化项来控制模型的复杂度,防止过拟合。
它还支持并行处理和处理缺失值,使得训练过程更加高效。
bagging
个体学习器间不存在强依赖关系、可同时生成的并行化方法
核心思想
- 从原始样本集中抽取出k个训练集
Bagging 算法首先从原始样本集中使用自助法(Bootstrapping)抽取k个训练集,每个训练集包含n个样本。
这个过程是有放回的抽样,意味着同一个样本可能在不同的训练集中被多次抽取,而某些样本可能一次都没有被抽取到。
共进行k轮抽取,得到k个相互独立的训练集。 - k个训练集分别训练,得到k个模型
每个训练集都被用来训练一个个体学习器,共得到k个模型。
由于训练集是独立抽取的,这些模型的训练过程可以并行进行,提高了计算效率。
在随机森林(Random Forest)算法中,除了对样本进行随机抽取外,还会在构建每棵树时随机选择特征子集,进一步增加了模型的多样性。 - 将k个模型通过一定方式组合起来
Bagging 算法的最后步骤是将得到的k个模型组合起来,以得到最终的预测结果。
对于分类问题,通常采用投票的方式得到分类结果。在多数投票法中,每个模型的预测结果被视作一票,最终选择得票最多的类别作为预测结果。
对于回归问题,通常计算上述模型的预测结果的均值作为最终结果。这种方法可以平滑个别模型的极端预测,提高预测的稳定性。
代表
随机森林
- 随机森林由多个决策树组成,每棵决策树都是在原始数据集的一个自助样本(Bootstrap样本)上训练得到的,每棵树的训练数据不同。
- 在随机森林中,每棵树在分裂节点时不是考虑所有特征,而是随机选择一部分特征,然后从中选择最佳分裂特征。这个随机选择的过程增加了树与树之间的多样性。
- 对于分类问题,随机森林通过多数投票的方式来确定最终的类别;对于回归问题,则通常取多棵树预测结果的平均值作为最终预测。