关于 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回答
-
1. 重复3步骤后,遇到什么情况会停止?
具体做多少个分类器去 boost 之前的结果,是 boost 类型算法的一个超参数。你可以想象,如果 n 非常大,结果会大概率的过拟合你的数据;但如果 n 非常小,结果会欠拟合。你需要根据自己所处理的问题和数据,找到合适的 n
2.加权投票是什么意思,怎么加权?(分类准确率高的学习器权重增大?)
课程中对 adaboost 的原理介绍确实不深入。
整体来讲,adaboost 训练了 n 个分类器,这 n 个分类器的区别,是面对的训练数据的权值不同。最终在预测的时候,这 n 个分类器做投票。
是的,分类准确高越高,权值越大。权值的计算方式为:
其中,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 针对这个误差做调整。
继续加油!:)
312021-01-19
相似问题