集成学习
顾名思义,就是将多个单一模型进行组合,最后形成一个更好的模型的过程。之所以组合多个单一学习器,是因为很多时候单一学习器的效果不够理想,多个模型组合可以互帮互助,各取所长,从而能够更好的完成任务。集成学习一般的结构是先学习单一的学习器,之后通过某种策略将其组合在一起。
- 条件
- 首先应该保证分类器之间的差异性,如果分类器都相同,那么组合的出来的结果是不会有变化的。
- 每个个体分类器的精度必须大于0.5,如果个体分类器的精度低于0.5,那集成之后的精度低于规模的增大而降低。但如果精度是大于0.5的,最后的分类结果会趋于1。
根据个体学习器的生成方式,目前可以分成两类:第一类是单个学习器之间有着很强的依赖关系,需要以串行的序列化的方式生成,代表方法:Boosting。Boosting方法中也有很多分类:Adaboost、GBDT等等。第二类就是个体学习器之间不存在很强的依赖关系,学习器可以并行生成,代表方法:Bagging 和Random Forest
Bagging(套袋法)
- Bagging的思想比较简单,即每一轮迭代前从原始数据中根据均匀概率分布有放回的抽取和原始数据大小相同的样本集合,样本可能会出现重复,形成新的训练集(该方法叫做bootstrap)。共抽取k轮,k为分类器个数,然后对每一次产生的训练集构造一个分类器,再对分类器进行组合。
- 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的的预测函数权重相同,即重要性相同)
Boosting
- Boosting则是训练集合本身保持不变,每次变化的是训练集中样例的权重。每一次迭代,都根据上一次迭代的结果,减小在上一轮正确样本的权重,增加被错误分类的样本的分布权重,每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化,这是一个不断学习的过程,也是一个不断提升的过程,这也就是boosting思想的本质所在。
- 迭代完成之后,将每次迭代的基分类器进行集成。Boosting预测函数权重不同,模型预测误差越小的权重越大,有助于增加组合后模型准确率。
综上,Bagging和Boosting的区别可以归纳为:
- 训练数据集的抽样方式
(Bagging均匀抽样,Boosting根据上一轮结果调整权重,错误率越大的样本权重越大)- 预测函数
(Bagging所有的预测函数权重相同,Boosting预测函数权重不同,预测误差小的模型权重越大)- 并行计算
(Bagging个体学习器之间不存在强依赖关系,可以并行生成,Boosting只能顺序生成,因为后一个预测要用到上一个结果)- 个体分类器
Bagging多使用强分类器进行组合,个体学习器之间不存在强依赖关系,Boosting则使用弱分类器(个体分类器精度略大于0.5)进行组合,个体学习器之间存在强依赖关系,是一种序列化方法。