集成学习的目的是让机器学习算法的效果更好
集成学习主要有三种方式:
1.Bagging:训练多个分类器,并以取平均或者众数的方式去的最终结果
2.Boosting:从弱学习器开始加强,通过对分类错误的样本赋予更高的权重完成模型的强化
3.Stacking:以分阶段的模式聚和多个分类或回归模型
降方差(bagging)减偏差(boosting)提升预测准确性(stacking)
Bagging
Bagging方法最大的特点是并行训练一堆分类器
全称:boostrap aggregation
最典型的代表就是随机森林
并不是所有算法都适合继承,公认的基础模型就是数模型
随机森林原理
随机(随机森林算法最重要的特点):数据采样随机(这里的数据采样是从所有数据中有放回采样,注意每一棵决策树样本量是相同的)、特征选取随机(每一棵决策树选取的总特征数量也是相同的)(进行随机的目的是要保证模型的泛化能力)
森林:很多个决策树并行放在一起
随机森林优势:
1.可以处理高纬度数据,并且不用特征选取工程
2.训练完成后,它能够给出哪些feature比较重要
3.并行训练,速度比较快
4.可以进行可视化分析
feature重要性比较方式:
例如比较B属性的重要性:先以A、B、C、D四个特征构建模型并最终得出一个准确率,再以随机值替换B特征并以A、B’、C、D四个特征构建模型得出准确率。如果两次的准确率差异不大,则说明B特征重要性不强,如果两次准确性差异较大,则说明B特征比较重要。
理论上来说越多的树效果越好,但实际上超过一定数量准确率就在上下浮动了
Boosting
Boosting方法的最大特征是串行训练,从弱学习器开始一步步强化学习器
最典型代表:Adaboost、Xgboost
Adaboost原理
Adaboost方法会根据前一次分类的效果调整数权重,如果某一个数据在前一次分类错了,那么在下一次迭代时就会有更大的权重,最终每个分类器根据自身的准确性来确定各自的权重再合体
步骤:
1.先为每一个数据赋相同的权重,得出一个分类器
G
1
(
x
)
G_{1}(x)
G1(x)
2.得出该分类器的错误率
e
1
e_{1}
e1
3.利用
α
1
=
1
2
log
1
−
e
1
e
1
\alpha_{1}=\frac{1}{2} \log \frac{1-e_{1}}{e_{1}}
α1=21loge11−e1公式计算出该分类器在总分类器中的比重
4.利用
w
2
,
i
=
w
1
,
i
z
1
exp
(
−
α
1
y
i
G
1
(
x
i
)
)
,
i
=
1
,
2
,
…
,
10
w_{2, i}=\frac{w_{1, i}}{z_{1}} \exp \left(-\alpha_{1} y_{i} G_{1}\left(x_{i}\right)\right), i=1,2, \ldots, 10
w2,i=z1w1,iexp(−α1yiG1(xi)),i=1,2,…,10公式计算第二次迭代时各个样本权重
5.例如只强化学习三次,则最后的结果为
F
(
x
)
=
sign
(
F
3
(
x
)
)
=
sign
(
α
1
G
1
(
x
)
+
α
2
G
2
(
x
)
+
α
3
G
3
(
x
)
)
F(x)=\operatorname{sign}\left(F_{3}(x)\right)=\operatorname{sign}\left(\alpha_{1} G_{1}(x)+\alpha_{2} G_{2}(x)+\alpha_{3} G_{3}(x)\right)
F(x)=sign(F3(x))=sign(α1G1(x)+α2G2(x)+α3G3(x))
具体的公式推导是由Adaboost的损失函数(指数损失函数)求偏导得出
Stacking
Stacking方法是将很多算法堆叠在一起,可以用来对得的算法有KNN、SVM、RF等算法
Stacking算法会分阶段来完成堆叠工作
第一阶段由多个基学习器预测,得出多个预测结果,第二阶段将上一步的预测结果作为特征传入元模型,得出最终的结果