引言
一个人的力量是渺小的,但是一群人聚集到一起,就有了群体智慧。如在我们的城市的社会分工中,有的人是工程师,政客,有的人是建筑工人,有的人是教师,也有罪犯等等,每个人对这座城市都贡献着价值,整座城市也就井然有序,盎然向上,由于每个人对社会的作用不同,甚至有的为负贡献如罪犯等,如果有一个决策机关如政府的存在,就可以使数以百万人口的城市运作起来,而不是一盘散沙的存在。这种集聚群体智慧的思想,衍生出了一些优秀的算法,如bagging(减小方差),boosting(减小偏差)算法。
集成学习思想
集成学习算法的主要思想是利用弱分类器组合成为一个强分类器。通过一些既定的模型规则,如设置不同的弱分类器有不同的权重,同时在模型训练的过程中,逐步迭代优化,使组合成的强分类器在一个既定的评价指标下更优。
集成算法分类
序列集成方法(boosting)
序列集成方法(boosting),序列方法的原理是通过权重分配机制,比如AdaBoost通过修改数据集不同样本的权重与弱分类器对最终强分类器贡献的权重,做到弱分类器加权多数表决的效果,即增大错误率小的分类器的权重,减小错误率较大的分类器的权重的方法进行加权组合。而梯度提升树GBDT通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到新的模型,可以提高整体的预测效果。如下图所示:
并行集成方法(bagging)
并行集成方法(bagging),其中参与训练的基础学习器并行生成(例如 Random Forest)。并行方法的原理是利用基础学习器之间的独立性,通过平均或者投票等机制可以显著降低错误率。如下图所示:
集成学习算法特点
- 利用多个分类器,弱分类器可以是同一种集合的算法也可以是不同类型集合的算法,将其聚合起来,以提高准确率。所以在某种意义上,集成学习并不是一个学习算法,而是训练弱分类器的一种上层算法,并将各弱分类器利用既定规则集合起来的一种策略,一种决策思想。
集成学习无论是bagging还是boosting,都既可以做回归任务,也可以应用于分类任务。
- 针对于分类算法,原理其实很简单,就是每一个树训练出来的结果(叶子),我们选择数量最多的(多数服从少数原理),即可以做到集成的效果。
- 针对于回归算法,就是每一个树训练出来的结果(叶子),我们把他们的结果加和求平均,就得到一个平均值,那就达到了回归算法的效果。
各种强势集成算法登场
我们最常见的Bagging算法即随机森林RF算法。
我们常见的Boosting算法有AdaBoost,梯度提升树GBDT,Xgboost,以及微软亚洲研究院重磅开源的LightGBM。