之前介绍的树模型属于弱学习器,本身的算法比较简单,但是与集成算法合并后,会产生更好的效果。比如:决策树+bagging=随机森林;决策树+boosting=提升树
这里先简单介绍下集成算法,然后对随机森林和提升树再做说明。
集成算法
集成算法:通过对多个模型进行组合来解决实际问题。
多个模型集成成为的模型叫做集成评估器,组成集成评估器的每个模型都叫做基评估器。
而这个“组合”的方式主要有以下两种:装袋法(Bagging),提升法(Boosting).
Bagging和Boosting是对于相同类型的个体学习器,这样的集成是同质;而对于不相同类型的个体学习器,这样的集成是异质。
按照同质弱学习器之间是否存在依赖关系可以将同质集成分类两类:
- 弱学习器之间存在强依赖关系,一系列弱学习器基本都需要串行生成(该弱学习器是对上一个弱学习器的结果进行处理),代表算法是Boosting系列算法;
- 弱学习器之间没有较强的依赖关系,一系列弱学习器可以并行生成,(弱学习器共同处理,互相独立)代表算法是Bagging系列算法。
Bagging
通过随机有放回的采样数据,而不同的数据就会产生不同的模型,T个数据就会产生T个模型,然后通过某种结合策略将这些模型结合得到结果。
大概有1/3的数据没有选中,在随机森林中(随机森林有oob),就可以进行测试,不需要单独划分交叉验证集。
结合策略
平均法
取其均值作为输出。
投票法
少数服从多数。
学习法
stacking:将初级学习器M个结果作为新的数据,再放入新的模型(次级学习器)中进行学习,得出最终的结果。比如将随机森林的结果放入线性回归中,多个模型叠加得到最后的结果。
Boosting
Bagging的弱学习器之间是没有依赖关系的,而Boosting的弱学习器之间是有依赖关系的,因此它的弱学习器是串行生成,利用上一步的结果。
先用弱学习器去训练,将结果与真实值进行比较,对预测错误的值赋予更大的权重,再放入下一个弱学习器中进行训练,以此往复。
Bagging与Boosting比较
Bagging:方差小(泛化能力强),偏差大(弱学习器的准确度不行),因此为了提升弱