2023年8月2日发(作者:)
常⽤决策树集成模型RandomForest、Adaboost、GBDT详解常⽤的集成学习策略在之前的⽂章我有介绍过常⽤的基本决策树模型ID3、C4.5、CART算法,其中提到了⼀个关于基本决策树模型的缺点,那就是决策树模型学习⼀棵最优的决策树被认为是NP-Complete问题。实际中的决策树是基于启发式的贪⼼算法建⽴的,这种算法不能保证建⽴全局最优的决策树,Random Forest 引⼊随机能缓解这个问题。那么什么是Random Forest呢?其实这正是今天⾸先要介绍的集成学习框架的⼀种,常见的集成学习框架有三种:Bagging,Boosting和 Stacking。三种集成学习框架在基学习器的产⽣和综合结果的⽅式上会有些区别,其中Stacking⽤的不是特别多,仅做简单了解即可。下⾯我会详细介绍Bagging和Boosting的集成思想和对应的集成框架,但是不包括它们的推导,⾄于它们的公式推导我会在会另外⽤⼀篇博⽂进⾏详细介绍。gBoosting是⼀簇可将基学习器提升为强学习器的算法。每个基学习器都会对训练集进⾏有放回抽样得到⼦训练集,⽐较著名的采样法为0.632 ⾃助法。每个基学习器基于不同⼦训练集进⾏训练,并综合所有基学习器的预测值得到最终的预测结果。Bagging 常⽤的综合⽅法是投票法,票数最多的类别为预测类别。ngBoosting 训练过程为阶梯状,基模型的训练是有顺序的,每个基模型都会在前⼀个基模型学习的基础上进⾏学习,最终综合所有基模型的预测值产⽣最终的预测结果,⽤的⽐较多的综合⽅式为加权法。ngStacking 是先⽤全部数据训练好基模型,然后每个基模型都对每个训练样本进⾏的预测,其预测值将作为训练样本的特征值,最终会得到新的训练样本,然后基于新的训练样本进⾏训练得到模型,然后得到最终预测结果。总结:上⾯介绍的三种集成学习思想,都可以改善基本决策树模型的贪⼼算法得到的不是最优解的问题。并且我们可能常听到这样⼀种说法:bagging是减少⽅差(variance)boosting是减少偏差(bias)**偏差:**可以简单的理解为“ 准度 ”,与⽬标值得距离越远偏差越⼤。减⼩偏差需要增加模型得参数,但⼜易过拟合。**⽅差:**可以简单得理解为“ 稳度 ”,分散程度越⾼⽅差越⼤(叶⼦节点多)。减⼩⽅差需要加少模型参数,但⼜易⽋拟合。需要注意得是,我们常说的集成学习的基模型与弱模型本不是⼀回事。集成学习的基模型可能是“弱模型”也可能是“强模型”。通常来说弱模型是偏差⾼(在训练集上准确度低)⽅差⼩(防⽌过拟合能⼒强)的模型。强模型是指偏差低,⽅差⾼的模型,也就是准确度⾼,但是可能过拟合的模型综上所述:对于 Bagging 来说,整体模型的偏差与基模型近似,⽽随着模型的增加可以降低整体模型的⽅差,故其基模型需要为强模型;(偏差低,⽅差⾼)准确率⾼,但是可能有⼀点过拟合。对于 Boosting 来说,整体模型的⽅差近似等于基模型的⽅差,⽽整体模型的偏差由基模型累加⽽成,故基模型需要为弱模型。(偏差⾼,⽅差低)准确率低,但是并没有过拟合。常⽤的集成框架 ForestRandom Forest(随机森林)是 Bagging 阵容的⼀员,很多⼈⼀听到随机森林就把重点放在“森林”两个字上⾯了,简单地认为随机森林就是很多棵决策树组合投票,却忽略了森林前⾯的重要修饰“随机”。集成思想:随机森林是 Bagging 的扩展变体,它在以决策树为基学习器构建 Bagging 集成的基础上,进⼀步在决策树的训练过程中引⼊了随机特征选择,因此可以概括 RF 包括四个部分:1. 随机选择样本(放回抽样);2. 随机选择特征;3. 构建决策树;4. 随机森林投票(平均)。优点:1. 随机的思想,使得每课树即使不剪枝也不容易过拟合;2. 在数据集上表现良好,相对于其他算法有较⼤的优势;3. 易于并⾏化,在⼤数据集上有很⼤的优势;4. 能够处理⾼维度数据,不⽤做特征选择。stAdaBoost(Adaptive Boosting,⾃适应增强)是Boosting阵容的⼀员,其⾃适应在于:前⼀个基本分类器分错的样本会得到加强,加权后的全体样本再次被⽤来训练下⼀个基本分类器。同时,在每⼀轮中加⼊⼀个新的弱分类器,直到达到某个预定的⾜够⼩的错误率或达到预先指定的最⼤迭代次数。集成思想:1. 初始化训练样本的权值分布,每个样本具有相同权重;2. 训练弱分类器,如果样本分类正确,则在构造下⼀个训练集中,它的权值就会被降低;反之提⾼。⽤更新过的样本集去训练下⼀个分类器;3. 将所有弱分类组合成强分类器,各个弱分类器的训练过程结束后,加⼤分类误差率⼩的弱分类器的权重,降低分类误差率⼤的弱分类器的权重。Adaboost 模型是加法模型,学习算法为前向分步学习算法,损失函数为指数函数的分类问题,为了防⽌ Adaboost 过拟合,我们通常也会加⼊正则化项,这个正则化项我们通常称为步长(learning rate)。对于前⾯的弱学习器的迭代。加法模型:最终的强分类器是由若⼲个弱分类器加权平均得到的。前向分布学习算法:算法是通过⼀轮轮的弱学习器学习,利⽤前⼀个弱学习器的结果来更新后⼀个弱学习器的训练集权重。优点1. 分类精度⾼;2. 可以⽤各种回归分类模型来构建弱学习器,⾮常灵活;3. 不容易发⽣过拟合。缺点对异常点敏感,异常点会获得较⾼权重。DT(Gradient Boosting Decision Tree,梯度提升决策树)是Boosting阵容的⼀员,它是⼀种迭代的决策树算法,该算法由多棵决策树组成。GBDT 是被公认的泛化能⼒较强的算法。集成思想:GBDT通过多轮迭代,每轮迭代产⽣⼀个弱分类器,每个分类器在上⼀轮分类器的梯度(如果损失函数最⼩均⽅损失函数(MSE),则负梯度就是残差值)基础上进⾏训练。对弱分类器的要求⼀般是⾜够简单,并且是低⽅差和⾼偏差的。因为训练的过程是通过降低偏差来不断提⾼最终分类器的精度。GBDT主要由三部分组成:nt Boosting(GB)也就是梯度提升、on Tree(DT,这⾥⽤的是回归树)、age(⼀个重要思想)回归树 Regression Decision TreeGBDT中的弱分类器选择的是CART回归树,⽽并不是分类树(虽然调整后也可以分类)。对于分类树⽽⾔,其值加减⽆意义(如性别),⽽对于回归树⽽⾔,其值加减才是有意义的(如说年龄)22岁=16岁+4岁+2岁。GBDT 的核⼼在于累加所有树的结果作为最终结果,所以 GBDT 中的树都是回归树,不是分类树,这⼀点相当重要。回归树在分枝时会穷举每⼀个特征的每个阈值以找到最好的分割点,衡量标准是最⼩化均⽅误差。注意:GBDT⽤于分类问题仍然使⽤CART回归树,使⽤softmax进⾏概率映射,然后对概率的残差进⾏拟合梯度迭代 Gradient Boosting让损失函数沿着梯度⽅向的下降。这个就是GBDT中GB的核⼼。GBDT 每轮迭代的时候,都去拟合损失函数在当前模型下的负梯度。(如果损失函数使⽤的是平⽅误差损失函数,则这个损失函数的负梯度就可以⽤残差来代替,以下所说的残差拟合,便是使⽤了最⼩均⽅损失函数**(MSE)**)Boosting思想:GBDT 的 Boosting 不同于 Adaboost 的 Boosting,GBDT 的每⼀步残差计算其实变相地增⼤了被分错样本的权重,⽽对与分对样本的权重趋于 0,这样后⾯的树就能专注于那些被分错的样本。缩减 ShrinkageShrinkage 的思想认为,每⾛⼀⼩步逐渐逼近结果的效果要⽐每次迈⼀⼤步很快逼近结果的⽅式更容易避免过拟合。即它并不是完全信任每⼀棵残差树。加上Shrinkage之前:加上Shrinkage之后:Shrinkage 不直接⽤残差修复误差,⽽是只修复⼀点点,把⼤步切成⼩步。本质上 Shrinkage 为每棵树设置了⼀个 weight,累加时要乘以这个 weight,当 weight 降低时,基模型数会配合增⼤。优点:1. 可以⾃动进⾏特征组合,拟合⾮线性数据;2. 可以灵活处理各种类型的数据。缺点:对异常点敏感。参考⽂献
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690910031a461041.html
评论列表(0条)