一、集成学习
通过构建多个学习器(为了目的构建出的模型)来完成学习任务
强学习器--准确率较高
弱学习器--简单,例如逻辑回归
将多个弱学习器组合起来达到强学习器的效果
优点:将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能
集成学习算法需要关注的问题:
1、个体学习器如何训练得到(学习不一样数据)--训练数据的权值或概率分布如何改变(有侧重点的进行学习)
2、如何将学习器进行结合
做法不同,产生两种类别--boosting:
个体学习器间存在强依赖关系,必须串行生成的序列化方法(弱学习器之间是有关联的)
解决第一个问题:提高那些在前一轮被弱分类器分错的样本的权值
减小那些在前一轮被弱分类器分对的样本的权值
使误分的样本在后续中受到更多的关注
解决第二个问题:加法模型将弱分类器进行线性组合,(给相应的学习器加上相应的权重)例如:adaboost GBDT
bagging:
个体学习器之间不存在强依赖关系、可同时生成的并行化方法
解决第一个问题:1、从原始样本集中抽取出k个训练集 (每轮从原始样本集中使用Bootstraping法,即自助法,使一种有放回的抽样方法,可能抽到重复的样本,抽取n个训练样本(在训练集中,有些样本可能被多次抽到,而有些样本可能一次都没有抽中)共进行k轮抽取,得到k个训练集,k个训练集相互独立)(随机森林中还会随机抽取一定数量的特征) 2、k个训练集分别训练,共得到k个模型,体现了并行 3、将上步得到的k个模型,通过一定的方式组合起来 a.若是分类问题:将上步得到的k个模型采用投票的方式得到分类结果 b.若是回归问题:计算上述模型的均值作为最后的结果
代表算法:随机森林
二、adaboost
解决的是二分类问题
思路:
数学表达-加法模型
由 的“分类误差率”决定 训练样本:提高前一轮“错误分类”的样本的权值,降低前一轮“正确分类”的样本的权值
1、在每一轮中,分别记录好那些被当前弱分类器 正确分类与错误分类的 样本,在下一轮训练时,提高错误分类样本的权值,同时降低正确分类样本的权值,用以训练新的弱分类器,这样以来,那些没有得到正确分类的数据,由于其权值加大,会受到后一轮的弱分类器的更大关注
2、加权多数表决
a.加大分类误差率小的弱分类器的权值,使其在表决中起较大作用
b.减小分类误差率大的弱分类器的权值,使其在表决中起较小作用
1、adaboost算法流程
二分类训练数据集:
其中,每个样本由实例和标记组成,实例,标记
X是实例空间,Y是标记集合
定义基分类器(弱分类器)G(x)
定义一个阈值k G(x)=1 ,x>k G(x)=-1 ,x<k
循环M次
有M个循环M次
1、初始化/更新当前训练数据的权值分布
a.如果是初次-- 权重是均分
b.非初次,进行更新
是小于1的, 是大于1的,所以当分类错误时,权重会增加,正确,权重减小
2、训练当前基分类器G(x)
使用具有权值分布的Dm的训练数据集学习,得到基分类器Gm(x)
I的含义是当括号里的条件满足时为1,否则为0,找到错误分类样本的权值
em的范围是0-0.5 (条件反转,即可改变误差率)
>=0 em单调递减 单调递增
em为分类误差率,当分类误差率较小的时候 越大
3、计算当前基分类器的权值m
4、将 更新到加法模型f(x)中
5、判断是否满足条件退出条件
分类器个数是否达到M,总分类器误差率是否低于设定的精度--sign[f(x)]
三、加法模型
预测函数
加法模型就是将很多学习器线性加权的组合
为基函数参数 为基函数 为积函数的参数
损失函数:自定义损失函数L(y,f(x))
回归问题--MSE均方误差,,分类问题--指数函数/交叉熵损失
优化方法
不适合使用梯度下降:复杂度较高
使用前向分布算法:是一个用于构造加性模型的贪婪算法。它在每一步中为当前模型添加一个新的基函数,可以将复杂的问题简化为在每一步寻找最优基函数的问题。
前向分布算法的基本思想:
-
初始化得到一个常数模型,这个模型通常选择训练集的目标变量(通常表示为Y)的均值或中位数。
-
在每一轮的迭代中,找到一个可以使损失函数最小化的基函数。将这个基函数乘以一个估计系数,加到当前的模型上。
-
更新损失函数。
-
重复步骤2-3,知道停止条件满足——迭代次数达到预设值或在损失函数方面没有显著提升。
四、优点和缺点
优点:
-
高准确度:AdaBoost往往具有较高的预测准确度,尤其是与单一模型相比。原因在于,AdaBoost在逐轮迭代过程中,不断地调整样本权重和弱分类器权重,关注难以分类的样本,从而达到很高的准确度。
-
简单易用:AdaBoost算法简单,易于实现。用户可以自由选择合适的基分类器,例如决策树桩、支持向量机等。
-
自动特征选择:若使用决策树桩作为基分类器,AdaBoost会自动选择重要性较高的特征进行分类,从而实现特征选择。这有助于降低模型复杂度和提高模型泛化性能。
-
不容易过拟合:在加权组合多个弱分类器的过程中,AdaBoost往往不容易产生过拟合现象。由于每个弱分类器在整个分类器中只占有一定的权重,整体模型可以更好地泛化
缺点:
-
对异常值敏感:AdaBoost在迭代过程中会不断调整样本权重,因此对异常值较为敏感。异常值可能导致模型过分关注这些异常样本,从而降低模型泛化能力。
-
计算开销较大:AdaBoost须按顺序训练弱分类器,因为每次迭代都要根据前一轮弱分类器的结果更新训练样本权重。这不仅限制了算法的并行能力,还可能导致训练过程耗时较长。
-
难以解释:虽然单个弱分类器可能具有较好的可解释性,但由多个弱分类器组成的整体分类器可能较难解释。很多实际应用场景中,模型解释性是一个重要的考虑因素。