俗话说"三个臭皮匠顶个诸葛亮",集成学习正是基于这个思想来做的。
将很多个基学习器(可以是LR,决策树等任何算法模型)组合在一起来做决策就是集成学习了,如图:
按照各个基学习器的组合方式,集成学习又可分为Bagging和Boosting,比如说狼人杀中把每个人当成一个基学习器,一个接一个发言表决就叫Boosting,所有人一起表决那么就是Bagging了,这么说来玩狼人杀还是在训练集成模型了
Bagging
Bagging各个基学习器相互之间是独立的,最后通过平均法或者加权法得出最后的结果, 如图:
- 像Random Forest, 就是典型的Bagging算法, 它构建每个基学习器(决策树):
1.用N来表示训练用例(样本)的个数,M表示特征数目。
输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。
2.从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。
3.对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。
4.每棵树都会完整成长而不会剪枝(Pruning,这有可能在建完一棵正常树状分类器后会被采用)
Boosting
Boosting是先根据样本训练第一个基学习器,在这个学习器的基础上继续训练下一个基学习器,直到残差满足需求再进行组合输出, 如图:
像AdaBoost、GBDT、XGBoost都是属于Boosting算法
-
AdaBoost:
-
GBDT:
好了本期主要介绍了下集成学习,下期会详细说下GBDT,敬请期待
参考
- 周志华.<<机器学习>>
- https://www.cnblogs.com/pinard/p/6131423.html
个人公众号
网友评论