机器学习——集成算法
(一)集成算法原理
集成算法:
构建多个学习器,然后通过一定策略结合把它们来完成学习任务的,常常可以获得比单一学习显著优越的学习器。
集成算法一般分为三类:Bagging,Boosting,Stacking(我们可以把它简单地看成并行,串行和树型)
1.1 Bagging模型
Bagging模型详解
Bagging的全称是bootstrap averaging,它把各个基模型的结果组织起来,具体实现也有很多种类型,以sklearn中提供的Bagging集成算法为例(下面代码中会用到部分算法):
- BaggingClassifier/BaggingRegressor是从原始数据集抽选S次(抽取实例,抽取属性),得到S个新数据集(有的值可能重复,有的值可能不出现)。使用同一模型,训练得到S个分类器,预测时使用投票结果最多的分类。
- RandomForestClassifier随机森林,它是对决策树的集成,用随机的方式建立一个决策树的森林。当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行判断,预测时使用投票结果最多的分类,也是少数服从多数的算法。
- VotingClassifier,可选择多个不同的基模型,分别进行预测,以投票方式决定最终结果。
Bagging中各个基算法之间没有依赖,可以并行计算,它的结果参考了各种情况,实现的是在欠拟合和过拟合之间取折中。
最典型的代表就是随机森林。
随机:数据采样随机,特征选择随机
森林:很多个决策树并行放在一起
随机森林优势:
- 它能够处理很高维度(feature很多)的数据,并且不用做特征选择。
- 在训练完后,它能够给出哪些feature比较重要。
- 容易做成并行化方法,速度比较快。
- 可以进行可视化展示,便于分析。
树模型:
理论上越多的树效果会越好,但实际上基本超过一定数量就差不多上下浮动了。
训练多个分类器取平均 f ( x ) = 1 / M ∑ m = 1 M f m ( x ) f(x)=1/M\sum_{m=1}^{M}f_{m}(x) f(x)=1/M∑m=1Mfm(x)
M表示建立树模型的个数。
1.2 Boosting模型
从弱学习器开始加强,通过加权来进行训练。
F m ( x ) = F m − 1 ( x ) + a r g m i n h ∑ i = 1 n L ( y i , F m − 1 ( x i + h ( x i ) ) F_{m}(x)=F_{m-1}(x)+argmin_{h}\sum_{i=1}^{n}L(y_{i},F_{m-1}(x_{i}+h(x_{i})) Fm(x)=Fm−1(x)+argmin