Adaboost实战:弱分类器组合成强分类器,第七章要点
第七章 利用adaboost元算法提高分类
于机器学习的实践里头,单单一个分类器经常性地不容易一并达成准确率以及泛化能力的需求。AdaBoost身为一种经典的元算法,借由组合多个弱分类器去构建强分类器,能够明显地提高分类性能。在本章之中,将会围绕着这一算法的核心原理以及实战应用来展开,协助你理解然后掌握这一强大的工具。
弱分类器怎么变成强分类器
AdaBoost的核心思想并非复杂难辨:首先要训练出一个基础分类器,接着依据其表现来调整样本权重,也就是要让那些被错分的样本在前续训练里获取更高的关注度。此过程会反复地加以推进,最终将所有的弱分类器依照各自的表现进行加权组合。你能够发觉,哪怕每个弱分类器仅仅比随机猜测略微好那么一点,组合之后也能够达成很高的准确率。在实践当中,我常常会使用单层决策树作为基分类器,因为它计算量小且效果稳定。
样本权重更新到底怎么算
很多人对于权重更新公式存有困惑,简单来讲,每一轮训练结束之后,算法会去计算当下分类器的错误率,接着依据此来确定这个分类器在最终模型里的话语权alpha值,正确分类的样本权重会乘上e的负alpha次方,错误分类的样本却乘上e的正alpha次方,如此归一化之后,错误样本的权重就增大了,我在项目当中曾手动推导过这个进程,理解权重变化对模型迭代方向的作用是非常关键的。
训练需要多少轮才合适
AdaBoost具有一个优势,即不太容易过拟合,然而轮数并非越多就越好,当验证集上的错误率趋于平稳,甚至开始回升时,便应该停止,具体轮数与数据复杂度相关,我在处理信贷违约预测时,40至50轮基本就收敛了,而在一些噪声较多的营销响应数据上,20轮左右反倒效果更佳,建议你观察每轮增加的弱分类器对整体性能的提升幅度,提升不明显时就考虑停止。
实际项目中怎么调参见效快
在sklearn里头运用AdaBoostClassifier,存在着几个参数是值得着重去留意关注的。base_estimator的挑选方面哟:决策树通常把最大深度把控在1到2层的范围之内;learning_rate跟n_estimators是需要相互配合的,学习率如果越低的话,所需要的弱分类器数量就会越多的;算法默认采用的是SAMME.R,其收敛速度快而且误差小。我有着这样的习惯,就是先把学习率固定为1,借助交叉验证去确定大致的轮数,然后再降低学习率、增加轮数以此来进行微调。另外,样本不平衡时可以考虑调整类别权重。
平时于集成学习项目里头你是更注重模型精度,还是更在意训练效率?欢迎在评论区域分享你那调参的经验,若觉着本文有作用的话可千万别忘记点赞给予支持。
