🚀个人主页:为梦而生~ 关注我一起学习吧!
💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学!
⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!
💡往期推荐:
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】多元线性回归(适合初学者的保姆级文章)
【机器学习基础】对数几率回归(logistic回归)
【机器学习基础】正则化
【机器学习基础】决策树(Decision Tree)
【机器学习基础】K-Means聚类算法
【机器学习基础】DBSCAN
【机器学习基础】支持向量机
💡本期内容:
集成学习(Ensemble Learning)是一种通过结合多个弱分类器的预测结果,来得到一个更强大的分类器的方法。它基于“群体智慧”,通过对多个模型结果的综合,可以缓解过度拟合和欠拟合等问题,并提升预测性能。常见的集成学习算法包括 Boosting、Bagging、随机森林等。其中,Boosting 是一种将多个弱分类器变成强分类器的算法,Bagging 是一种基于 Bootstrap 取样的集成学习算法,随机森林则是一种结合决策树和 Bagging 的方法。集成学习在机器学习和数据挖掘领域有着广泛的应用,例如在图像分类、自然语言处理、信用风险评估等任务中表现出了良好的性能。
文章目录
1 个体与集成
集成学习(ensemble learning)通过构建并结合多个学习器来提升性能
1.1 集成个体
考虑一个简单的例子,在二分类问题中,假定3个分类器在三个样本中的表现如下图所示,其中√ 表示分类正确,X 号表示分类错误,集成的结果通过投票产生。
通过上表我们可以发现一个问题,如果每个学习器分类结果都是相同的,那么集成之后跟一个学习器其实差不多,就像是(b);
但是如果“八仙过海各显神通”,各个学习器在集成之后尽可能的显现了自己的能力,并且集成后的强分类器的性能还得到了提升,那么我们就认为集成的效果是好的,例如(a);
除此之外,如果各个学习器集成到一起并没有使得总的分类性能得到提升,我们认为这个集群起了负作用,例如©。
于是,我们得出结论:集成个体应好而不同
1.2 集成错误率简单分析
- 考虑二分类问题,假设基分类器的错误率为:
- 假设集成通过简单投票法结合𝑇个分类器,若有超过半数的基分类器正确则分类就正确
- 假设基分类器的错误率相互独立,则由Hoeffding不等式可得集成的错误率为:
上式显示,在一定条件下,随着集成分类器数目的增加,集成的错误率将指数级下降,最终趋向于0
注意:
- 上面的分析有一个关键假设:基学习器的误差相互独立
- 现实任务中,个体学习器是为解决同一个问题训练出来的,显然不可能互相独立
- 事实上,个体学习器的“准确性”和“多样性”本身就存在冲突
- 如何产生“好而不同”的个体学习器是集成学习研究的核心
2 Boosting
Boosting是一种集成学习算法,旨在通过训练一系列的弱分类器(即性能稍好于随机猜测的分类器),将它们组合成一个强分类器(即性能显著提升的分类器)。与其他集成学习算法相比,Boosting通过迭代的方式逐步优化模型,提高预测性能。
Boosting的核心思想是通过对训练数据集进行加权,重点训练那些之前分类效果不佳的样本,使得后续的弱分类器能够更加关注这些“困难”样本。通过反复迭代,多个弱分类器被训练得到,并通过加权投票或加权求和的方式,综合它们的预测结果,得到最终的分类器。
常见的 Boosting 算法包括 AdaBoost、Gradient Boosting 和 XGBoost。其中,AdaBoost(Adaptive Boosting)通过调整样本的权重来迭代训练弱分类器。Gradient Boosting 是一种基于梯度下降的 Boosting 算法,通过最小化损失函数的负梯度来进一步优化模型。XGBoost 是一种基于 Gradient Boosting 的高性能实现,通过结合正则化和特征子抽样等技术,提升了模型的泛化能力和训练速度。
- 伪代码:
- Boosting族算法最著名的代表是AdaBoost
2.1 AdaBoost推导
基学习器的线性组合:
最小化指数损失函数
若𝐻(𝑥)能令指数损失函数最小化,则上式对𝐻(𝑥)的偏导值为0,即
若𝐻(𝑥)能令指数损失函数最小化,则上式对𝐻(𝑥)的偏导值为0,即
𝑠𝑖𝑔𝑛(𝐻(𝑥))达到了贝叶斯最优错误率,说明指数损失函数是分类任务原来0/1损失函数的一致的替代函数。
当基分类器ℎ𝑡基于分布𝐷𝑡产生后,该基分类器的权重𝛼𝑡应使得𝛼tℎ𝑡最小化指数损失函数
令指数损失函数的导数为0,即
在获得𝐻𝑡−1之后的样本分布进行调整,使得下一轮的基学习器ℎ𝑡能纠正𝐻𝑡−1的一些错误,理想的ℎ𝑡能纠正全部错误
泰勒展开近似为
于是,理想的基学习器:
注意到
是一个常数,令Dt 表示一个分布:
根据数学期望的定义,这等价于
由𝑓 𝑥 , ℎ 𝑥 ∈ {−1, +1}有:
则理想的基学习器
最终的样本分布更新公式
2.2 AdaBoost实验
从偏差-方差的角度:降低偏差,可对泛化性能相当弱的学习器构造出很强的集成
3 Bagging与随机森林
3.1 Bagging
- Bagging算法伪代码
- Bagging算法特点
- 时间复杂度低
假定基学习器的计算复杂度为O(m),采样与投票/平均过程的复杂度为O(s),则bagging的复杂度大致为T(O(m)+O(s))。由于O(s)很小且T是一个不大的常数,因此训练一个bagging集成与直接使用基学习器的复杂度同阶 - 可使用包外估计
3.2 包外估计
𝐻𝑜𝑜𝑏(𝑥)表示对样本𝑥的包外预测,即仅考虑那些未使用样本𝑥训练的基学习器在𝑥上的预测
Bagging泛化误差的包外估计为:
3.3 Bagging实验
从偏差-方差的角度:降低方差,在不剪枝的决策树、神经网络等易受样本影响的学习器上效果更好
3.4 随机森林
随机森林(Random Forest)是一种集成学习算法,它通过构建多个决策树并进行投票或平均来提高分类或回归的准确性。随机森林可以应用于分类和回归问题,并且在机器学习和数据挖掘中具有广泛的应用。
随机森林的主要思想是通过随机选择特征和样本创建多个决策树,并使用投票或平均来决定最终的预测结果。
- 随机森林的构建过程如下:
-
随机选取一部分特征:从原始特征集合中随机选取一部分特征作为候选特征。
-
基于选定特征构建决策树:使用选定的特征和对应的样本创建一颗决策树。决策树的构建过程使用基于信息增益或基尼系数等算法来选择划分特征。
-
重复步骤1和步骤2:重复上述步骤多次,创建多棵决策树。
-
进行预测:对于分类问题,每个决策树投票选择最可能的类别;对于回归问题,每个决策树的预测结果取平均值。
4 结合策略
学习器的组合可以从三个方面带来好处
4.1 平均法
- 简单平均法
- 加权平均法
注意:
- 简单平均法是加权平均法的特例
- 加权平均法在二十世纪五十年代被广泛使用
- 集成学习中的各种结合方法都可以看成是加权平均法的变种或特例
- 加权平均法可认为是集成学习研究的基本出发点
- 加权平均法未必一定优于简单平均法
4.2 投票法
- 绝对多数投票法(majority voting)
- 相对多数投票法(plurality voting)
- 加权投票法(weighted voting)
4.3 学习法
- Stacking是学习法的典型代表
将训练好的所有基模型对训练基进行预测,第j个基模型对第i个训练样本的预测值将作为新的训
练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过
所有基模型的预测形成新的测试集,最后再对测试集进行预测。
- 伪代码
多响应线性回归(MLR)作为次级学习器的学习算法 效果较好