文章目录
集成学习:
最直白的理解:人多力量大
- 集成学习通过将多个学习器进行结合,从理论上来讲使用弱学习集成可以获得更好的性能。
- 集成算法的两个主要问题:如何选择若干个体学习器,以及选择何种策略将这些个体学习器集成为一个强学习器。
- 集成算法的成功在于保证个体学习器的多样性(好而不同),且集成不稳定的算法也能够得到一个比较明显的性能提升。
常见的集成学习有:
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

计算Gm(x)在训练数据集上的分类误差率

计算Gm(x)的系数

更新训练数据集的权值分布

这里,Zm是规范化因子,它的目的仅仅是使Dm+1成为一个概率分布


构建基本分类器的线性组合

得到最终分类器

看不懂以上公式也没关系,下面将举一个例子:
如果想看该例子(adaboost)的程序,可以点这里
给定下列训练样本,试用AdaBoost算法学习一个强分类器。
初始化训练数据的权值分布:W1i= 0.1

第一个m=1
在权值分布为D1的训练数据上,阈值v取2.5时误差率最低,故基本分类器为:
