集成算法的目的是为了让ML效果更好,单个分类行不行就采用多个(换而言之,它是通过组合几种模型来提高机器学习的效果。与单一模型相比,该方法可以提供更好的预测结果),它是对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,以达到更好的效果。集成算法本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。集成学习应用在ML领域非常广泛:可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等。
集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。
1、Bagging模型
简单地说是并行训练一堆分类型。典型代表:随机森林。其中,随机指:数据采样随机和特征选择随机;森林指:很多个决策树并行放在一起。
根据他的公式就可以看出:它是通过训练多个分类器求平均。
随机森林:
随机森林算法具体的过程:
(1)从训练数据中选取n个数据作为训练数据输入,一般情况下n是远小于整体的训练数据N的,这样就会造成有一部分数据是无法被去到的,这部分数据称为袋外数据,可以使用袋外数据做误差估计。
(2)选取了输入的训练数据的之后,需要构建决策树,具体方法是每一个分裂结点从整体的特征集M中选取m个特征构建,一般情况下m远小于M。
(3)在构造每棵决策树的过程中,按照选取最小的基尼指数进行分裂节点的选取进行决策树的构建。决策树的其他结点都采取相同的分裂规则进行构建,直到该节点的所有训练样例都属于同一类或者达到树的最大深度。
(4) 重复第2步和第3步多次,每一次输入数据对应一颗决策树,这样就得到了随机森林,可以用来对预测数据进行决策。
(5) 输入的训练数据选择好了,多棵决策树也构建好了,对待预测数据进行预测,比如说输入一个待预测数据,然后多棵决策树同时进行决策,最后采用多数投票的方式进行类别的决策。
如图:
注明: 集成学习之结合策略有3中:平均法(对于数值类的回归预测问题,通常使用的结合策略是平均法,对于若干个弱学习器的输出进行平均得到最终的预测输出)、投票法(对于分类问题的预测,我们通常使用的是投票法,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别项为最终的分类类别)、学习法(代表方法是stacking,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。)
oad-images.jianshu.io/upload_images/13179649-aa5e32998ab6628e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2、Boosting模型
从弱学习器开始加强,通过加权来进行训练。Boosting 与 bagging 等方法的主要区别是基础学习器通过加权的数据进行顺序训练。他是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。典型代表:AdaBoot,Xgboost
公式:
其中:Adaboost是boosting中较为代表的算法,基本思想是通过训练数据的分布构造一个分类器,然后通过误差率求出这个若弱分类器的权重,通过更新训练数据的分布,迭代进行,直到达到迭代次数或者损失函数小于某一阈值。
Boosting来历及AdaBoot算法原理图及优缺点可以参考网页:
https://blog.csdn.net/li_dongxuan/article/details/55667795
3、Stacking模型
Stacking 是一种集成学习技术,通过元分类器或元回归聚合多个分类或回归模型。基础层次模型(level model)基于完整的训练集进行训练,然后元模型基于基础层次模型的输出进行训练。因为,它的基础层次通常由不同的学习算法组成,因此 stacking 集成通常是异构的。
参看资料:https://www.cnblogs.com/pinard/p/6131423.html
https://www.cnblogs.com/sddai/p/7647731.html