看了一下,adaboost之前也有不少人实现的思路,但是各有不同,为了方便起见,这里重点还是阐述一下sklearn中的adaboost的实现算法。
来自sklearn的官方文档的谷歌翻译。
首先来看下adaboost的分类:
两者的主要区别是弱学习器权重的度量,SAMME使用了和我们的原理篇里二元分类Adaboost算法的扩展,即用对样本集分类效果作为弱学习器权重,而SAMME.R使用了对样本集分类的预测概率大小来作为弱学习器权重。由于SAMME.R使用了概率度量的连续值,迭代一般比SAMME快,因此AdaBoostClassifier的默认算法algorithm的值也是SAMME.R。我们一般使用默认的SAMME.R就够了,但是要注意的是使用了SAMME.R, 则弱分类学习器参数base_estimator必须限制使用支持概率预测的分类器。SAMME算法则没有这个限制。
其实也挺好理解的,samme就是基学习器直接输出分类的标签,而samme.R则是输出分类的概率值,具体的区别下面写,首先是SAMME:
机器学习笔记:AdaBoost 公式推导www.jianshu.com这一篇算是讲解和推导的比较完整的了,借鉴一下:
首先adaboost的整体的公式表示:
每一轮训练一个新的分类器
,并且根据这个分类器的误差得到这个分类器的权重
adaboost使用的是指数损失函数: