文章目录
集成学习:
最直白的理解:人多力量大
- 集成学习通过将多个学习器进行结合,从理论上来讲使用弱学习集成可以获得更好的性能。
- 集成算法的两个主要问题:如何选择若干个体学习器,以及选择何种策略将这些个体学习器集成为一个强学习器。
- 集成算法的成功在于保证个体学习器的多样性(好而不同),且集成不稳定的算法也能够得到一个比较明显的性能提升。
常见的集成学习有:
Bagging:训练多个分类器取平均——用于减少方差
Boosting: 从弱分类器开始加强,新分类器一定更强——用于减少偏差
Stacking:聚合多个分类和回归模型——用于提升预测结果
1、boosting算法
boosting算法是一族可将弱分类器提升为强分类器的算法。算法的工作机制类似:先从初始训练集训练出一个基分类器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器分错的样本在后续受到更多的关注,然后基于整理后的样本分布来训练下一个基学习器;反复进行,直至基学习器的数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
Boosting算法包括:Adaboost、GB、GBDT与XGBoost,其中最出名的就是Adaboost
1.1Adaboost算法
设训练数据集T={(x1,y1), (x2,y2)…(xN,yN)}
初始化训练数据的权值分布
使用具有权值分布Dm的训练数据集学习,得到基本分类器Gm
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b589a3f5e2fe415726b542059293940d.png)
计算Gm(x)在训练数据集上的分类误差率
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b15a738319e2d8aa63f737e65024d6bd.png)
计算Gm(x)的系数
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/daacdd7bd0e713100800da64a6a795c7.png)
更新训练数据集的权值分布
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6b54995606870c0170096f6e0d76c07c.png)
这里,Zm是规范化因子,它的目的仅仅是使Dm+1成为一个概率分布
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d128dbbd2ceb8551bc277d794a5d4a1c.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/85d383e1f4166dee3cffe0cc897b431f.png)
构建基本分类器的线性组合
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/acaea4d5c80a64166fd436ad9d66645e.png)
得到最终分类器
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f86eb7ee77da6586d372610cefa09a6d.png)
看不懂以上公式也没关系,下面将举一个例子:
如果想看该例子(adaboost)的程序,可以点这里
给定下列训练样本,试用AdaBoost算法学习一个强分类器。
初始化训练数据的权值分布:W1i= 0.1
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/562200d47a4d9a5cad393ac0aacdc1a5.png)
第一个m=1
在权值分布为D1的训练数据上,阈值v取2.5时误差率最低,故基本分类器为:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c51ccead3b7009fa286d32c1bed2b74a.png)