关于 Adaboost 与 GBDT 加权操作疑问

来源:13-6 Ada Boosting 和 Gradient Boosting

lemonlxn

2021-01-18

老师好,我最近对这两种集成算法存在不少疑惑。
这两者都属于 boosting 算法,整体而言的步骤如下:

1.初始样本权重一致;
2.构建第一个学习器后,第二个学习器会增大【第一轮】分错样本的权重,减小【第一轮】分对样本权重;
3.第n个学习器会增大【第n-1轮】分错样本的权重,减小【第n-1轮】分对样本权重;
4.重复3步骤;
5.对m个学习器进行加权投票。

我的问题有:

1.重复3步骤后,遇到什么情况会停止?
2.加权投票是什么意思,怎么加权?(分类准确率高的学习器权重增大?)


如上是一些原理的不理解,如下是 Adaboost 与 GBDT 的疑惑。

adaboost

我网上找了一张图,如下所示,每一个学习器增大上一轮学习器分错样本的权重,减小上一轮学习器分对样本的权重。

我的问题是:

3.下图看起来是分类问题,如果解决回归问题,还能加权投票的?具体是如何来预测相应的回归数值的?

图片描述

GDBT

GDBT 解决回归问题,老师已经给了样例图,我是比较好理解的。
即 GDBT 的每个子学习器,根据预测值与实际值产生的偏差来训练模型,进而逐步使偏差减小,最后通过加权方式,输出预测结果。
我的问题是:

4.整个GDBT算法逻辑,感觉与boosting 初始样本权重一致,后续增大错误样本权重,减小准确样本权重的步骤不太一致,是否boosting 单指 adaboost?
5.GDBT 解决回归问题,我是很好理解的。但解决分类问题,我是比较难以想象的。他采取的方式,是否借鉴逻辑回归?这里的分类问题,是否有加权操作,如何加权操作?

图片描述

写回答

1回答

liuyubobobo

2021-01-19

1. 重复3步骤后,遇到什么情况会停止?

具体做多少个分类器去 boost 之前的结果,是 boost 类型算法的一个超参数。你可以想象,如果 n 非常大,结果会大概率的过拟合你的数据;但如果 n 非常小,结果会欠拟合。你需要根据自己所处理的问题和数据,找到合适的 n


2.加权投票是什么意思,怎么加权?(分类准确率高的学习器权重增大?)

课程中对 adaboost 的原理介绍确实不深入。

整体来讲,adaboost 训练了 n 个分类器,这 n 个分类器的区别,是面对的训练数据的权值不同。最终在预测的时候,这 n 个分类器做投票。

是的,分类准确高越高,权值越大。权值的计算方式为:

//img.mukewang.com/szimg/6006b69a0995561d01380059.jpg

其中,a(j) 是第 j 个分类器的权值;r(j) 为第 j 个分类器的错误率。你可以想象,错误率越高,分子越小,分母越大,整体 a(j) 越小,即权值越低。

式子中的 miu 是一个超参数。作为 adaboost 算法的一个超参数。


3. 下图看起来是分类问题,如果解决回归问题,还能加权投票的?具体是如何来预测相应的回归数值的?

可以,就是不同分类器得到的预测值的加权平均。(回忆一下课程中介绍的 knn 是怎么解决回归问题的?)


4. 整个GDBT算法逻辑,感觉与boosting 初始样本权重一致,后续增大错误样本权重,减小准确样本权重的步骤不太一致,是否boosting 单指 adaboost?

gradient boosting 算法属于 boost 类算法。adaboost 和 gradient boosting,都属于 boosting 类算法。

gradient boosting 并没有改变每一个样本的权重,这是和 adaboost 不一样的地方。gradient boosting 每次只是根据上一次预测的误差值再做一个分类器,尝试预测误差。

可以参考这里的讨论:http://coding.imooc.com/learn/questiondetail/171996.html

另外,gradient boosting 没有投票的过程。


5. GDBT 解决回归问题,我是很好理解的。但解决分类问题,我是比较难以想象的。他采取的方式,是否借鉴逻辑回归?这里的分类问题,是否有加权操作,如何加权操作?

是的,使用和逻辑回归相同的方式。也就是一个分类器,虽然把一个数据分类成为 a,但是 51% 的概率分类为 a,和 88% 的概率分类为 a,是不一样的。而如果我们知道一个样本实际对应的类别是 a,那最佳情况应该是 100% 为 a,所以这里是有误差的。gradient boosting 针对这个误差做调整。


继续加油!:)


3
1
lemonlxn
赞,两者区别还是蛮明显的,待我再次整理下
2021-01-19
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程