什么是集成学习(Ensemble learning)?
最常听到的关于集成学习的说法就是:“三个臭皮匠,顶个诸葛亮”。整个模型内部是由多个弱监督模型组成,每个弱监督模型只在某个方向表现较好,把这些监督算法合而为一,就可以得到稳定且各方面都表现较好的模型。
而集成方法(Ensemble method)就是将几种分类器组合成一个预测模型的元算法。
下面总结一下集成学习的几个方法
随机森林(bagging类型)
随机森林(Random forest),“森林”表示整个模型中包含了很多决策树,“随机”表示森林中的每棵决策树都是随机从数据集中采样来训练。
举个例子,下面是一些数据。有5个样本,每个样本有3个特征。
ID | 有房吗? | 单身吗? | 年收入大于80k? | 拖欠贷款 |
---|---|---|---|---|
1 | 是 | 是 | 是 | 否 |
2 | 否 | 否 | 是 | 否 |
3 | 否 | 是 | 否 | 否 |
4 | 是 | 否 | 是 | 否 |
5 | 否 | 是 | 是 | 是 |
这里假设森林里有3棵树,随机采样训练。
训练第一棵树,采用的是红色框处的数据进行训练:
训练第二棵树,采用的是绿色框处的数据进行训练:
训练第三棵树,采用的是蓝色框处的数据进行训练:
每棵树都完成训练后,将一个待测样本分别送至三棵树中做决策,因为每棵树不同,所以得到的决策结果会有差别,将这3个结果综合起来就得到随机森林最终输出。
随机森林的训练过程:
① 设定模型的超参数:几棵树,每棵树多高(几层)?
② 随机采样,训练每棵决策树
③ 先将待测样本输入到每棵决策树,最后再将每棵树的决策结果进行整合。(回归问题,求均值;分类问题,找出现类别最多的)
优点
① 模型随机性强,不易过拟合
② 因为每次采样选取小部分,对高维数据处理速度更快
③ 树状结构,模型可解释度高,特征的重要性也明了
缺点
① 模型过于一般化,难于处理困难样本,使得整合结果也很一般
说得通俗一点就是,虽然三个臭皮匠凑在一起可能比以前好,但对于特别复杂困难的问题,他们还是没法解决。
AdaBoost(boosting类型)
自适应增强算法(Adaptive Boosting),其思想就是“前人栽树,后人乘凉”。即前辈为后浪创造条件,后浪在前辈提供的基础上进行改进。机器学习里就是,先训练一个弱学习模型,再对该模型进行评估,对该模型预测对的问题就减少注意力,而对预测错的加大关注,即在后续新的模型中更关注与前面模型没法解决的问题,最后整合就是更好的模型。通常是用决策树来建模,创建多个顺序模型,是递进的,每一个模型都会对前一个模型的错误进行改进。
AdaBoost训练过程:
因为后一个模型总是在前一个模型的基础上完成的,所以这是一个顺序的结构
① 对于 训练每个弱学习模型 计算样本困难度
i. 对每个样本点初始化其困难度
ii. 训练后,通过结果更新样本困难度(预测正确的减小困难度,反之增加困难度)
iii. 基于上述的困难度,训练下一个学习模型
② 整合每个模型的结果
优点
① 是顺序的结构,解决了随机森林难于处理困难样本的问题
② 整合时,利用权重而不是简单粗暴的均值或者数目多的类别取胜
缺点
① 容易过拟合
② 速度慢